Firewall stateful vs stateless: в чём разница и что выбрать
Почему вообще есть два типа 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 находится сессия
Как это работает
- Клиент инициирует TCP SYN
- Firewall фиксирует новое соединение
- Создаётся запись в state table
- Ответные пакеты автоматически разрешаются
Если приходит пакет, не соответствующий известному состоянию — он блокируется.
Пример (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.
Но всегда учитывайте масштаб, нагрузку и архитектуру сети.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний