iptables

iptables — это встроенный в ядро Linux инструмент для настройки правил фильтрации сетевого трафика. Он работает с подсистемой netfilter и позволяет управлять входящими, исходящими и пересылаемыми пакетами. Используется для настройки файрволов, NAT и других сетевых правил. Это низкоуровневый инструмент, и ошибки могут привести к потере доступа к системе.

Синтаксис:
iptables [ДЕЙСТВИЕ С ПРАВИЛОМ] [ЦЕПОЧКА] [УСЛОВИЯ] [ДЕЙСТВИЕ С ПАКЕТОМ]

Действие с правилом

ЭлементНазначение
-A [цепочка]добавить правило в конец цепочки
-I [цепочка] [N]вставить правило в позицию N (или в начало)
-D [цепочка] [N]удалить правило по номеру
-R [цепочка] [N]заменить правило в позиции N
-L [цепочка]показать текущие правила
-F [цепочка]очистить цепочку

Цепочки

INPUT — входящие пакеты
OUTPUT — исходящие
FORWARD — пересылаемые

Условия

-p [протокол]Протокол: tcp, udp, icmp
–dport [порт]Порт назначения
–sport [порт]Порт источника
-s [IP/подсеть]Источник IP или подсеть
-d [IP/подсеть]Назначение IP
-i [интерфейс]Входящий интерфейс
-o [интерфейс]Исходящий интерфейс
-m state –state …Фильтрация по состоянию соединения

Действие с пакетом

-j ACCEPT — разрешить
-j DROP — отбросить
-j REJECT — отклонить с ответом
-j LOG — залогировать
-j RETURN — выйти из цепочки

Примеры

Разрешить SSH (порт 22) из любого источника:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Разрешить HTTP только с интерфейса eth0:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

Разрешить входящие пакеты, относящиеся к уже установленным соединениям:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Удалить конкретное правило (повторить его полностью):
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Удалить правило по номеру (сначала посмотреть список):
iptables -L INPUT --line-numbers
iptables -D INPUT 3


Заменить правило №2 в цепочке INPUT на разрешение HTTPS:
iptables -R INPUT 2 -p tcp --dport 443 -j ACCEPT


Разрешить ICMP (ping) только через интерфейс eth1:
iptables -A INPUT -i eth1 -p icmp -j ACCEPT

Запретить весь входящий трафик на eth1:
iptables -A INPUT -i eth1 -j DROP

Прокрутить вверх