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)