Der beste Weg , dies zu tun ist , um eine Tabelle zu definieren und eine Regel zu erstellen , die Hosts zu blockieren, in pf.conf
:
table <badhosts> persist
block on fxp0 from <badhosts> to any
Und dann dynamisch IP-Adressen hinzufügen / löschen:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Andere 'table'-Befehle umfassen flush
(alle entfernen) replace
und show
. Sehen Sie man pfctl
für mehr.
Wenn Sie eine dauerhaftere Liste wünschen, können Sie diese in einer (oder mehreren) Dateien aufbewahren. In pf.conf
:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Sie können auch Hostnamen anstelle von IP-Adressen hinzufügen. Siehe den Abschnitt "Tabellen" von man pf.conf
und man pfctl
.
Hinweis : In den obigen Beispielen wird davon ausgegangen, dass die mit dem Internet verbundene Benutzeroberfläche fxp0
entsprechend Ihren Einstellungen geändert wird. Beachten Sie auch, dass die Regeln in der pf.conf
Reihenfolge ausgewertet werden und für block
oder pass
Regeln die letzte zutreffende Übereinstimmungsregel ist. Mit diesem Regelsatz
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
und nach dem Hinzufügen von 1.2.3.4 und 192.168.0.10 zur badhosts
Tabelle
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
Der gesamte Datenverkehr von 1.2.3.4 und 192.168.0.10 wird blockiert, aber der zweite Host kann Verbindungen zum Port 80 anderer Computer herstellen, da die pass
Regel mit der Regel übereinstimmt und diese überschreibt block
.