Найкращий спосіб зробити це - визначити таблицю та створити правило для блокування хостів у pf.conf
:
table <badhosts> persist
block on fxp0 from <badhosts> to any
А потім динамічно додавати / видаляти з нього IP-адреси:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Інші команди "таблиця" включають flush
(видалити всі) replace
та show
. Дивіться man pfctl
докладніше.
Якщо ви хочете більш постійний список, ви можете зберігати його в одному (або більше) файлах. В pf.conf
:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Ви можете також додати імена хостів замість IP-адрес. Дивіться розділ "Таблиці" man pf.conf
та man pfctl
.
Примітка : Наведені вище приклади припускають , що інтернет-облицювальний інтерфейс fxp0
, будь ласка , змінюються в відповідності з вашими настройками. Крім того, майте на увазі, що правила в pf.conf
оцінюються послідовно і для block
або pass
правила - це останнє правило відповідності, яке застосовується. За допомогою цього набору правил
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
і після додавання до badhosts
таблиці 1.2.3.4 та 192.168.0.10
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
весь трафік від 1.2.3.4 і 192.168.0.10 буде заблокований , але другий господар буде мати можливість зробити підключення до порту інших машин 80 , тому що pass
правила матчі і перевизначати block
правила.