OpenBSD pf HowTo ================ На данный момент packet filter от разработчиков OpenBSD является самым мощным файрволлом. К сожалению в интернете довольно мало материалов по его настройке на русском языке. Напомню что самым лучшим способом изучения принципов работы является чтение мануалов - pf, pf.conf и pfctl. Работать будем под OpenBSD 3.6. Для правильной работы файрволла необходимо включить поддержку IPv6 в ядре (по умолчанию в GENERIC ядре). Далее необходимо отредактировать скрипт /etc/rc.conf и добавить в него строчку pf=YES Управление pf осуществляется при помощи утилиты pfctl. Сначала нужно написать правила, потом загрузить их из файла настройки (/etc/pf.conf по умолчанию). pfctl -sr Показать правила загруженные на данный момент. pfctl -sa Показать все доступные настройки pf. pfctl -F rules Удалить все правила. pfctl -F Tables Удалить все таблицы. Таблицы это очень удобная вещь в pf. Можно создавать правила для таблицы, добавляя и убирая значения из нее. Например если мы хотим пускать 2 машины из локальной сети к нам по ssh, сделать это можно следующим образом: table persist {192.168.1.33, 192.168.1.96} pass in quick on rl0 proto tcp from to me port ssh Эти строчки надо добавить в /etc/pf.conf Таблицами очень удобно управлять в режиме реального времени: pfctl -t lcl -T show Показать все значения таблицы lcl. pfctl -t lcl -T del 192.168.1.96 Удалить из таблицы lcl значение 192.168.1.96 pfctl -t lcl -T add 192.168.1.2 Добавить в таблицу lcl значение 192.168.1.2 Можно запретить менять содержание таблицы используя слово const в файле конфигурации: table persist const {192.168.1.97} Слово persist используется для сохранения таблицы без значений, в противной случае пустая таблица будет удалена. Очень удобно создавать правила для конкретных пользователей в системе: pass out quick on rl0 user {root, blf, wulf} keep state Это правило разрешит исходящий траффик для пользователей root, blf и wulf. Удобно использование мгновенной фильтрации - для этого используется слово quick. Если пакет попадает под правило цепочки со словом quick, то дальнейшее прохождение пакета через цепочку останавливается. Ещё одной особеностью pf является фильтрация в зависимости от операционной системы удаленного хоста. Посмотреть список доступных ос можно так: pfctl -so Вот пример который разрешит все входящие соединения от пользователей OpenBSD: pass in quick on rl0 proto tcp from any os OpenBSD Загрузить файл с правилами нужно так: pfctl -f /etc/pf.conf Если все правила написаны без ошибок, то файроволл заработает. Отключить pf можно командой: pfctl -d Включить: pfctl -e Для более детального ознакомления с pf советую посетить http://www.openbsd.org/faq/pf/index.html __blf, RusH Security Team , http://rst.void.ru