Автор: Сергей
Настройка pf.conf
- /etc/pf.conf
wan - интернет;
lan - это наша локалка;
vpn - наш удаленный доступ в серую сеть;
- wan="internet"
lan="192.168.1.0/24"
vpn="192.168.100.0/24"
- set skip on lo0
- set block-policy return
- scrub in all
- nat on $wan from $lan to any -> ($wan)
- nat on $wan from $vpn to any ->($wan)
- rdr on $wan inet proto tcp from any to ($wan) port 5900:5906 -> 192.168.1.2
- block in all
- block out on $lan from 192.168.1.2 to any
- antispoof quick for lo0 inet
- block in from no-route to any
- pass out keep state
- pass inet proto icmp from any to any
- pass in proto {tcp,udp} from any to any port 49152:65535 keep state
pass in proto {tcp,udp} from any to any port 5900:5906 keep state
pass in proto {tcp,udp} from any to any port 20:21 keep state
pass in on $wan proto {tcp,udp} from any to ($wan) port 1723 keep state
pass in on $wan proto udp from any to ($wan) port 137 keep state
pass in proto {tcp,udp} from any to any port 53 keep state
pass in proto {tcp,udp} from any to any port 80 keep state
pass in proto {tcp,udp} from any to any port 443 keep state
pass in proto {tcp,udp} from any to any port 5190 keep state
pass in on $wan proto udp from any to ($wan) port 138 keep state
pass in proto {tcp,udp} from any to any port 631 keep state
- tcpdump -n -e -ttt -r /var/log/pflog
tcpdump -n -e -ttt -r /var/log/pflog port 80
tcpdump -n -e -ttt -r /var/log/pflog and host 192.168.1.1
- tcpdump -n -e -ttt -i pflog0
tcpdump -n -e -ttt -i pflog0 port 80
tcpdump -n -e -ttt -i pflog0 host 192.168.1.1
Список команд для управления pf фильтром:
-
pfctl -d выключить пакет-фильтр
pfctl -e включить пакет-фильтр
pfctl -f /etc/pf.conf загрузить конфиг из /etc/pf.conf
pfctl -n -f /etc/pf.conf проверить на ошибки /etc/pf.conf, но не загружать его
pfctl -R -f /etc/pf.conf загрузить только правила фитрации
pfctl -N -f /etc/pf.conf загрузить только правила NAT
pfctl -O -f /etc/pf.conf load загрузить только опции
pfctl -F all сбросить все
pfctl -F rules сбросить только правила фильтрации
pfctl -F queue сбросить только очереди
pfctl -F nat сбросить правила NAT
pfctl -F info сбросить всю статистику
pfctl -z clear очистить все счетчики
pfctl -s rules показать текущие правила фильтрации
pfctl -v -s rules show показать информацию по каждому правилу фильтрации
pfctl -vvsr показать текущие правила фильтрации с добавлением номера правила
pfctl -v -s nat показать текущие правила NAT отдельно по каждому правилу
pfctl -s nat -i xl1 показать правила NAT для интерфейса xl1
pfctl -s queue показать очереди
pfctl -s state показать текущее состояние таблиц
pfctl -s info показать статистику правил и состояние счетчиков
pfctl -s all показать все что можно
pfctl -t testtable -T show просмотр содержимого таблицы
pfctl -t testtable -T show -v более подробной статистики по каждому адресу
pfctl -t testtable -T add 192.168.1.1 добавление адресов в таблицу
pfctl -t testtable -T delete 192.168.1.1 удаление адресов из таблицы
pfctl -sr просмотр проброшенных портов
Просмотр логов
- tcpdump -n -e -ttt -r /var/log/pflog
tcpdump -n -e -ttt -r /var/log/pflog port 80
tcpdump -n -e -ttt -r /var/log/pflog and host 192.168.1.1
- tcpdump -n -e -ttt -i pflog0
tcpdump -n -e -ttt -i pflog0 port 80
tcpdump -n -e -ttt -i pflog0 host 192.168.1.1