iptables: базовый фаервол с нуля
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 и получить сбои локальных сервисов.
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.