Шпаргалка по iptables: полное руководство для настройки firewall в Linux

Для системных администраторов Linux настройка firewall с помощью iptables — важнейший аспект защиты серверов. В этой статье вы найдете подробные примеры команд, которые помогут быстро и эффективно управлять правилами сетевой фильтрации. Мы рассмотрим управление цепочками, удаление и сохранение правил, NAT, логирование и многое другое.
Проверка правил iptables
Для начала, чтобы увидеть текущие установленные правила firewall, используйте команду:
iptables -L
Чтобы получить подробный, числовой вывод:
iptables -L -v -n
А для отображения в читаемом и экспортируемом формате:
iptables -S
Сброс правил iptables
Иногда требуется полностью очистить конфигурацию. Сбросить все правила во всех цепочках можно так:
iptables -F
Или сбросить только одну цепочку:
iptables -F INPUT iptables -F OUTPUT
Установка политик по умолчанию
Задать основное поведение firewall можно через настройки политик по умолчанию:
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
Замените ACCEPT на DROP, если хотите по умолчанию блокировать все входящие или исходящие подключения.
Работа с цепочками в iptables
Создайте свою пользовательскую цепочку:
iptables -N custom-chain
Удалите ненужную цепочку:
iptables -X custom-chain
Добавьте правило для передачи управления:
iptables -A INPUT -j custom-chain
Разрешение и блокировка трафика с условиями
Чтобы разрешить трафик от определенного IP-адреса на нужный порт:
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
Для блокировки трафика по такому же принципу:
iptables -A INPUT -p tcp -s 192.168.1.200 --dport 80 -j DROP
Разрешение и блокировка трафика
Открыть входящий порт для всех:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Разрешить трафик от определенного IP:
iptables -A INPUT -s 10.0.0.1 -j ACCEPT
Блокировать входящий порт:
iptables -A INPUT -p tcp --dport 25 -j DROP
Блокировка по порту и IP:
iptables -A INPUT -p tcp -s 203.0.113.5 --dport 25 -j DROP
Разрешение диапазона портов:
iptables -A INPUT -p tcp --dport 8000:8080 -j ACCEPT
Удаление правил iptables
Удалить правило можно по его номеру:
iptables -D INPUT 3
Или по самому содержимому:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
Сохранение, восстановление и логирование правил
Чтобы сохранить текущие настройки:
iptables-save > /etc/iptables/rules.v4
Восстановить правила можно командой:
iptables-restore < /etc/iptables/rules.v4
Логирование отброшенных пакетов:
iptables -A INPUT -p tcp --dport 23 -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
NAT и перенаправление портов в iptables
Для включения NAT (маскарадинг):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Перенаправить порт на другой сервер (DNAT):
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.10:22
Локальное перенаправление портов:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080