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) replaceund show. Sehen Sie man pfctlfü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.confund man pfctl.
Hinweis : In den obigen Beispielen wird davon ausgegangen, dass die mit dem Internet verbundene Benutzeroberfläche fxp0entsprechend Ihren Einstellungen geändert wird. Beachten Sie auch, dass die Regeln in der pf.confReihenfolge ausgewertet werden und für blockoder passRegeln 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 badhostsTabelle
$ 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 passRegel mit der Regel übereinstimmt und diese überschreibt block.