วิธีที่ดีที่สุดในการทำเช่นนี้คือการกำหนดตารางและสร้างกฎเพื่อบล็อกโฮสต์ใน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
และหลังจากเพิ่ม 1.2.3.4 และ 192.168.0.10 ไปยังbadhosts
ตาราง
$ 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
กฎ