@RR40

Как настроить PF firewall в OS X?

Прошу помочь разобраться с PF фаерволлом на OS X, суть задачи, которую я себе поставил

1. блокирование траффика мимо заданных IP адресов (VPN сервера)
2. работа после перезагрузки через LaunchDaemons

Мои конфиги

/Library/LaunchDaemons/com.pf.customized.plist

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0">  
<dict>  
        <key>Label</key>  
        <string>pf.customized.rules</string>  
        <key>Program</key>  
        <string>/sbin/pfctl</string>  
        <key>ProgramArguments</key>  
        <array>  
                <string>/sbin/pfctl</string>  
                <string>-e</string>  
                <string>-f</string>  
                <string>/etc/pf/pf.customized.rules.conf</string>  
        </array>  
        <key>RunAtLoad</key>  
        <true/>  
        <key>StandardErrorPath</key>  
        <string>/var/log/pf.log</string>  
        <key>StandardOutPath</key>  
        <string>/var/log/pf.log</string>  
</dict>  
</plist>


Конфиг файл PF
###############################  
#         PF Options          #  
###############################  
  
# Don't alert source about dropped packets  
set block-policy drop  
  
# Configuring OS fingerprints  
set fingerprints '/etc/pf.os'  
  
# Disable PF for loopback interface  
set skip on lo0  
  
  
# Normalize and defragment  
scrub in all  
  
# Including TABLES  
# include '/etc/pf/tables.conf'  
  
table <vpn_servers> const {10.0.0.101,VPN IP 1,VPN IP 2,VPN IP 3}  
table <vms> const {10.0.0.10,10.0.0.11,10.0.0.12}  
  
###############################  
#            Policy           #  
###############################  
  
# pass all  
  
pass quick on en4 from <vms> to <vpn_servers> keep state  
block on en4 from <vms> to !<vpn_servers>  
  
#ICMP (ping)  
pass out proto icmp from any to any  
  
#DHCP  
pass inet proto udp from port 68 to port 67  
pass inet proto udp from port 67 to port 68  
  
#DNS  
pass out inet proto {tcp udp} from any to any port 53


Проблемы

1. После перезагрузки почему то правила не применяются
2. Есть ли более элегантное решение на уровне интерфейса ? Например, пропускать траффик только через VPN адаптер ?
3. Как быть с тем, что у меня модем Yota и он получает по DHCP каждый раз адрес, а если блокировать все, то он даже не может получить адрес
  • Вопрос задан
  • 2002 просмотра
Пригласить эксперта
Ответы на вопрос 2
@progressman
plist в /Library/LaunchDaemons почему-то и у меня не работает.
Включение Firewall в настройках тоже не активирует pf :(
Думаю попробовать сделать старт через bash скрипт, который будет запускаться из /Library/LaunchDaemons, так сделано у Murus.
murusfirewall.com/Documentation/Murus%20Manual.pdf
Ответ написан
@Semen55338
Проверить правила sudo pfctl -vnf /path/to/config
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы