Эталонный stateful firewall из OpenBSD — минималистичный синтаксис, максимальная контролируемость.
«PF — это firewall, которому доверяют разработчики macOS, FreeBSD и OpenBSD. Не потому что он популярен, а потому что он правильный.»
PF (Packet Filter) создан в OpenBSD в 2001 году как замена устаревшему ipfilter. Сегодня PF является межсетевым экраном по умолчанию в OpenBSD, FreeBSD и macOS. В отличие от iptables/nftables с их императивным синтаксисом цепочек, PF использует декларативный язык правил: вы описываете, что разрешено, а не пишете последовательность команд. Это делает правила читаемыми, предсказуемыми и легко проверяемыми на корректность.
В стеке IgNix PF является первым и последним рубежом защиты на каждом хосте. Правила PF управляются через Ansible и хранятся в Git — изменение политики firewall это code review и merge request, а не SSH-сессия с ручными командами. PF интегрируется с Suricata (ALTQ/дифференцированная очередь трафика), с Wazuh (экспорт событий) и с pfSense/OPNsense (которые сами построены на PF).
Ключевая особенность PF — tables: динамические списки IP-адресов, которые можно обновлять без перезагрузки правил. Это основа для автоматической блокировки: Wazuh обнаружил брутфорс — добавил IP в таблицу bruteforce, PF немедленно заблокировал. Anchors позволяют вложить правила pfSense внутрь правил хостового PF — единая иерархия политик.
Килл-фичи:
Декларативный синтаксис — читаемые правила без цепочек iptables, легко аудировать и проверять на корректность
Tables (динамические списки) — обновление списков IP без перезагрузки правил, основа для автоблокировки через Wazuh
Stateful + stateless — stateful tracking соединений с тонкой настройкой таймаутов по протоколу
ALTQ (QoS) — приоритизация трафика на уровне ядра, гарантированная полоса для критичных сервисов
Anchors (вложенные правила) — иерархия правил для multi-tenant и multi-zone конфигураций
pf.conf в Git — управление через Ansible, version control, code review каждого изменения политики
Zero overhead — нативная интеграция в ядро OpenBSD/FreeBSD без дополнительных модулей
Что заменяет: iptables/nftables (Linux), Cisco ACL, Windows Firewall, коммерческие host-based firewall агенты
Версия: PF (в составе OpenBSD 7.7 / FreeBSD 15.x)
Роль в стеке: Слой 4 — Сетевая защита / Host-based и периметровый firewall