Stateful фильтрация обрабатывает трафик как двунаправленный обмен пакетами, при котором выполняется установление сессии. Во время активизации keep state динамически создаются внутренние правила для каждого ожидаемого пакета, которыми обмениваются исходные отправитель и получатель. Любые пакеты, которые не соответствуют образцу установления сессии, автоматически отвергаются как ложные.
Поддержка состояния допускает наличие ICMP-пакетов, относящихся к ТСР- или UDP-сессии. Также пакет, который IPF может рассматривать как часть активной сессии, даже если это другой протокол, будет пропущен.
Рассмотрим, что происходит при установлении сессии.
Исходящий пакет на интерфейсе, во-первых, проверяется в динамической таблице состояний. Если пакет соответствует очередному ожидаемому пакету при установлении сессии, то он пропускается пакетным фильтром и состояние установления сессии в динамической таблице состояния изменяется. Следующие пакеты будут проверяться новым множеством исходящих правил.
Пакеты, пришедшие на тот же самый интерфейс, во-первых, проверяются в динамической таблице состояния. Если пакет соответствует очередному ожидаемому пакету при установлении сессии, то он пропускается пакетным фильтром и состояние установления сессии изменяется в динамической таблице состояния. Следующие пакеты будут проверяться новым множеством входящих правил.
Когда установление сессии выполнено, информация удаляется из динамической таблицы состояния.
Фильтрация с учетом состояния дает возможность сфокусироваться на блокировании или разрешении новых сессий. Если новая сессия разрешена, всем последующим пакетам будет автоматически разрешено прохождение, и любой ложный пакет будет автоматически отвергаться. Если новая сессия блокирована, ни один из ее следующих пакетов не будет разрешен. Фильтрация с учетом состояния обеспечивает возможность защиты от различных атак наводнения (flooding).