iptables и Netfilter
Коротко: Netfilter — каркас фильтрации пакетов в ядре Linux, iptables — классический инструмент для написания для него правил.
Подробнее: Каждый пакет проходит через хуки в ядре. Правила в таблицах и цепочках решают, принять ли его, отбросить или переписать. Преемник называется nftables.
Подробности
- Таблицы:
filter(разрешить/запретить),nat(переписать адреса),mangle(изменять пакеты). - Цепочки:
INPUT(на эту машину),OUTPUT(с неё),FORWARD(транзитные), а такжеPREROUTINGиPOSTROUTING. - Правило: Условие плюс цель, например
-p tcp --dport 22 -j ACCEPT. Побеждает первое подходящее правило, иначе действует политика цепочки по умолчанию. - Отслеживание соединений:
-m conntrack --ctstate ESTABLISHED,RELATEDразрешает ответы на собственные соединения. - Применение: Домашние маршрутизаторы, межсетевые экраны серверов, Docker (создаёт собственные правила), проброс портов.
- Сегодня: Новые системы используют nftables или оболочки вроде ufw и firewalld. См. NAT.
См. также: fail2ban