iptables: что это, синтаксис и базовые правила | Глоссарий FREEHOSTING

iptables

iptables Firewall
iptables — iptables — утилита Linux для управления пакетным фильтром netfilter. Настраивает правила в цепочках INPUT, OUTPUT, FORWARD, NAT и mangle. Работает на L3-L4: фильтрация по IP, портам, протоколам, состоянию соединения. Постепенно вытесняется nftables.

Определение простыми словами

iptables — это интерфейс командной строки к встроенному в ядро Linux фильтру netfilter. С его помощью администратор описывает, какой сетевой трафик разрешён, какой запрещён, что нужно перенаправить или преобразовать (NAT). По сути это «движок» большинства Linux-фаерволов, в том числе ufw, firewalld и docker-bridge.

Правила собираются в цепочки: INPUT (входящий трафик к самому хосту), OUTPUT (исходящий), FORWARD (проходящий насквозь), плюс PREROUTING и POSTROUTING для NAT. Цепочки — внутри таблиц filter, nat, mangle, raw.

Сравнение

Инструмент Уровень Сложность Когда использовать
iptables Низкий Высокая Тонкая настройка, скрипты, legacy
nftables Низкий Средняя Современная замена iptables
ufw Высокий Низкая Базовая защита одного сервера
firewalld Высокий Средняя RHEL/CentOS-семейство

Кейсы использования

  • Закрытие всех портов кроме SSH, HTTP, HTTPS на VPS.
  • NAT и port-forwarding на домашнем роутере или шлюзе офиса.
  • Ограничение скорости входящих SYN-пакетов для защиты от SYN-флуда.
  • Изоляция docker-сетей и проброс портов контейнеров.
  • Маркировка трафика для последующего QoS через tc.

Когда iptables неуместен: для прикладной фильтрации HTTP-запросов — нужен WAF. Для управления десятками тысяч правил эффективнее ipset или nftables. Для одноразовой защиты сервера от брутфорса быстрее поднять fail2ban или ufw.

Технические детали

Базовый набор правил для VPS — закрыть всё, кроме нужного, и сохранить:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

sudo apt install iptables-persistent
sudo netfilter-persistent save

Просмотр действующих правил, статистики и удаление:

sudo iptables -L -n -v --line-numbers
sudo iptables -t nat -L -n -v
sudo iptables -D INPUT 5
sudo iptables -F

Для NAT часто используется такая запись:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 10.0.0.5:80

В современных дистрибутивах команды iptables под капотом часто транслируются в nftables через iptables-nft. Подробнее о принципах фильтрации — в статье Firewall.

Частые вопросы

iptables ещё актуален или нужно сразу учить nftables?

Актуален. Команды iptables работают на большинстве серверов, скрипты и документация массово на iptables. nftables учить полезно — он официальный преемник, но переход обычно постепенный.

Как сохранить правила между перезагрузками?

Установить пакет iptables-persistent (Debian/Ubuntu) или iptables-services (CentOS). Команды netfilter-persistent save и netfilter-persistent reload закрепят конфигурацию.

Можно ли использовать iptables и ufw одновременно?

Технически — да, ufw это обёртка над iptables. На практике лучше выбрать что-то одно: смешение приводит к конфликтам и трудно отлаживается.

Чем INPUT отличается от FORWARD?

INPUT — пакеты, адресованные самому серверу. FORWARD — пакеты, проходящие через сервер транзитом (актуально для роутеров и шлюзов). OUTPUT — исходящие от сервера наружу.