Пакетный фильтр OpenBSD в настоящий момент
успешно портирован во все рассматриваемые в этом курсе системы: в
FreeBSD, NetBSD и
DragonFly BSD. Большинство описанных в
этом обзоре функций, таких как authpf(8) или
CARP и
pfsync портированы во все четыре системы. (pfsync(4)
, кажется нет в
NetBSD.) Но при этом самая свежая и наиболее
функциональная версия входит в OpenBSD, а
остальные системы могут от неё отставать больше или меньше.
Здесь описана версия OpenBSD 4.0, и кое где по тексту упоминаются отличия свойственные FreeBSD 6.2.
Для активации пакетного фильтра в OpenBSD надо добавить строкуpf=YES
в файл
/etc/rc.conf.local(5)
. В
FreeBSD понадобятся следующие строки в файле
/etc/rc.conf(5)
:
pf_enable="YES" # Включить PF (Подгрузить модуль, если требуется) pf_rules="/etc/pf.conf" # Откуда подгружать правила для pf pf_flags="" # дополнительные флаги для управляющей программы pfctl(8) pflog_enable="YES" # запуск pflogd(8) (система журналирования) pflog_logfile="/var/log/pflog" # где pflogd должен хранить журнал pflog_flags="" # дополнительные флаги для pflogd
Кроме того, пакетный фильтр можно запустить при помощи команды
#
pfctl -e
#
pfctl -d
Эти две команды не подгружают правила, а только запускают брандмауэр. Для подгрузки правил надо воспользоваться командой
#
pfctl -f /etc/some-ruleset-file
Вот некоторые примеры использования команды pfctl(8):
#
pfctl -f /etc/pf.conf Загрузить файл pf.conf#
pfctl -nf /etc/pf.conf Проверить синтаксис, но не загружать#
pfctl -Nf /etc/pf.conf Загрузить только правила NAT#
pfctl -Rf /etc/pf.conf Загрузить только фильтрующие правила#
pfctl -sn Показать текущие правила NAT#
pfctl -sr Показать текущие правила фильтра#
pfctl -ss Показать текущую таблицу состояний (state table)#
pfctl -si Показать статистику#
pfctl -sa Показать ВСЁ что можно
Для ведения журнала может использоваться система
pflogd(8), которая создаёт псевдо сетевой
интерфейс pflog0
. Это позволяет
слушать журнал «на лету» при помощи утилиты
tcpdump(8) (см. Раздел 6.11, «Демонстрация основных навыков работы с утилитой
tcpdump(1)»).
Кроме того, pflogd(8)сохраняет журнал в
отдельный файл, который пишется в двоичном формате. Для чтения
журнального файла тоже применяется утилита
tcpdump(8), — в ней, для этого,
предусмотрено несколько характерных условий, предназначенных
не для прослушивания сети (основное её предназначение), а
специально для анализа журнальных файлов
pf(4).