PF (Packet Filter)

PF (Packet Filter)

Эталонный 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