Фильтрация пакетовPácket Fílter (PF) — файрвол, разрабатываемый в рамках проекта OpenBSD. Обладает высокой скоростью работы, удобством в конфигурировании и большими возможностями, включая поддержку IPv6. На данный момент используется, помимо OpenBSD, в NetBSD и FreeBSD, а также основанных на этих трёх MirOS BSD, DesktopBSD, pfSense и других. Начиная с версии 10.7 PF используется в Mac OS X. PF был портирован на Microsoft Windows и лёг в основу файрвола Core Force[1].
Для работы фаервола нужно изначально разрешить загрузку соответствующих модулей
В /boot/loader.conf добавляем следующие строки
pf_load=«YES»
pflog_load=«YES»
Далее нужно разрешить загрузку соответствующих служб в /etc/rc.conf
pf_enable=«YES»
pflog_enable=«YES»
pf_rules=«/etc/pf.conf»
Сам файл конфигурации состоит из следующих конструкций
• Макроопределения
• Таблицы
• Параметры
• Нормализация пакетов
• Управление полосой пропускания
• Преобразование адресов
• Перенаправление
• Фильтрация пакетов
пример файла /etc/pf.conf
interface=«em0»
scrub in all
block in on $interface
#разрешить входящий трафик SSH и POP3 из локальной сети
pass in on $interface proto tcp from 192.168.1.0/24 to $interface port 22
pass in on $interface proto tcp from 192.168.1.0/24 to $interface port 110
#разрешить входящий трафик SMTP (25), HTTP (80) и HTTPS (443)
pass in on $interface proto tcp from any to $interface port 25
pass in on $interface proto tcp from any to $interface port 80
pass in on $interface proto tcp from any to $interface port 443
#разрешить входящие запросы к серверу DNS
pass in on $interface proto tcp from any to $interface port 53
pass in on $interface proto udp from any to $interface port 53
#разрешить исходящий трафик
pass out on $interface proto { tcp, udp } all