Виды файрволов: пакетные, stateful и прикладные - сравнение на практике | AdminWiki

Виды файрволов: пакетные, stateful и прикладные - сравнение на практике

22 сентября 2026 13 мин. чтения

Что такое файрвол и зачем нужно различать его типы

Файрвол (межсетевой экран) пропускает или блокирует сетевой трафик по заранее заданным правилам. Правила у разных типов экранов опираются на разные данные, и это определяет, какие атаки решение заметит, а какие пройдут мимо.

Главное отличие трёх типов — глубина анализа. Пакетный фильтр проверяет заголовки каждого пакета отдельно: адрес, порт, протокол, флаги. Stateful-файрвол добавляет таблицу состояний и понимает, что пакет относится к уже установленному соединению. Прикладной файрвол (application-level) разбирает содержимое протокола: URL, метод, заголовки, тело, сигнатуры атак. Современные NGFW объединяют все три подхода, добавляя инспекцию трафика (DPI) и системы обнаружения вторжений.

Цена ошибки измерима. Пакетный фильтр и stateful-экран инспектируют только заголовки и состояние соединений: они не видят приложения, пользователей и зашифрованную полезную нагрузку (источник). Прикладной прокси на том же канале упрётся в процессор: разбор HTTP, а тем более расшифровка TLS, стоит заметно дороже проверки заголовков. Обратная ошибка встречается чаще: на периметре стоит stateful-экран без анализа приложений, и SQL-инъекция проходит через открытый порт 443 как обычный корректный запрос.

Типы не заменяют друг друга. Пакетный фильтр не отсекает атаки уровня приложений, stateful-экран не остановит XSS внутри валидного HTTP-запроса, WAF не защитит SSH или DNS. Рабочая схема почти всегда сочетает несколько уровней.

Развитие шло от ACL на маршрутизаторах к stateful inspection, затем к прокси и системам предотвращения вторжений, а в 2010-х к NGFW. Первый коммерческий stateful-файрвол — FireWall-1 от Check Point — вышел в 1994 году: в отличие от примитивных пакетных фильтров, он «запоминал» контекст соединений и принимал решения на основе состояния сессии (источник, источник). В 2000 году Check Point выпустила релиз Next Generation (NG), добавив к Stateful Inspection новые функции безопасности (источник). Терминология и уровни OSI, на которых работает защита, разобраны в статье Файрвол и брандмауэр: в чём разница и как работают механизмы фильтрации.

Пакетные фильтры: принцип работы и практическое применение

Пакетный фильтр (stateless) проверяет каждый пакет независимо от остальных. Правило описывает набор признаков: источник (10.0.10.0/24), назначение (10.0.20.5), протокол (TCP), порт (443), направление и действие. Типовое правило звучит так: разрешить TCP на порт 443 с любого адреса к веб-серверу, всё остальное запретить.

Состояние соединения фильтр не хранит. Отсюда первое ограничение: экран не отличает запрос от ответа. Чтобы ответные пакеты веб-сервера ушли клиенту, нужны отдельные правила, обычно с проверкой TCP-флагов и диапазонов портов источника. Настройка работает, но она хрупкая: набор флагов подделывается, а нестандартный таймаут приводит к тому, что ответ приходит уже после смены правила.

Второе ограничение — подмена адреса источника. Если правило разрешает трафик с 10.0.0.0/8, атакующий при определённых условиях подставляет внутренний IP и проходит проверку. Содержимое пакетов экран не читает, поэтому SQL-инъекции, XSS и эксплуатация уязвимостей веб-приложения проходят через открытый порт.

Третья проблема — динамические протоколы. FTP, SIP, H.323 договариваются о дополнительных портах внутри уже открытой сессии. Stateless-правило об этих портах ничего не знает, поэтому либо приходится открывать широкий диапазон, либо передача данных рвётся.

Типовые места пакетной фильтрации: ACL на L3-коммутаторах и маршрутизаторах, правила nftables и iptables без модуля conntrack, security group в облаке на уровне подсети, встроенные экраны роутеров начального уровня.

Когда пакетный фильтр — оптимальный выбор

  • Сегментация между VLAN в небольшой сети: разрешить 10.0.10.0/24 доступ к 10.0.20.10 на порт 5432, остальное закрыть. Логика соединений здесь не нужна.
  • Ограничение доступа к служебным портам на публичном сервере: SSH только из офисной подсети и подсети администратора, остальное отбрасывается на входе.
  • Отсечение сканирования и явного мусора: блокировка адресов RFC1918 на внешнем интерфейсе, отказ в трафике на неиспользуемые порты.
  • Высокие скорости: обработка в ASIC или на линейной скорости под десятки гигабит без памяти под таблицу состояний.

Плюсы: минимальная нагрузка на CPU и RAM, предсказуемое поведение, простой аудит правил, работа на оборудовании без больших ресурсов. Минусы: нет контекста сессии, обход через подмену адреса, невидимость атак уровня приложений, плохая совместимость с динамическими протоколами.

Практическая настройка правил на Linux с политикой deny all и точечным открытием портов для SSH, веба и баз данных разобрана в руководстве Файрвол для Linux-сервера: настройка защиты от атак.

Stateful-файрволы: отслеживание соединений и его преимущества

Stateful-файрвол ведёт таблицу состояний (connection tracking, conntrack). Каждое новое соединение получает запись с адресами, портами, протоколом и статусом. В conntrack ядра Linux используются статусы NEW, ESTABLISHED, RELATED и INVALID.

Пример работы. Клиент открывает TCP-соединение к веб-серверу на порт 443. Экран фиксирует первый SYN, создаёт запись и пропускает пакет. Ответные пакеты сервера подходят под статус ESTABLISHED и проходят автоматически, без отдельного правила. После закрытия по FIN или RST запись удаляется по таймауту.

Что это даёт на практике:

  • Защита от подмены адреса: пакет извне, не относящийся ни к одной записи таблицы, отбрасывается, даже если адрес источника выглядит внутренним.
  • Меньше правил: вместо пары «запрос наружу» и «ответ внутрь» достаточно одного.
  • Логирование по сессиям: видно, кто и куда подключался, сколько длилось соединение, сколько байт прошло.
  • Ограничение соединений: лимит одновременных сессий с одного адреса гасит простые SYN-флуды и перебор.

Где встречается: iptables и nftables с conntrack, pfSense и OPNsense, Cisco ASA, FortiGate в режиме stateful inspection, любой домашний роутер с NAT.

Ограничения тоже конкретные. Содержимое пакетов не проверяется, поэтому атаки уровня приложений проходят. Таблица состояний занимает память: при десятках тысяч одновременных соединений нужен запас RAM, а при переполнении новые сессии отбрасываются. Таймауты по умолчанию рассчитаны на веб-нагрузку, и для долгоживущих сессий (базы данных, игровые серверы, VPN) их увеличивают. Асимметричная маршрутизация ломает логику: если ответ идёт через другой узел, запись не находится и пакет отбрасывается.

Как stateful-файрвол обрабатывает нестандартные протоколы

Проблема возникает в протоколах, которые договариваются о дополнительных портах внутри уже открытой сессии. FTP в passive mode: клиент подключается к 21, сервер в ответном сообщении указывает произвольный порт (например, 50000) для передачи данных. Таблица состояний об этом порте ничего не знает, и соединение с данными блокируется.

Решения, которые применяют на практике:

  1. ALG (Application Layer Gateway). Система connection tracking предоставляет helpers для фильтрации многосессионных протоколов, таких как FTP, H.323 и SIP, которые разделяют управляющий и данные на разные потоки (источник). Для FTP в Linux обычно требуется загрузить модули nf_conntrack_ftp и nf_nat_ftp (источник). Helper сканирует трафик управляющего соединения в поисках команд PASV и PORT, а также ответов PASV (источник), извлекает номер порта и создаёт связанную (RELATED) запись автоматически.
  2. Фиксированный диапазон пассивных портов на сервере и отдельное правило под него.
  3. Переход на SFTP или FTPS, где дополнительный канал не согласуется в открытом виде. Нюанс: FTPS шифрует управляющий канал, и ALG без поддержки TLS его не разберёт.

Важная оговорка по безопасности: из-за риска злоупотребления helpers со стороны атакующих команда Netfilter переходит к устранению автоматической привязки helpers к соединениям, и начиная с ядра 3.5 эту привязку можно отключить (источник). На практике это значит, что ALG для FTP стоит включать осознанно и только там, где он действительно нужен.

Та же логика касается SIP и RTP: порты голосового потока передаются в SDP, и без разбора тела сообщения или явного диапазона RTP-пакеты не пройдут. Когда таких протоколов много, их выносят на прикладной прокси, который понимает протокол целиком.

Прикладные файрволы (application-level): глубокий анализ трафика

Прикладной файрвол работает на седьмом уровне модели OSI. Пакеты он не пропускает транзитом, а завершает соединение на себе: принимает запрос, разбирает его и решает, передавать ли данные дальше. В англоязычной литературе его называют прокси.

Что он умеет:

  • Блокировать запрос по URL, методу, заголовкам, User-Agent.
  • Ловить сигнатуры атак: SQL-инъекции, XSS, обход путей, попытки эксплуатации известных CVE в веб-приложениях.
  • Ограничивать приложения по типу трафика: BitTorrent, мессенджеры, игровые клиенты, потоковое видео.
  • Фильтровать контент по категориям и вести подробный журнал: кто, когда и к какому ресурсу обращался.

Плюсы: высокая точность, защита от атак, которые stateful-экран не видит, детальный аудит действий пользователей. Минусы: разбор трафика расходует CPU, прокси добавляет задержку, расшифровка TLS требует сертификатов на клиентах, правила склонны к ложным срабатываниям. Легитимный запрос с подозрительным набором символов блокируется, и такие случаи разбирают в режиме логирования.

Отдельное ограничение: прокси поддерживает только те протоколы, для которых есть модуль разбора. HTTP-прокси не защитит DNS или SMB, а WAF не отсечёт сканирование портов.

Примеры прикладных файрволов и их место в инфраструктуре

  • ModSecurity с набором правил OWASP CRS на Nginx или Apache: ставится перед веб-приложением, режим Detection Only позволяет настроить его без блокировок.
  • Облачные WAF: снимают часть нагрузки, фильтруют ботов и распределённые атаки до того, как трафик дойдёт до сервера.
  • Squid как forward-прокси: контроль доступа сотрудников к сайтам, кеширование, журнал обращений.
  • Nginx как reverse proxy: маршрутизация запросов, лимиты по частоте и размеру тела, отсечение некорректных запросов до бэкенда.
  • NGFW с DPI: Palo Alto с App-ID, FortiGate, Cisco Firepower распознают приложение по поведению трафика, а не по одному лишь номеру порта.

Место в инфраструктуре: WAF размещают перед веб-сервером в режиме reverse proxy, и он дополняет stateful-экран. Периметр закрывает порты и отслеживает сессии, WAF разбирает то, что дошло до приложения.

Сравнение трёх типов файрволов на практических сценариях

КритерийПакетный фильтрStatefulПрикладной прокси
Уровень анализаL3-L4, заголовки пакетаL3-L4 плюс таблица состоянийL7, содержимое протокола
Что видитIP, порт, протокол, флагиПлюс направление и статус сессииПлюс URL, методы, заголовки, тело, сигнатуры
Подмена IP источникаПроходит по правилуОтсекается для неустановленных сессийОтсекается, соединение завершается на прокси
Атаки уровня приложенийНе видитНе видитФильтрует SQLi, XSS, ботов
ПроизводительностьЛинейная, минимум CPU и RAMВысокая, зависит от conntrackНиже: нужен CPU на разбор и TLS
Сложность настройкиНизкаяСредняяВысокая
Типовые решенияACL на коммутаторах, nftables без conntrackiptables и nftables с conntrack, pfSense, ASAModSecurity, Squid, Nginx, NGFW с DPI

Сценарий 1. Веб-сервер смотрит в интернет. Открыты 443 и 80, SSH ограничен по адресам. Нужен stateful-экран на периметре с лимитами соединений плюс WAF перед приложением, который отсечёт SQL-инъекции и ботов. Пакетный фильтр здесь откроет порты, но пропустит атаку внутри валидного HTTP-запроса.

Сценарий 2. Фильтрация между офисными VLAN. Задачи: бухгалтерия не видит подсеть разработки, гостевой Wi-Fi не имеет доступа к серверам. Статические ACL на коммутаторе L3 или правила nftables без conntrack закрывают задачу при минимальной нагрузке. Как принудительно направлять трафик через NGFW для глубокой проверки, разобрано в статье Маршрутизация как инструмент безопасности: фильтрация трафика и сегментация сети на L3-L7.

Сценарий 3. Контроль доступа сотрудников к сайтам. Нужны категории, журнал по пользователям, ограничение по времени. Работает прикладной прокси: он видит домен и содержимое запроса, тогда как пакетный фильтр видит только IP и порт 443, за которым скрыт весь HTTPS-трафик.

Сценарий 4. Защита от DDoS. Базовый уровень даёт stateful-экран с лимитами: число одновременных соединений с одного адреса, порог новых сессий в секунду, сокращённые таймауты для полуоткрытых соединений. Прикладной уровень добавляет поведенческие проверки и challenge-страницы.

Два примера, которые показывают границы типов. Slowloris удерживает множество медленных HTTP-соединений, каждое из которых корректно с точки зрения TCP: пакетный фильтр и stateful-экран пропустят атаку, остановят её лимиты на уровне приложения. XSS приходит внутри валидного HTTP-запроса к открытому порту 443: stateful-экран увидит нормальную сессию, сработает WAF или корректное экранирование на стороне приложения.

Почему современные файрволы гибридные и что это значит для выбора

NGFW (Next-Generation Firewall) объединяет пакетную фильтрацию, таблицу состояний, разбор приложений (DPI), IPS и иногда песочницу для файлов. Примеры: Palo Alto, FortiGate, Cisco Firepower, Check Point.

Что это даёт: единая политика вместо набора отдельных устройств, общий журнал и корреляция событий, одна точка применения правил. Правило задают не по порту 443, а по приложению, и трафик распознаётся по поведению соединения.

Чем платят: лицензии и подписки на сигнатуры, требования к производительности, сложность правил. Расшифровка TLS требует, чтобы файрвол выступал в роли прозрачного прокси: он завершает TLS-сессию клиента и устанавливает отдельную TLS-сессию с сервером (источник). Это вносит задержку и потребляет циклы CPU: без аппаратного ускорения программный файрвол может расшифровывать лишь порядка 1-2 Гбит/с до насыщения CPU, вызывающего потери пакетов и тайм-ауты сессий (источник). Вендоры компенсируют это аппаратным ускорением: Cisco Firepower использует выделенные криптографические сопроцессоры, Palo Alto Networks вводила карты разгрузки SSL-расшифровки в сериях PA-5200 и PA-7000, а Fortinet применяет ASIC NP7 и NP8 для расшифровки TLS 1.3 (источник).

Оговорка: тезис о снижении пропускной способности «в несколько раз» относительно чистого stateful не подтверждён конкретными цифрами из вендорских даташитов. Достоверно известна лишь оценка порядка 1-2 Гбит/с для программного файрвола без аппаратного ускорения, поэтому реальный масштаб падения скорости зависит от модели, включённых функций и наличия разгрузки.

Практический ориентир: малому офису на 30-50 сотрудников хватает stateful-маршрутизатора и базового набора IPS-сигнатур. Крупным сетям с требованиями по контролю приложений и отчётности нужен полноценный NGFW. Даже в гибридных решениях часть функций отключают ради скорости, чаще всего расшифровку TLS, и включают её только для нужных категорий трафика.

Как выбрать между отдельными типами и гибридным решением

  1. Опишите фильтруемый трафик: только адреса и порты — хватит пакетного фильтра; состояния и сессии — stateful; содержимое и приложения — прикладной уровень.
  2. Определите требуемый уровень защиты: контроль приложений и защита от вторжений без NGFW или связки open-source компонентов не закрывается.
  3. Посчитайте пропускную способность: DPI и TLS-инспекция режут скорость, закладывайте запас.
  4. Оцените людей и процессы: NGFW требует обновления подписок, разбора ложных срабатываний, ревизии правил.
  5. Сравните бюджет: лицензии NGFW идут по числу функций, open-source (pfSense или OPNsense с Suricata) закрывает часть задач бесплатно, но требует времени на настройку.
  6. Для рабочих станций достаточно встроенного экрана ОС; сравнение бесплатных решений собрано в статье Бесплатные файрволы для Windows: сравнение и выбор.

Взаимодействие файрволов с VPN и NAT: практические нюансы

VPN-трафик инкапсулирован. Правила на внешнем интерфейсе видят только внешний UDP или TCP порт, внутри которого едет зашифрованный поток. Поэтому правила доступа к внутренним ресурсам вешают на туннельный интерфейс (tun, wg, ipsec0), а не на WAN. Иначе туннель поднимется, но доступа к подсетям за ним не будет.

NAT traversal решает другую задачу: соединение между устройствами за NAT и файрволами. Radmin VPN использует эту технологию для соединения компьютеров, находящихся за NAT или файрволами (источник), и при этом не скрывает IP-адрес от сайтов, поскольку не предназначен для анонимного сёрфинга (источник). Для администратора это значит, что трафик такого туннеля проходит через экран как обычные UDP-пакеты, и правила задают по адресам и портам самого туннеля.

DPI на стороне провайдера влияет на выбор настроек. Провайдеры применяют Deep Packet Inspection, который распознаёт и блокирует VPN-трафик, особенно протоколы OpenVPN и WireGuard (источник). Отсюда практика смены порта на 443, маскировки под HTTPS и перехода на протоколы, устойчивые к разбору. Устройство DPI в масштабах национальной фильтрации разобрано в статье Великий китайский файрвол: как устроена интернет-цензура и что это значит для DevOps.

Отдельная категория — ускорители с выборочным перехватом. VPN FK перехватывает только пакеты игровых приложений и строит для них более короткий маршрут, остальной веб-трафик идёт напрямую (источник), поэтому на правила экрана такое решение влияет точечно.

MTU — вторая частая причина проблем. Неправильный размер MTU приводит к тому, что пакеты не проходят через туннель (источник), особенно при передаче крупных ответов и TLS-рукопожатиях. Лечится уменьшением MTU на интерфейсе туннеля и ограничением MSS на файрволе.

На Windows соединение может блокировать антивирус, считая его подозрительным (источник). Перед разбором правил экрана проверьте этот вариант: часто причина не в файрволе.

Оговорка: источники по VPN, использованные в этом разделе, описывают поведение туннелей, NAT traversal и DPI. Классификацию межсетевых экранов они не раскрывают, поэтому утверждения о трёх типах выше опираются на общую практику администрирования сетей.

Итоги: как выбрать тип файрвола под свою задачу

Сводка по типам: пакетный фильтр — для простых статических правил и высокой нагрузки; stateful — базовый уровень для современных сетей; прикладной — для глубокого контроля и защиты приложений.

  1. Опишите трафик: какие сервисы, порты, направления и кто кому подключается.
  2. Определите, что нужно ловить: сканирование и мусор (пакетный), посторонние подключения и лимиты (stateful), атаки на приложения и контроль использования (прикладной).
  3. Посчитайте производительность: пропускная способность, число одновременных сессий, готовность к снижению скорости при включении DPI и TLS-инспекции.
  4. Оцените ресурсы: люди на поддержку, бюджет на лицензии, готовность разбирать ложные срабатывания.
  5. Выберите схему: отдельные компоненты (ACL плюс stateful плюс WAF) или гибридное устройство.

Типовые связки на практике: домашняя сеть — stateful-роутер со встроенным экраном; веб-приложение — stateful на периметре и WAF перед сервером; офисная сеть — ACL между VLAN и stateful на выходе; предприятие с отчётностью — NGFW.

Перед продакшеном правила тестируйте на стенде и в режиме логирования без блокировок: nftables проверяет конфигурацию без применения, WAF запускают в режиме Detection Only и только потом включают блокировку. Ошибка в одном правиле на периметре стоит дороже, чем час на проверку.

Поделиться:
Сохранить гайд? В закладки браузера