Cara terbaik untuk melakukan ini adalah dengan mendefinisikan tabel dan membuat aturan untuk memblokir host, di pf.conf
:
table <badhosts> persist
block on fxp0 from <badhosts> to any
Dan kemudian secara dinamis menambahkan / menghapus alamat IP dari itu:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Perintah 'tabel' lainnya termasuk flush
(hapus semua), replace
dan show
. Lihat man pfctl
lebih lanjut.
Jika Anda menginginkan daftar yang lebih permanen, Anda dapat menyimpannya dalam satu (atau lebih) file. Dalam pf.conf
:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Anda juga dapat menambahkan nama host alih-alih alamat IP. Lihat bagian "Tabel" dari man pf.conf
dan man pfctl
.
Catatan : Contoh di atas menganggap bahwa antarmuka yang menghadap internet adalah fxp0
, silakan ubah sesuai pengaturan Anda. Juga, perlu diingat bahwa aturan di pf.conf
dievaluasi secara berurutan dan untuk block
atau pass
aturan itu aturan pencocokan terakhir yang berlaku. Dengan aturan ini
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
dan setelah menambahkan 1.2.3.4 dan 192.168.0.10 ke badhosts
tabel
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
semua lalu lintas dari 1.2.3.4 dan 192.168.0.10 akan diblokir tetapi tuan rumah kedua akan dapat membuat koneksi ke port 80 mesin lain karena pass
aturan cocok dan mengesampingkan block
aturan.