Опубликовано 2026-09-08
Файрвол в Linux: iptables vs nftables vs ufw
iptables, nftables и ufw — это три уровня одного и того же стека файрвола Linux, а не три конкурирующих продукта. nftables — это современный фреймворк фильтрации пакетов на уровне ядра, который с 2022 года заменил iptables в качестве стандарта во всех основных дистрибутивах; iptables теперь работает как слой совместимости поверх него, а ufw — упрощённый интерфейс командной строки, который может управлять любым из этих движков. Для большинства небольших VPS ufw с политикой default-deny — самый быстрый и безопасный выбор, а прямая работа с правилами nftables оставлена для более сложных задач.
В этом руководстве
Что на самом деле делают iptables, nftables и ufw? iptables: изначальный файрвол Linux nftables: современная замена ufw: простой интерфейс Что выбрать? Как настроить базовый файрвол на nftables Как настроить ufw за 10 минут Частые ошибки в настройке файрвола, из-за которых серверы остаются уязвимыми Часто задаваемые вопросыБыстрый результат (10 минут)
- Выполните
sudo ufw status verboseилиsudo nft list ruleset, чтобы увидеть, какие правила реально действуют на сервере прямо сейчас. - Убедитесь, что доступ по SSH разрешён на текущем порту, прежде чем включать или менять политику default-deny — иначе вы можете заблокировать сами себе доступ.
- Установите в качестве базовой конфигурации запрет входящего трафика по умолчанию и разрешение исходящего трафика по умолчанию.
- Явно разрешите только те порты, которые реально нужны вашим сервисам (SSH, а также HTTP/HTTPS, если вы запускаете веб-сервер).
- Включите логирование заблокированных пакетов, чтобы позже у вас была запись для проверки.
Это руководство дополняет наш чек-лист безопасности VPS, который охватывает полный базовый набор мер, необходимых серверу небольшого бизнеса, помимо самого файрвола.
Что на самом деле делают iptables, nftables и ufw?
Все три инструмента контролируют, каким сетевым пакетам разрешено достигать сервера или покидать его, но работают они на разных уровнях: nftables — это движок фильтрации пакетов на уровне ядра, iptables — либо более старый движок, либо слой трансляции поверх nftables, а ufw — понятный человеку командный слой поверх любого из них. Понимание этой многоуровневости — ключ к тому, чтобы не запутаться в, казалось бы, противоречивом выводе правил.
Файрвол хоста — это первая линия защиты сервера от нежелательного сетевого трафика: он работает на уровне ниже приложения и независимо от него. Каждый открытый порт — потенциальная точка входа, поэтому задача файрвола — гарантировать, что извне доступны только те порты, которые вы сознательно решили открыть (обычно это SSH и, при необходимости, HTTP/HTTPS), а весь остальной трафик отбрасывается ещё до того, как достигнет ваших приложений.
iptables: изначальный файрвол Linux
iptables — это классический пакетный фильтр Linux, построенный вокруг фиксированных таблиц (filter, nat, mangle, raw) и цепочек (INPUT, OUTPUT, FORWARD), по которым последовательно проверяются пакеты. Более двух десятилетий он был стандартным инструментом файрвола в Linux, и его синтаксис по-прежнему широко описан и понятен большинству администраторов.
Согласно собственной сравнительной документации проекта nftables, iptables использует парсер команд на основе getopt_long() с заранее заданными таблицами и цепочками, и при добавлении или удалении любого правила фактически перезагружается весь набор правил как единый монолитный блок. Кроме того, iptables изначально не поддерживает объединённые правила для IPv4/IPv6 (dual stack), поэтому администраторам традиционно приходилось параллельно вести отдельный набор правил ip6tables для трафика IPv6. В современных системах Ubuntu, Debian и семейства RHEL команда iptables, которую вы вводите, обычно транслируется в правила nftables «под капотом», а не обращается напрямую к старым модулям ядра — поэтому ваши правила iptables могут отображаться при выполнении nft list ruleset.
nftables: современная замена
nftables — это текущий стандартный фреймворк фильтрации пакетов во всех основных дистрибутивах Linux, пришедший на смену iptables с более гибкой и эффективной архитектурой. Согласно wiki проекта nftables, в nftables вообще нет предопределённых таблиц или цепочек: вы явно определяете только те структуры, которые вам нужны, что снижает количество лишних проверок правил по сравнению с фиксированным набором iptables.
На практике важнее всего три технических отличия. Во-первых, одно правило nftables может объединять несколько условий сопоставления и несколько действий (statements) в одной строке, тогда как в iptables для того же результата часто требуется несколько отдельных правил. Во-вторых, семейство inet в nftables позволяет написать единый набор правил, который применяется одновременно к трафику IPv4 и IPv6, что убирает необходимость дублировать правила для ip6tables. В-третьих, nftables хранит набор правил внутри в виде связанного списка, а не монолитного блока, поэтому отдельные правила можно добавлять или удалять атомарно, без перезагрузки и без кратковременного открытия сервера на время перезагрузки правил.
Плата за это — более крутая кривая обучения. Синтаксис nftables ближе к небольшому предметно-ориентированному языку, и администраторам, привыкшим к iptables, нужно заново освоить объявление таблиц и цепочек, прежде чем написать первое правило.
ufw: простой интерфейс
ufw (Uncomplicated Firewall) — это упрощённый инструмент командной строки, изначально созданный для Ubuntu, который генерирует правила iptables или nftables из коротких, понятных команд вроде ufw allow 22/tcp. Он не заменяет базовый движок, а управляет им.
ufw изначально устроен как stateful-файрвол: он автоматически отслеживает состояние активных соединений, поэтому ответный трафик для инициированного вами соединения пропускается обратно без отдельного правила. В Ubuntu бэкенд ufw на базе nftables используется по умолчанию начиная с Ubuntu 20.10, поэтому на современном Ubuntu VPS ваши команды ufw незаметно генерируют правила nftables, тогда как на старых системах или других дистрибутивах ufw может по-прежнему генерировать классические правила iptables. Узнать, какой бэкенд активен, можно командой update-alternatives --display iptables.
Что выбрать?
Для одного VPS небольшого бизнеса, на котором работают SSH и веб-стек, ufw обычно является правильным выбором по умолчанию, поскольку он минимизирует риск того, что ошибка конфигурации заблокирует вам доступ или случайно оставит порт открытым. Обращайтесь напрямую к nftables только тогда, когда вам нужны собственные цепочки, ограничение скорости (rate limiting), отслеживание соединений за пределами возможностей ufw или правила NAT, которые не покрывает синтаксис ufw.
| Фактор | iptables | nftables | ufw |
|---|---|---|---|
| Статус в 2026 году | Режим поддержки; на большинстве современных дистрибутивов работает через слой совместимости с nftables | Движок по умолчанию в Ubuntu 22.04+, Debian 11+, RHEL 9+ | Интерфейс, а не движок; управляет iptables или nftables |
| Кривая обучения | Привычен опытным администраторам Linux | Круче, новый синтаксис | Минимальная; короткие понятные команды |
| IPv4/IPv6 в одном наборе правил | Нет, требуется параллельный ip6tables | Да, через семейство inet | Обрабатывается ufw автоматически |
| Лучше всего подходит для | Устаревших скриптов, существующих наборов правил | Сложных пользовательских правил, NAT, ограничения скорости | Небольших VPS, быстрой и безопасной базовой настройки |
Хотите получить второе мнение о текущих правилах файрвола?
Получите бесплатную проверку безопасности сервера в режиме «только чтение» или поговорите с инженером по безопасности об управляемой защите.
Получить бесплатную проверку сервера Поговорить с инженером по безопасностиКак настроить базовый файрвол на nftables
Минимальная безопасная настройка nftables создаёт одну входную цепочку с политикой drop по умолчанию, а затем явно разрешает трафик loopback, установленные соединения, SSH и используемые вами веб-порты. Ниже приведён базовый набор правил, который нужно адаптировать под свои порты.
sudo nft flush ruleset
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
sudo nft add chain inet filter forward { type filter hook forward priority 0 \; policy drop \; }
sudo nft add chain inet filter output { type filter hook output priority 0 \; policy accept \; }
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input tcp dport { 80, 443 } accept
sudo nft add rule inet filter input ct state invalid drop
sudo nft list ruleset
Прежде чем полагаться на эту конфигурацию, проверьте её через второе соединение или доступ через консоль — опечатка в правиле для SSH может отрезать вам единственный путь входа. После проверки сохраните набор правил на постоянной основе (обычно в /etc/nftables.conf, загружается при старте через systemd), чтобы он сохранялся после перезагрузки.
Как настроить ufw за 10 минут
Безопасная базовая настройка ufw устанавливает запрет по умолчанию для входящего трафика, разрешение по умолчанию для исходящего трафика, явно разрешает SSH перед включением файрвола, а затем включает его. Рекомендации CIS benchmark для систем семейства Debian отдельно выделяют установку политики default deny для входящего трафика как оцениваемый, значимый для безопасности контроль.
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Всегда разрешайте свой порт SSH перед выполнением ufw enable. Если в рамках усиления защиты SSH вы изменили порт SSH со стандартного 22-го, разрешите именно этот порт, а не 22-й. Если вы дополнительно управляете сервером через сетевой файрвол или security group облачного провайдера, помните: трафик должны разрешать оба уровня, и блокировка на любом из них остановит соединение.
Частые ошибки в настройке файрвола, из-за которых серверы остаются уязвимыми
Самая распространённая проблема с файрволом на серверах малого бизнеса — это не отсутствие файрвола, а установленный файрвол, для которого так и не настроена политика default-deny, из-за чего любой порт, который открывает установленный пакет, оказывается тихо доступен извне. Вторая по распространённости проблема — включение default-deny без предварительной проверки того, что SSH разрешён, что приводит к блокировке доступа, устранить которую можно только через консоль или панель провайдера.
- Политика по умолчанию оставлена как accept. Файрвол, который блокирует лишь горстку заведомо «плохих» портов, а всё остальное пропускает, обеспечивает очень слабую реальную защиту, поскольку любой новый сервис, который вы установите (или который установит вредоносное ПО), будет доступен, пока вы не заметите это и не добавите правило.
- Забытый IPv6. Набор правил, покрывающий только IPv4, оставляет незащищённый путь внутрь, если на сервере включён IPv6 — а большинство провайдеров облачных VPS включают его по умолчанию.
- Отсутствие ограничения скорости для SSH. Файрвол, который разрешает SSH откуда угодно без ограничения числа попыток подключения, всё равно оставляет порт открытым для подбора пароля методом перебора; связка файрвола с fail2ban или правилом ограничения скорости в nftables закрывает этот пробел.
- Правила файрвола, не переживающие перезагрузку. Правила, применённые напрямую командами
nftилиiptables, но никогда не сохранённые в постоянный конфигурационный файл, исчезают при следующей перезагрузке, тихо открывая сервер заново. - Отсутствие логирования файрвола. Без логирования заблокированных пакетов у вас не будет записи для проверки при расследовании необычной активности, а это важно, если вам когда-нибудь понадобится обнаружить взлом сервера и отреагировать на него.
- Восприятие файрвола как полноценной защиты от DDoS. Файрвол хоста фильтрует, какие порты и источники могут подключаться, но обладает ограниченной способностью поглощать высокообъёмный трафик флуда; о том, что файрвол может и не может сделать против объёмных атак, читайте в нашем руководстве по защите от DDoS для малого бизнеса.
Настройка файрвола — лишь один пункт из более длинного списка. Полный базовый набор мер, охватывающий SSH, обновления, мониторинг и резервное копирование вместе, смотрите в полном чек-листе безопасности VPS, а базовые шаги, которые стоит выполнить ещё до того, как вы возьмётесь за правила файрвола, — в статье 5 основ усиления защиты сервера.
Часто задаваемые вопросы
nftables быстрее, чем iptables?
nftables может быть эффективнее на больших или сложных наборах правил, поскольку использует единый унифицированный интерфейс ядра, набор правил в виде связанного списка, который обновляется без перезагрузки всего сразу, а также позволяет одному правилу выполнять несколько действий вместо отдельных правил iptables для каждого условия. На небольшом сервере с коротким набором правил практическая разница обычно незначительна.
Использовать ufw или напрямую nftables на VPS?
Используйте ufw, если вам нужно быстро и безопасно управлять небольшим числом правил allow и deny. Обращайтесь напрямую к nftables, если вам нужны собственные цепочки, ограничение скорости, NAT или тонкий контроль, который не предоставляет упрощённый синтаксис ufw.
iptables считается устаревшим?
Классический инструмент iptables находится в режиме поддержки, и все основные дистрибутивы Linux, включая Ubuntu 22.04 и новее, Debian 11 и новее, а также RHEL 9 и новее, теперь по умолчанию используют nftables как фреймворк фильтрации пакетов. Команда iptables на этих системах по-прежнему работает — через слой совместимости, транслирующий её в правила nftables.
ufw использует iptables или nftables?
Это зависит от дистрибутива и версии. В Ubuntu бэкенд ufw на базе nftables используется по умолчанию начиная с Ubuntu 20.10, поэтому команды ufw «под капотом» транслируются в правила nftables, при этом внешне вы по-прежнему используете простые команды ufw allow и ufw deny.
Что такое политика default deny в файрволе и почему это важно?
Политика default deny блокирует любое соединение, которое не разрешено явно, вместо того чтобы разрешать всё, кроме явно заблокированного. Стандарты безопасности рекомендуют default deny, поскольку поддерживать короткий список разрешений гораздо проще, чем предугадать все возможные нежелательные соединения.
Может ли один только файрвол защитить VPS от взлома?
Нет. Файрвол сокращает открытую поверхность атаки, закрывая неиспользуемые порты, но не останавливает credential stuffing против открытого порта SSH, уязвимости в приложениях или вредоносное ПО, доставляемое через разрешённый сервис. Его нужно сочетать с усилением защиты SSH, мониторингом и своевременным обновлением.
Нужны ли одновременно файрвол и fail2ban?
Да, они решают разные задачи. Файрвол контролирует, какие порты и диапазоны IP-адресов вообще могут обращаться к сервису, а fail2ban следит за логами и временно блокирует IP-адреса, генерирующие повторные неудачные попытки аутентификации на порту, который вы намеренно оставили открытым, например SSH.
Как проверить текущие правила файрвола в Linux?
Выполните sudo nft list ruleset для nftables, sudo iptables -L -n -v для классического интерфейса iptables или sudo ufw status verbose, если установлен ufw. Стоит проверить все три варианта, поскольку на сервере правила ufw могут работать поверх бэкенда nftables или iptables.
Не уверены, в каком состоянии ваш сервер?
Получите бесплатную проверку безопасности в режиме «только чтение» или поговорите с инженером по безопасности об управляемой защите.
Получить бесплатную проверку сервера Поговорить с инженером по безопасности