В Попереднє повідомлення Ми бачили, як конфігурація IPTables працює як брандмауер. Тепер ми можемо побачити, як створити ці сценарії, щоб правила виконувались автоматично при запуску системи, а також як ми можемо на мить усунути або зупинити ці правила.
Перш ніж виконати сценарій і показати вам, як він виглядає, давайте трохи поговоримо про NAT та концепцію того, що ми хочемо робити з цим обладнанням.
NAT та контекст прикладу.
Коли ми говоримо про NAT, ми можемо сплутати це з маршрутизацією, оскільки обидві відповідають за підключення двох різних мереж між собою. Справжня різниця полягає в тому, що маршрутизація застосовується для переходу від однієї локальної мережі до іншої, і ця інша мережа може підключатися до маршрутизатора і виходити в Інтернет.
Тоді як, говорячи про NAT, ми говоримо про маршрутизацію пакетів з локальної або приватної мережі у загальнодоступну мережу або Інтернет. Це робиться шляхом маскування пакетів шляхом розміщення загальнодоступного IP, з яким він надходить в Інтернет. Іншими словами, нам не потрібен маршрутизатор, оскільки загальнодоступний IP безпосередньо належить комп’ютеру GNU / Linux.
Ми будемо працювати над цим слоганом, що використовуємо наш Linux як маршрутизатор / брандмауер для виходу в Інтернет з локальної мережі. Але тут можуть з’явитися два сценарії.
- Що наш Linux знаходиться між маршрутизатором постачальника послуг та локальною мережею.
У цьому випадку між маршрутизатором і нашим Linux існувала б мережа, а між Linux і локальною мережею була б інша інша мережа. Це означає, що нашому маршрутизатору не доведеться робити NAT як такий, з простою маршрутизацією трафіку, як пояснено в Попереднє повідомлення Було б добре.
- Що наш Linux має інтерфейс, підключений до локальної мережі, і через інший інтерфейс він отримує безпосередньо загальнодоступний IP, з яким він здійснює навігацію.
Це означає, що наш Linux повинен робити NAT, щоб пакети могли надходити в Інтернет.
Тоді для цілей цієї невеликої лабораторії ми скажемо, що наш Linux отримує загальнодоступний IP безпосередньо і, отже, зможе перевірити ефекти NAT.
Для виконання NAT ми тоді використовуємо синтаксис
iptables -t nat -A ПОРОБУВАННЯ -O eth1 -j MASQUERADE
Де eth1 - це інтерфейс, де ми отримуємо загальнодоступний 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
Пояснення:
В основному сценарій робить наступне:
- Спочатку обмежте всю навігацію, сполучення та рух. (Основні правила щодо брандмауера)
- Потім створіть NAT з цільовим eth1. вказуючи на те, що у нас є статичний загальнодоступний ip «81.2.3.4»
- Він відкриває порти, необхідні для прийому ініційованих мною пакетів з'єднань.
- Приймає вихідний HTTP, HTTPS та DNS-трафік.
Якщо ми хочемо використовувати наше обладнання для навігації, нам слід повторити рядки та змінити ВПЕРЕД на ВХІД або ВИХІД відповідно.
Скасувати сценарій.
Зараз ми збираємося створити сценарій, який замінює все вищезазначене і залишає комп’ютер чистим від усього цього. (Для цілей тестування або ми просто хочемо вимкнути брандмауер).
#! / 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.
Якщо ви використовуєте Debian, у репозиторії є пакет (iptables-persistent), який робить саме це, він скидає поточні правила в /etc/iptables/rules.v4 або v6 залежно від того, що ви використовуєте, а потім застосовує їх до вас, коли ви піднімаєте систему.
На практиці для очищення конфігурації звичайного брандмауера iptables (а використання NAT не було б таким з моєї точки зору), в більшості випадків було б достатньо змити правила та скинути політики за замовчуванням до ACCEPT.
Але теоретично, і наскільки я знаю, на додаток до цього вам також потрібно очистити рядки, що не за замовчуванням, і скинути лічильники. Дії, які слід виконувати, маючи на увазі, що крім "фільтрувати" є й інші таблиці, (для цього обов'язково прочитати файл "/ proc / net / ip_tables_names").
До речі, православ'я каже, що брандмауер вже повинен бути готовий до того, як мережа буде. Я не знаю, як це досягається в інших системах Linux, але на системах Debian сценарій можна адаптувати та встановити в каталозі "/etc/network/if-pre-up.d/".
Хороший брандмауер для всіх. 😉
Привіт, пост дуже хороший. Я прочитав цілі 2 томи.
Чекаємо наступного 🙂
Питання з мого незнання, ми продовжуємо з iptables, але для кількох версій ядра у нас є nftables, я вже тестую, питання в тому, чи є nftables чимось бета-версією щодо iptables? Чи буде iptables використовуватись набагато довше?
Спасибо.
nftables включає всі функціональні можливості iptables, ip6tables, arptables та ebtables, усі вони використовують нову інфраструктуру як у просторі ядер, так і в просторі користувачів, що забезпечує кращу продуктивність та покращену функціональність. nftables замінить iptables та всі інші згадані інструменти, але поки що, хоча б до тих пір, поки не буде більш широко застосовуватися nftables як такий.
дуже хороший пост, я хотів прочитати більше, оскільки це дуже добре пояснено .. привітання дякую великий внесок
Привіт! Дуже добре обидва повідомлення.
Як внесок ви можете додати до кінця в цій частині:
"Тепер ми збираємося відредагувати файл /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/ брандмауер
щоб повністю його відключити.
Привіт!