MAATRIX / Блог / iptables: базовый фаервол с нуля

iptables: базовый фаервол с нуля

Блог MAATRIX · 2026-07-07

iptables — классический межсетевой экран Linux. Понять его логику стоит даже если вы пользуетесь ufw: под капотом работает именно он.

Как устроен iptables

['Трафик проходит через таблицы и цепочки правил. Для базовой защиты сервера нам нужна таблица filter и три цепочки: INPUT (входящий трафик), OUTPUT (исходящий) и FORWARD (транзитный, для маршрутизации). Каждое правило описывает условие (порт, протокол, состояние соединения) и действие: ACCEPT (пропустить), DROP (молча отбросить) или REJECT (отклонить с ответом).', 'Правила проверяются сверху вниз до первого совпадения. Поэтому порядок критичен: сначала разрешаем нужное, в самом конце ставим политику «запретить всё остальное». Если политику DROP выставить раньше, чем правило для SSH, вы мгновенно отрежете себе доступ. На VPS MAATRIX с полным root-доступом вы управляете правилами напрямую, а консоль в панели остаётся запасным входом на случай ошибки.', 'Стоит понимать понятие состояния соединения (conntrack). Соединение бывает NEW (новое), ESTABLISHED (установленное) и RELATED (связанное). Разрешив ESTABLISHED и RELATED, вы автоматически пропускаете ответы на исходящие запросы, не открывая лишних портов.']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для своих проектов

Проверка текущих правил

['Сначала посмотрите, что уже настроено. Пустой набор с политикой ACCEPT означает, что фаервол фактически выключен и сервер принимает всё подряд.', '
iptables -L -n -v --line-numbers
', 'Флаг -n отключает медленное разрешение имён, -v добавляет счётчики пакетов, а --line-numbers нумерует правила — удобно, чтобы удалять конкретные строки командой iptables -D INPUT НОМЕР.']

Базовый набор правил

['Соберём минимальную рабочую конфигурацию: разрешаем localhost, уже установленные соединения, SSH, HTTP/HTTPS и ICMP, всё остальное отбрасываем.', '
iptables -A INPUT -i lo -j ACCEPT\niptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\niptables -A INPUT -p tcp --dport 22 -j ACCEPT\niptables -A INPUT -p tcp --dport 80 -j ACCEPT\niptables -A INPUT -p tcp --dport 443 -j ACCEPT\niptables -A INPUT -p icmp -j ACCEPT
', 'Теперь устанавливаем политики по умолчанию. Важно: правило для SSH (порт 22) должно быть добавлено ДО смены политики INPUT на DROP, иначе текущее подключение оборвётся.', '
iptables -P INPUT DROP\niptables -P FORWARD DROP\niptables -P OUTPUT ACCEPT
', 'Разрешение loopback (lo) обязательно: многие локальные сервисы общаются через 127.0.0.1, и без этого правила они сломаются. ICMP лучше не запрещать полностью — он нужен для ping-диагностики и корректного определения MTU.']

Защита от простого флуда

['iptables умеет ограничивать частоту новых соединений — это отсекает примитивный перебор и медленный флуд на SSH прямо на уровне ядра, ещё до fail2ban.', '
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \\\n  -m recent --set --name SSH\niptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \\\n  -m recent --update --seconds 60 --hitcount 5 --name SSH -j DROP
', 'Эти два правила банят IP, открывший больше 5 новых SSH-соединений за 60 секунд. Модуль recent ведёт список адресов в памяти ядра, поэтому реакция мгновенная и не требует внешних демонов.']

Сохранение правил

['По умолчанию правила живут только до перезагрузки — при рестарте сервера всё обнулится. Чтобы сохранить их, поставьте iptables-persistent.', '
apt install iptables-persistent -y\nnetfilter-persistent save
', 'После любых правок повторяйте netfilter-persistent save, иначе изменения потеряются при следующем ребуте. Сохранённые правила лежат в /etc/iptables/rules.v4 — их можно редактировать текстом и применять командой iptables-restore.']

Частые ошибки

['
  • Сменить политику INPUT на DROP до правила для SSH — мгновенная потеря доступа к серверу.
  • Забыть про conntrack ESTABLISHED — тогда ответы на ваши исходящие запросы (apt, curl) будут блокироваться.
  • Не сохранить правила и удивляться, что после перезагрузки фаервол пуст.
  • Блокировать ICMP полностью — ломает диагностику и определение MTU.
  • Забыть разрешить loopback и получить сбои локальных сервисов.
', 'Если правила запутались, панель MAATRIX даёт доступ к консоли — можно сбросить фаервол командой iptables -F и вернуть политику ACCEPT даже без работающего SSH. Освоив iptables вручную, вы будете лучше понимать и ufw, и nftables, которые лишь надстройки над этим механизмом.']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для своих проектов

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

iptables или nftables?

nftables — современная замена, в новых дистрибутивах команда iptables часто уже транслируется в nftables. Синтаксис из статьи работает и там через слой совместимости iptables-nft.

Чем ufw отличается от iptables?

ufw — удобная обёртка над iptables/nftables с простыми командами. Для типовых задач достаточно ufw; ручной iptables нужен для тонких правил и понимания механики.

Как быстро сбросить все правила?

Команды iptables -F (очистить цепочки) и iptables -P INPUT ACCEPT вернут открытый доступ. Делайте это только с консоли панели, если потеряли SSH.