Установка PF на FreeBSD

Хороший  код  хорошо  распространяется,  и  пользователи  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

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий