Cách tốt nhất để làm điều này là xác định bảng và tạo quy tắc để chặn máy chủ, trong pf.conf
:
table <badhosts> persist
block on fxp0 from <badhosts> to any
Và sau đó tự động thêm / xóa địa chỉ IP khỏi nó:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Các lệnh 'bảng' khác bao gồm flush
(xóa tất cả) replace
và show
. Xem man pfctl
để biết thêm.
Nếu bạn muốn một danh sách lâu dài hơn, bạn có thể giữ nó trong một (hoặc nhiều) tệp. Trong pf.conf
:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Bạn cũng có thể thêm tên máy chủ thay vì địa chỉ IP. Xem phần "Bảng" của man pf.conf
và man pfctl
.
Lưu ý : Các ví dụ trên giả định rằng giao diện truy cập internet là fxp0
, vui lòng thay đổi theo thiết lập của bạn. Ngoài ra, hãy nhớ rằng các quy tắc trong pf.conf
được đánh giá tuần tự và cho block
hoặc pass
quy tắc quy tắc phù hợp cuối cùng áp dụng. Với quy tắc này
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
và sau khi thêm 1.2.3.4 và 192.168.0.10 vào badhosts
bảng
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
tất cả lưu lượng truy cập từ 1.2.3.4 và 192.168.0.10 sẽ bị chặn nhưng máy chủ thứ hai sẽ có thể thực hiện kết nối với cổng 80 của các máy khác vì pass
quy tắc khớp và ghi đè block
quy tắc.