Хороший код хорошо распространяется, и пользователи FreeBSD скажут вам, что хороший код откуда угодно, рано или поздно, найдет путь в FreeBSD. PF не исключение, и с FreeBSD 5.2.1 и 4.х серий и далее, PF и связанные с ним инструменты стали частью
FreeBSD.
Если вы прочли предыдущий абзац по установке PF на OpenBSD, вы видели, что на OpenBSD, PF был активизирован по умолчанию. С FreeBSD дела обстоят не так, поскольку PF является только одним из трех доступных вариантов пакетного фильтра системы. В
FreeBSD вам необходимо сделать несколько явных действий для того, чтобы включить PF и при сравнении с OpenBSD, кажется, что нужно немного больше поколдовать в вашем
/etc/rc.conf. Загляните в файл /etc/defaults/rc.conf – там показаны значения по умолчанию для FreeBSD связанные с PF :
pf_enable="NO" # Установить YES для активизации packet filter (PF) pf_rules="/etc/pf.conf" # файл для определения правил для PF pf_program="/sbin/pfctl" # путь, где находится исполняемый файл PF pf_flags="" # дополнительные флаги для pfctl
pflog_enable="NO" # установить YES для включения логирования packet filter pflog_logfile="/var/log/pflog" # где pflogd должен хранить logfile pflog_program="/sbin/pflogd" # где находится исполняемый файл pflogd
pflog_flags="" # дополнительные флаги для pflogd
pfsync_enable="NO" # необходимо для синхронизации состояния pf для других хостов pfsync_syncdev="" # интерфейс через который работает pfsync
pfsync_ifconfig="" # дополнительные опции для ifconfig(8) для pfsync
К счастью, вы можете игнорировать многие из них – по крайней мере сейчас. Следующие опции это только те, что вам необходимо добавить в вашу конфигурацию /etc/rc.conf:
pf_enable="YES" # Включение PF (загружается модулем если нужно) pflog_enable="YES" # включаем pflogd(8)
Есть некоторые различия между FreeBSD 4.х, 5.х, и более поздних версиях в отношении PF. Ссылаясь на хэндбук FreeBSD, а именно раздел о PF главы Брандмауэры, доступный на http://www.freebsd.org ознакомьтесь с информацией которая применима в вашем случае. Код PF на FreeBSD 7 и 8 такой же, как код на OpenBSD 4.1 с некоторыми исправленными ошибками. Мы будем предполагать, что вы работаете на FreeBSD 7.0 или новей.
На FreeBSD, PF компилируется как модуль ядра по умолчанию. Если ваша система FreeBSD установлена с ядром GENERIC, вы можете запустить PF написав следующее:
$ sudo kldload pf
$ sudo pfctl –e
Предполагаю, что вы вставили строчки упомянутые в вашем /etc/rc.conf и создали
/etc/pf.conf файл, а так же, вы должно быть используете rc скрипт для запуска PF. Следующие строки включают PF:
$ sudo /etc/rc.d/pf start
А эти выключают пакетный фильтр(packet filter):
$ sudo /etc/rc.d/pf stop
Замечание
На FreeBSD скрипту /etc/rc.d/pf необходима по крайней мере строка pf_enable=”YES” в /etc/rc.conf и корректный /etc/pf.conf файл. Если какое либо из этих требований не выполняется, скрипт завершит работу с ошибкой. По умолчанию в инсталляции FreeBSD файла /etc/pf.conf нет, и вам нужно будет создать его перед тем как перезагружать систему с включенным PF. Для наших целей, создадим пустой /etc/pf.conf файл командой touch, но вы могли бы также работать если бы скопировали файл из /usr/share/examples/pf/pf.conf поставляемый с системой.
Файл примера /usr/share/examples/pf/pf.conf содержит неактивные настройки. Он включает только закомментированные строки начинающиеся с символа # и закомментированные правила, что дает обзор того, как выглядят рабочие правила. Для примера, если вы удалите знак # перед строкой, которая говорит нам, что нужно пропускать все на loopback интерфейс, а затем сохраните файл как /etc/pf.conf, вы включите PF и загрузите устаноленное правило на ваш loopback интерфейс, который не фильтрует трафик. Однако, если PF включен на системе FreeBSD, а мы не удосужились написать актуальные правила, PF ничего делать не будет и все пакеты будут пропущены.
На момент написания статьи (Сентябрь 2010) в rc скриптах FreeBSD не установлены правила по умолчанию как резервные и если конфигурация читается из /etc/pf.conf то она
не будет загружена. Это означает что включение PF без установленных правил или с
содержимым pf.conf, которое синтаксически неверно оставит пакетный фильтр включенным с правилом по умолчанию пропускать все.
Источник: Книга о PF, by Peter N.M. Hansteen, Перевод выполнил Михайлов Алексей aka iboxjo

July 21st, 2012
admin
Опубликовано в рубрике
Метки: