Всем привет!
Впервые работаю с PF на FreeBSD, и вот возникли вопросы..
Немного покурив мануалы, также нашел частично готовый конфиг, который немного изменил и хотел спросить по поводу настройки... Может где-то ошибся, либо что-то стоит убрать/добавить.
Также интересует вопросы по лимитам.. Т.к. не хочется, чтобы юзеров вдруг начало блокировать просто так :)
Вот собственно и сам конфиг:)
ext_if="em0"
## tcp порты использующиеся на сервере
tcp_services="{ 22, 53, 80, 443 }"
## udp порты использующиеся на сервере
udp_services="{ 53, 514 }"
## разрешенные icmp типы запросов
icmp_types="{ echoreq, unreach }"
## траблица спаммеров
table <spammers> persist file "/var/db/pf/spammers"
## траблица заблокированных за подбор паролей
table <bruteforce> persist file "/var/db/pf/bruteforce"
## сбрасываем соединение грубо
set block-policy drop
## полностью пропускаем проверку на петле
set skip on lo0
## включаем логирование на интерфейсе
set loginterface $ext_if
## оптимизация
set optimization normal
## нормализуем все входящие пакеты на всех интерфейсах
scrub in all
scrub on $ext_if all reassemble tcp
## правило для антиспуфинга
antispoof quick for $ext_if
## блокируем вход
block in log all
## блокируем выход
block out log all
## блочим всех кто попался в таблицу <blocked>
block in quick on $ext_if from <spammers> to any
## блочим всех кто попался в таблицу <bruteforce>
block in quick on $ext_if from <bruteforce> to any
## разрешаем с внешки ломится на разрешенные tcp порты
pass in on $ext_if proto tcp from any to $ext_if port $tcp_services flags S/SA keep state
## чистим траф www от SYN flood
pass in on $ext_if proto tcp from any to $ext_if port www flags S/SA synproxy state
## www режим тех кто превысил лимиты и ложим в таблицу
pass in on $ext_if proto tcp to $ext_if port www flags S/SA keep state \(max-src-conn 60, max-src-conn-rate 15/5, overload <spammers> flush)
## ftp режим тех кто превысил лимиты и ложим в таблицу
pass in on $ext_if proto tcp to $ext_if port ftp flags S/SA keep state \( max-src-conn 400, max-src-conn-rate 400/2, overload <spammers> flush)
## ssh режим тех кто превысил лимиты и ложим в таблицу
pass quick proto { tcp, udp } from any to any port ssh keep state (max-src-conn 50, max-src-conn-rate 8/60, overload <bruteforce> flush global)
## пропускаем udp на разрешенные порты
pass in on $ext_if proto udp from any to $ext_if port $udp_services keep state
## разрешаем только некоторые типы icmp
pass in on $ext_if inet proto icmp all icmp-type $icmp_types keep state
## разрешаем порты выше 49151 для passive FTP mode
pass in quick on $ext_if proto tcp from any to any port 49151 keep state
## разрешаем все модуляции для исходящих tcp соединений
pass out on $ext_if proto tcp all modulate state flags S/SA
## разрешаем исходящие протоколы
pass out on $ext_if proto { tcp, udp, icmp } all keep state