Pfctl
от ILuxWiki
Съдържание |
бърза справка
# pfctl -f /etc/pf.conf Load the pf.conf file
# pfctl -nf /etc/pf.conf Parse the file, but don't load it
# pfctl -Nf /etc/pf.conf Load only the NAT rules from the file
# pfctl -Rf /etc/pf.conf Load only the filter rules from the file
# pfctl -sn Show the current NAT rules
# pfctl -sr Show the current filter rules
# pfctl -ss Show the current state table
# pfctl -si Show filter stats and counters
# pfctl -sa Show EVERYTHING it can show
OpenBSD pf HowTo
(превода е с лека промяна към FreeBSD ориентация)
Packet Filer (pf) е разработен от отбора на OpenBSD и се налага като един от най-мощните филтри в BSD средите.
Напомням че най-добрия начин да научите как се работи е да прочетете man страниците за pf, pf.conf и pfctl.
От версия FreeBSD 5.4 pf е включен по подразбиране в ядрото. За да го активирате е необходимо да отворите /etc/rc.conf и да добавите следния ред:
pf_enable=YES
Управлението на pf се осъществява с инструмента pfctl.
Като за начало е нужно да попълните/промените съответните правила от файла за настройки (/etc/pf.conf по подразбиране)
Команди:
- Показва текущите правила във филтъра (-s rules)
pfctl -sr
- Показва всички настройки на pf (-s all)
pfctl -sa
- Изтрива всички правила
pfctl -F rules
- Изтрива всички таблици
pfctl -F Tables
Таблиците са много полезно свойство в pf. Може да създавате създавате правила за дадена таблица, да добавяте и премахвате съдържания от нея. Например ако искате да пуснете 2 машини от локалната мрежа към себе си с достъп до ssh, може да се направи така:
table <lcl> persist {192.168.1.33, 192.168.1.96}
pass in quick on rl0 proto tcp from <lcl> to me port ssh
Горните редове трябва да се добавят в /etc/pf.conf Таблицата е много удобно да се упрявлява в реално време:
pfctl -t lcl -T show
Показва съдържанието на таблица lcl.
pfctl -t lcl -T del 192.168.1.96
Изтрива 192.168.1.96 от таблица lcl.
pfctl -t lcl -T add 192.168.1.2
Добавя в таблица lcl адрес 192.168.1.2
Възможно е да забраните подмяната на съдържанието в дадена таблица като използвате запазената директива const в конфигурационния файл:
table <hackers> persist const {192.168.1.97}
Директивата persist се използва за запазването на таблицата ако няма съдържание, в противен случай празната вече таблица ще бъде изтрита.
Много е удобно и да създавате правила за потребителите които ползват системата:
pass out quick on rl0 user {root, blf, wulf} keep state
Правилото разрешава изходящ трафик от потребители root, blf и wulf.
Удобно е използването на мигновенно филтриране - за това се използва думата quick. Ако пакета попадне под тоева правило, той повече не продължава в по долните правила.
Филтър по OS (операционни системи)
Още една особеност на 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
http://rst.void.ru/papers/openbsd_pf_howto.txt
превод: --Sysop 22:50, 2 май 2006 (EEST)

