Настройка iptables в Linux

Иногда в брандмауэр сервера требуется внести правила. В случае ОС Linux это делается через iptables.

Для начала проверим установлены ли iptables, выполните команду под пользователем root
# cat /etc/sysconfig/iptables

Если файл существует то отобразится его содержимое.

В противном случае установим пакет командой
# yum install iptables iptables-services

Теперь просмотрим текущее состояние правил
# iptables -nvL --line-number

В результате отобразятся 3 блока: INPUT, FORWARD и OUTPUT
В эти блоки мы и будем в будущем добавлять нужные правила.


INPUT — тут записываются правила для входящих пакетов
FORWARD — тут правила для входящих пакетов, которые перенаправленных на выход
OUTPUT — тут записываются правила для исходящих пакетов

Также можем вывести на экран только отдельный блок, например выведем блок OUTPUT
# iptables -nvL OUTPUT --line-number

Как добавлять или удалять правила в iptables

Добавлять или удалять правила можно либо командами в консоли, либо открыв файл /etc/sysconfig/iptables и там вносить изменения через любой текстовый редактор.
При добавлении правил мы используем параметры -I или -A, разница между ними в том, что -A всегда вставляет новое правило в самый конец.
При использовании -I можно записать правило в определенное место по номеру.
Если использовать параметр -I без номера то правило помещается на первую строчку.
Это важно понимать, так как все правила выполняются строго по очереди, чем выше тем более важно.

Примеры правил и команд iptables

Запретить входящие соединения с айпишки 33.33.33.33 (правило окажется на 1 строчке в разделе INPUT)
# iptables -I INPUT -s 33.33.33.33 -j DROP

Запретить входящие соединения с айпишки 33.33.33.33 и поместить правило на 3 строку раздела INPUT)
# iptables -I INPUT 3 -s 33.33.33.33 -j DROP

Удалить десятое правило из раздела INPUT
# iptables -D INPUT 10

Разрешить ICMP Ping запросы
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Запретить ICMP Ping запросы
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Блокировка опреденного ip-адреса или подсети
# iptables -A INPUT -s 105.188.0.5 -j DROP
# iptables -A INPUT -s 105.188.0.0/24 -j DROP

Заблокируем исходящий трафик на 66.66.224.0/19
# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP

Заблокируем доступ к домену
# iptables -A OUTPUT -p tcp -d www.apple.com -j DROP
# iptables -A OUTPUT -p tcp -d apple.com -j DROP

Востановить правила по умолчанию
# iptables-restore < /etc/iptables.rules

Очистить все правила
# iptables -F

Сохранить файл, после выполнения всех команд
# iptables-save > /etc/sysconfig/iptables

Перезагрузить firewall для того чтобы изменения вступили в силу
# service iptables restart