Iptables ubuntu server, for skill

Iptables ubuntu server, for skill

Для початку визначимося з термінологією:

iptables - утиліта командного рядка, інтерфейс управління брандмауером.
Правило - складається з критерію, дії і лічильника.
Ланцюжок - упорядкована послідовність правил.
Таблиця - сукупність базових і призначених для користувача ланцюжків.


Більш докладний висновок

Робота з правилами

* Номер правила можна подивитися в докладному виведенні

Очистити таблицю від правил

Поміняти стан політики

Включення пересилання пакетів між мережевими інтерфейсами

Для цього потрібно раскоментіровать відповідні рядки в файлі /etc/sysctl.conf

І застосувати зміни командою

Маємо сервер з Ubuntu server 16.04.01 і двома мережевими інтерфейсами:

ens32 IP 192.168.1.51/24 - дивиться в зовнішню мережу.
ens33 IP 192.168.100.2/24 - дивиться у внутрішню мережу.

У внутрішній мережі є клієнтська машина з Windows 10, що має один мережевий інтерфейс з IP 192.168.100.11/24

За замовчуванням у всіх ланцюжках використовується роздільна політика.

Змінимо політику на забороняє для ланцюжків INPUT і FORWARD

Таким чином ми заборонили будь-які вхідні з'єднання до маршрутизатора (INPUT DROP), а також вхідні і витікаючі з'єднання для внутрішньої мережі (FORWARD DROP) у зовнішнє.

Важливо! Утиліта iptables використовується для роботи з протоколом IPv4. Для роботи з протоколом IPv6 потрібно використовувати утиліту ip6tables. Так як в мережі не планується використання протоколу IPv6, заборонимо по ньому будь-які сполуки

Дозволимо будь-який вхідний трафік на петлевом інтерфейсі

Правила для зовнішньої мережі

Коли маршрутизатор посилає будь-якої пакет із запитом на з'єднання з зовнішнього інтерфейсу, спрацьовує роздільна політика ланцюжка OUTPUT, пакет благополучно проходить. Потім хост, з яким ініціюється з'єднання, посилає у відповідь пакет, який потрапляє під дію забороняє політики в ланцюжку INPUT. З'єднання не проходить. Для того щоб з'єднання проходили робимо наступне:

Дозволимо підтримку встановлених раніше з'єднань

Дозволимо перевірку зв'язку (ping) на зовнішньому інтерфейсі

Правила для внутрішньої мережі

Додамо правило NAT, для маскування пакетів йдуть з внутрішньої мережі в зовнішню

Або так для динамічного IP на зовнішньому інтерфейсі

Дозволимо підтримку встановлених раніше з'єднань

Дозволимо перевірку зв'язку (ping) з внутрішньо мережі в зовнішню

Дозволимо dns запити до сервера з IP 192.168.1.1

Дозволимо web трафік з внутрішньо мережі в зовнішню

Публікація внутрішніх ресурсів в зовнішню мережу

Опублікуємо на зовнішньому інтерфейсі порт 33899, на внутрішній ресурс з IP 192.168.100.11 порт 3389

Опублікуємо на зовнішньому інтерфейсі порт 8080, на локальний web сервер, що працює на маршрутизаторі, на внутрішньому інтерфейсі з IP 192.168.100.2 порт 80. Також цей веб сервер повинен бути доступний хостам з внутрішньо мережі по порту 80.

Збереження правил в файл

Все вище зазначені правила зберігаються в ОЗУ і працюють до перезавантаження. Для збереження правил в файл використовується утиліта iptables-save.

Активація правил при завантаженні

Для відновлення правил з файлу використовується утиліта iptables-restore.

Додаємо скрипт /etc/network/if-pre-up.d/iptables

Додаємо можливість виконання

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

Поділитися посиланням: