Firewall stateful vs stateless: в чём разница и что выбрать

7 минут чтения
Средний рейтинг статьи — 4.8

Почему вообще есть два типа firewall?

Firewall — это механизм фильтрации сетевого трафика.

Его задача — решить:

  • разрешить пакет
  • отклонить пакет
  • отбросить пакет

Но главный вопрос — на основании чего принимается решение.

Именно здесь и появляется различие между stateless и stateful фильтрацией.

Stateless firewall

Что это такое

Stateless firewall (без сохранения состояния) анализирует каждый пакет отдельно.

Он не «помнит», что происходило раньше.

Решение принимается только на основе:

  • IP-адреса источника
  • IP-адреса назначения
  • порта
  • протокола
  • флагов TCP

Каждый пакет — независим.

Пример

Правило:

  • Разрешить входящий TCP на порт 443

Stateless firewall просто проверяет пакет:

Если dst_port = 443 → пропускаем.

Он не проверяет:

  • было ли установлено TCP-соединение
  • является ли это ответом на исходящий запрос

Плюсы stateless

  • Очень быстрый
  • Минимальное потребление памяти
  • Простая реализация
  • Предсказуемое поведение

Минусы stateless

  • Нет понимания контекста соединения
  • Нужно писать правила в обе стороны
  • Уязвим к спуфингу
  • Не фильтрует "странные" состояния TCP

Stateful firewall

Stateful firewall отслеживает состояние соединений.

Он хранит таблицу состояний (connection tracking table).

Он знает:

  • кто инициировал соединение
  • какие порты используются
  • на каком этапе TCP handshake находится сессия

Как это работает

  1. Клиент инициирует TCP SYN
  2. Firewall фиксирует новое соединение
  3. Создаётся запись в state table
  4. Ответные пакеты автоматически разрешаются

Если приходит пакет, не соответствующий известному состоянию — он блокируется.

Пример (Linux iptables / nftables)

Разрешить только established-соединения:

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

Это значит:

  • новые входящие соединения запрещены
  • но ответы на исходящие запросы разрешены

Stateless так сделать не сможет.

Плюсы stateful

  • Безопаснее
  • Понимает TCP/UDP-сессии
  • Автоматически обрабатывает ответный трафик
  • Защищает от части спуфинговых атак

Минусы stateful

  • Требует память для state table
  • Более сложная логика
  • Может стать боттлнеком при огромном количестве соединений

Что такое state table

Stateful firewall хранит для каждого соединения:

  • src/dst IP
  • src/dst port
  • протокол
  • состояние TCP (SYN_SENT, ESTABLISHED и т.д.)
  • таймеры

Если соединений 1 000 000 — таблица должна это выдержать.

Иначе возможны:

  • переполнение таблицы
  • деградация производительности
  • DoS через exhaustion

Где используется stateless

  • ACL на маршрутизаторах
  • L3/L4 фильтрация на магистралях
  • очень высокоскоростные сети
  • простые edge-правила

Stateless часто применяется там, где важна максимальная производительность.

Где используется stateful

  • корпоративные firewall
  • cloud security groups
  • Kubernetes network policy (через conntrack)
  • NAT

NAT невозможен без отслеживания состояния.

Производительность

Stateless быстрее, потому что:

  • нет таблицы состояний
  • нет поиска записи
  • нет таймеров

Stateful требует:

  • lookup в таблице
  • управление временем жизни соединений

На современных системах разница не критична,
но при миллионах соединений это становится важным фактором.

А что насчёт UDP?

UDP не имеет handshake.

Stateful firewall всё равно создаёт псевдо-состояние:

  • фиксирует факт отправки пакета
  • разрешает ответ в течение таймаута

Это делает поведение более безопасным.

Что выбрать

Выбирайте stateless если:

  • у вас магистральная фильтрация
  • нужно минимальное потребление ресурсов
  • важна максимальная скорость

Выбирайте stateful если:

  • это perimeter firewall
  • вы защищаете серверы
  • используется NAT
  • нужна нормальная модель безопасности

В 95% продакшен-сценариев используется stateful.

Stateless — это скорее базовый уровень или высоконагруженная инфраструктура.

Комбинированный подход

Часто применяется схема:

  • На уровне edge — stateless ACL
  • На уровне firewall — stateful фильтрация
  • На уровне приложения — дополнительная проверка

Это даёт баланс производительности и безопасности.

Вывод

Stateless firewall:

  • анализирует пакеты по отдельности
  • быстрый и простой
  • не хранит контекст

Stateful firewall:

  • отслеживает соединения
  • хранит таблицу состояний
  • обеспечивает более высокий уровень безопасности

Если сомневаетесь — выбирайте stateful.

Но всегда учитывайте масштаб, нагрузку и архитектуру сети.

7 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний