Це підсистема для роботи з мережевими пакетами, яка пропускає через свій фільтр всі з'єднання на сервері. Давайте розглянемо налаштування IPTables більш детально.
Загальна інформація
IPTables вже за замовчуванням вбудована в основне ядро Linux, але інструменти для роботи з нею не входять в стандартний комплект по багатьох дистрибутивах, тому давайте використовувати команду для встановлення утиліти.
Debian / Ubuntu
[sudo] apt install iptables
Sudo призначена для використання в ОС Ubuntu. Для Debian використовується звичайна команда.
CentOS [Fedora]
sudo yum install iptables
Налаштування
Після встановлення утиліти перейдемо до її докладної настройки.
Аргументи
-A - Додати правило в розділ.
-С - Перевірити всі правила.
-D - Видалити правило.
-I - Вставити правило з необхідним номером.
-L - Вивести всі правила в поточному розділі.
-S - Вивести всі правила.
-F - Очистити всі правила.
-N - Створити розділ.
-X - Видалити розділ.
-P - Встановити дію за замовчуванням.
-p - Встановити протокол.
-s - Вказати адресу відправника.
-d - Вказати адресу отримувача.
-i - Вхідний мережевий інтерфейс.
-o - Вихідний мережевий інтерфейс.
-j - Виконати за відповідності правила.
INPUT - Відповідає за обробку вхідних пакетів та з'єднань.
FORWARD - Використовується для проходження з'єднань. Сюди потрапляють пакети, відправлені на ваш сервер, але не визначені як ціль доставки.
OUTPUT - Повністю протилежно першому. Використовується для вихідних пакетів та з'єднань.
ACCEPT - Пропустити пакет.
DROP - Видалити пакет.
REJECT - Відхилити пакет.
LOG - Створити лог-файл відповідного пакета.
QUEUE - Відправити пакет до додатку користувача.
Відкриття порту(-ів)
Спочатку перевіримо список наших правил:
iptables -L
Як бачимо, все порожньо. Спробуємо відкрити один TCP-порт 80 для вхідних з'єднань:
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
Перевіримо список ще раз... Відмінно! Порт 80 відкритий.
Тепер давайте спробуємо відкрити діапазон UDP-портів від 25565 до 25570 для вихідних з'єднань:
iptables -t filter -A OUTPUT -p udp --dport 25565:25570 -j ACCEPT
Перевіримо результат. Готово. Діапазон UDP-портів доступний.
Бажаєте закрити всі вхідні з'єднання для TCP 250? Не проблема.
iptables -t filter -A INPUT -p tcp --dport 250 -m state --state ESTABLISHED -j DROP
Готово!
Видалення правил
Тепер спробуємо видалити правило, яке дозволяє вхідні з'єднання для TCP 80:
iptables -t filter -D INPUT -p tcp --dport 80 -j ACCEPT
Правило видалено.
Видалення всіх правил
Для цього використовуйте команду:
iptables -F
Всі правила успішно очищено!
Збереження створених правил
За замовчуванням всі створені правила застосовуються до наступного перезавантаження і будуть видалені під час його виконання. Щоб уникнути цього, давайте збережемо створені нами правила IPTables. Для цього використовуйте відповідну команду:
iptables-save
Ось і все. Правила збережено і залишаться активними навіть після перезавантаження нашого сервера.