Захист мережі за допомогою Iptables - Proxy - NAT - IDS: ЧАСТИНА 2

В Попереднє повідомлення Ми бачили, як конфігурація IPTables працює як брандмауер. Тепер ми можемо побачити, як створити ці сценарії, щоб правила виконувались автоматично при запуску системи, а також як ми можемо на мить усунути або зупинити ці правила.

Перш ніж виконати сценарій і показати вам, як він виглядає, давайте трохи поговоримо про NAT та концепцію того, що ми хочемо робити з цим обладнанням.

NAT та контекст прикладу.

Коли ми говоримо про NAT, ми можемо сплутати це з маршрутизацією, оскільки обидві відповідають за підключення двох різних мереж між собою. Справжня різниця полягає в тому, що маршрутизація застосовується для переходу від однієї локальної мережі до іншої, і ця інша мережа може підключатися до маршрутизатора і виходити в Інтернет.

Тоді як, говорячи про NAT, ми говоримо про маршрутизацію пакетів з локальної або приватної мережі у загальнодоступну мережу або Інтернет. Це робиться шляхом маскування пакетів шляхом розміщення загальнодоступного IP, з яким він надходить в Інтернет. Іншими словами, нам не потрібен маршрутизатор, оскільки загальнодоступний IP безпосередньо належить комп’ютеру GNU / Linux.

nat

Ми будемо працювати над цим слоганом, що використовуємо наш Linux як маршрутизатор / брандмауер для виходу в Інтернет з локальної мережі. Але тут можуть з’явитися два сценарії.

  • Що наш Linux знаходиться між маршрутизатором постачальника послуг та локальною мережею.

У цьому випадку між маршрутизатором і нашим Linux існувала б мережа, а між Linux і локальною мережею була б інша інша мережа. Це означає, що нашому маршрутизатору не доведеться робити NAT як такий, з простою маршрутизацією трафіку, як пояснено в Попереднє повідомлення Було б добре.

  • Що наш Linux має інтерфейс, підключений до локальної мережі, і через інший інтерфейс він отримує безпосередньо загальнодоступний IP, з яким він здійснює навігацію.

Це означає, що наш Linux повинен робити NAT, щоб пакети могли надходити в Інтернет.

Тоді для цілей цієї невеликої лабораторії ми скажемо, що наш Linux отримує загальнодоступний IP безпосередньо і, отже, зможе перевірити ефекти NAT.

Для виконання NAT ми тоді використовуємо синтаксис

 iptables -t nat -A ПОРОБУВАННЯ -O eth1 -j MASQUERADE

Де eth1 - це інтерфейс, де ми отримуємо загальнодоступний ip, тобто де ми переходимо до Інтернету.

MASQUERADE використовується, коли ip є загальнодоступним, але він може змінюватися з часом (динамічний). В іншому випадку ми можемо використовувати SNAT –до джерела ip

Створення iptables сценарію

Припустимо, що: 172.26.0.0 - це наша локальна мережа, а 81.2.3.4 - загальнодоступний IP, з яким ми переходимо в Інтернет. (це статичний ip). У мене є інтерфейси eth0 (Локальна мережа)

eth1 (Громадська мережа).

В основному він складається зі створення скрипта, який можна викликати з /etc/init.d/firestop (наприклад). і з цього сценарію ми можемо запустити, зупинити або перевірити стан нашої конфігурації, як це робиться з будь-яким системним демоном.

Припустимо, мої правила IPTABLES Є:

#! / bin / bash # Брандмауер мого будинку. # Назва файлу / etc / firewall_on # Автор: Jlcmux Twitter: @Jlcmux # # Основна політика. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT для спільного користування Інтернетом від eth0 до eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --до джерела 81.2.3.4
# # Дозволити вхідні з'єднання, ініційовані моїми iptables -A FORWARD -m state --state ВСТАНОВЛЕНО, ПОВ'ЯЗАНО -j ПРИЙНЯТИ # # Авторизовані iptables вихідного трафіку -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
Не забуваймо дати дозволи на виконання

Пояснення:

В основному сценарій робить наступне:

  1. Спочатку обмежте всю навігацію, сполучення та рух. (Основні правила щодо брандмауера)
  2. Потім створіть NAT з цільовим eth1. вказуючи на те, що у нас є статичний загальнодоступний ip «81.2.3.4»
  3. Він відкриває порти, необхідні для прийому ініційованих мною пакетів з'єднань.
  4. Приймає вихідний HTTP, HTTPS та DNS-трафік.
Правила призначені для ВПЕРЕДНОГО трафіку, оскільки ми використовуємо наш Linux як маршрутизатор, тому політики використовуються для трафіку, який ПРОХОДИТЬ через Linux, тобто він виступає посередником. Це означає, що наш Linux не може реально орієнтуватися або отримувати будь-які дані безпосередньо. Це стосується лише підключених до нього комп’ютерів, але не стосується самого себе

Якщо ми хочемо використовувати наше обладнання для навігації, нам слід повторити рядки та змінити ВПЕРЕД на ВХІД або ВИХІД відповідно.

Скасувати сценарій.

Зараз ми збираємося створити сценарій, який замінює все вищезазначене і залишає комп’ютер чистим від усього цього. (Для цілей тестування або ми просто хочемо вимкнути брандмауер).

#! / bin / bash # Брандмауер мого будинку. # Назва файлу / etc / firewall_off # За допомогою Jlcmux Twitter: @Jlcmux # # Видалення правил iptables -F # # Застосування політик за замовчуванням (приймається весь трафік) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT

Автоматизація.

Тепер ми повинні створити сценарій всередині /etc/init.d/ і послуга запускається автоматично, і ми можемо керувати нею більш комфортно.

#! / bin / bash # Брандмауер мого будинку. # Назва файлу /etc/init.d/ брандмауер # Автор Jlcmux Twitter: @Jlcmux справа $ 1 на початку) / etc / firewall_on ;; зупинка) / etc / firewall_off ;; статус) iptables -L ;; *) echo "Неправильний синтаксис. Дійсний = /etc/init.d/ start firewall | stop | status ;; esac

Пояснення:

Цей останній сценарій, який ми вклали /etc/init.d/ з назвою брандмауер. Отже, якщо ми хочемо керувати брандмауером, ми можемо скористатися командою /etc/init.d/ запуск брандмауера. Таким же чином ми можемо зупинити це або побачити стан.

Зараз ми збираємося редагувати файл /etc/rc.local і ми ставимо щось на зразок: /etc/init.d/ start firewall для початку з системи.

Також. Це друга частина. Сподіваюся, це щось принесе усім вам. У наступному ми бачимо Proxy та IDS.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   dhunter - сказав він

    Якщо ви використовуєте Debian, у репозиторії є пакет (iptables-persistent), який робить саме це, він скидає поточні правила в /etc/iptables/rules.v4 або v6 залежно від того, що ви використовуєте, а потім застосовує їх до вас, коли ви піднімаєте систему.

  2.   OCZ - сказав він

    На практиці для очищення конфігурації звичайного брандмауера iptables (а використання NAT не було б таким з моєї точки зору), в більшості випадків було б достатньо змити правила та скинути політики за замовчуванням до ACCEPT.
    Але теоретично, і наскільки я знаю, на додаток до цього вам також потрібно очистити рядки, що не за замовчуванням, і скинути лічильники. Дії, які слід виконувати, маючи на увазі, що крім "фільтрувати" є й інші таблиці, (для цього обов'язково прочитати файл "/ proc / net / ip_tables_names").

    До речі, православ'я каже, що брандмауер вже повинен бути готовий до того, як мережа буде. Я не знаю, як це досягається в інших системах Linux, але на системах Debian сценарій можна адаптувати та встановити в каталозі "/etc/network/if-pre-up.d/".

    Хороший брандмауер для всіх. 😉

  3.   НауТілуС - сказав він

    Привіт, пост дуже хороший. Я прочитав цілі 2 томи.

    Чекаємо наступного 🙂

  4.   Anonimo - сказав він

    Питання з мого незнання, ми продовжуємо з iptables, але для кількох версій ядра у нас є nftables, я вже тестую, питання в тому, чи є nftables чимось бета-версією щодо iptables? Чи буде iptables використовуватись набагато довше?

    Спасибо.

    1.    Юкітеру - сказав він

      nftables включає всі функціональні можливості iptables, ip6tables, arptables та ebtables, усі вони використовують нову інфраструктуру як у просторі ядер, так і в просторі користувачів, що забезпечує кращу продуктивність та покращену функціональність. nftables замінить iptables та всі інші згадані інструменти, але поки що, хоча б до тих пір, поки не буде більш широко застосовуватися nftables як такий.

  5.   Олександр - сказав він

    дуже хороший пост, я хотів прочитати більше, оскільки це дуже добре пояснено .. привітання дякую великий внесок

  6.   Аврах - сказав він

    Привіт! Дуже добре обидва повідомлення.
    Як внесок ви можете додати до кінця в цій частині:

    "Тепер ми збираємося відредагувати файл /etc/rc.local і розмістити щось на зразок: /etc/init.d/firestop start, щоб він запустився у системі."

    Додайте це до rc.local.

    якщо [-x /etc/init.d/ брандмауер]; тоді
    /etc/init.d/ start firewall
    fi

    Це означає, що якщо "брандмауер" має дозволи на виконання, виконайте його, якщо ні.
    Якщо ви хочете, щоб "брандмауер" не запускався, вам просто потрібно видалити дозволи.

    Наприклад: chmod + x /etc/init.d/ брандмауер
    щоб він запускався під час кожного запуску або ...
    chmod -x /etc/init.d/ брандмауер
    щоб повністю його відключити.

    Привіт!