La meilleure façon de le faire est de définir une table et de créer une règle pour bloquer les hôtes, dans pf.conf
:
table <badhosts> persist
block on fxp0 from <badhosts> to any
Et puis ajoutez / supprimez dynamiquement des adresses IP:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Les autres commandes «table» incluent flush
(supprimer tout) replace
et show
. Voirman pfctl
pour en savoir plus.
Si vous voulez une liste plus permanente, vous pouvez la conserver dans un (ou plusieurs) fichiers. Dans pf.conf
:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Vous pouvez également ajouter des noms d'hôtes au lieu d'adresses IP. Voir la section "Tables" de man pf.conf
et man pfctl
.
Remarque : Les exemples ci-dessus supposent que l'interface Internet est fxp0
, veuillez modifier en fonction de votre configuration. Gardez également à l'esprit que les règles dans pf.conf
sont évaluées de manière séquentielle et pour block
ou les pass
règles sont la dernière règle de correspondance qui s'applique. Avec cet ensemble de règles
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
et après avoir ajouté 1.2.3.4 et 192.168.0.10 au badhosts
tableau
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
tout le trafic de 1.2.3.4 et 192.168.0.10 sera bloquée , mais le second hôte sera en mesure d'établir des connexions au port d'autres machines 80 parce que les pass
matchs de la règle et les exceptions à la block
règle.