Межсетевые экраны: iptables и nftables
Урок про основу фильтрации трафика: что такое правила firewall и как строить безопасную политику.
Межсетевой экран (firewall) — компонент, который пропускает или отбрасывает пакеты по заданным правилам, разделяя зоны доверия.
Зачем нужен firewall
Firewall — это граница доверия. Он реализует принцип «по умолчанию запрещено»: разрешает только нужный трафик и отбрасывает остальное. Без него любой открытый порт виден всему интернету.
Модель цепочек
В Linux трафик проходит через цепочки: входящий (INPUT), исходящий (OUTPUT) и транзитный (FORWARD). К каждой цепочке привязаны правила, которые проверяются по порядку.
пакет --> [ INPUT ] --> правило 1? -> правило 2? ... -> политика по умолчанию
Пример безопасной политики (iptables)
# по умолчанию запрещаем входящие
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# разрешаем уже установленные соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешаем localhost
iptables -A INPUT -i lo -j ACCEPT
# SSH только из доверенной подсети
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
# HTTPS наружу
iptables -A INPUT -p tcp --dport 443 -j ACCEPTТо же на nftables
nftables — современная замена iptables с единым синтаксисом.
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input tcp dport 443 acceptКак работает под капотом
Ядро прогоняет каждый пакет через правила цепочки сверху вниз. Первое совпавшее правило решает судьбу пакета (ACCEPT/DROP). Если ни одно не совпало — применяется политика по умолчанию. Поэтому порядок правил важен, а финальная политика DROP делает забытый сервис закрытым, а не открытым.
Частые ошибки
- Политика по умолчанию
ACCEPT— любой новый порт сразу торчит наружу. - Забыть правило для ESTABLISHED — оборвутся ответы на собственные исходящие соединения.
- Слишком широкие источники (
0.0.0.0/0) там, где достаточно одной подсети. - Не сохранять правила — после перезагрузки firewall обнуляется.
Итоги
- Firewall — граница доверия с политикой «по умолчанию запрещено».
- Правила проверяются по порядку; первое совпадение решает.
- nftables — современная замена iptables с тем же подходом.