Làm cách nào để xóa tất cả các lệnh fail2ban trong Ubuntu? Tôi đã thử mọi cách nhưng tôi không nhận được.
Tôi chỉ muốn xóa tất cả các lệnh cấm - nhưng tôi không biết bất kỳ địa chỉ IP nào.
Làm cách nào để xóa tất cả các lệnh fail2ban trong Ubuntu? Tôi đã thử mọi cách nhưng tôi không nhận được.
Tôi chỉ muốn xóa tất cả các lệnh cấm - nhưng tôi không biết bất kỳ địa chỉ IP nào.
Câu trả lời:
Kể từ phiên bản 0.10.0 fail2ban-client
, unban
lệnh có thể được sử dụng theo hai cách:
unban --all unbans all IP addresses (in all
jails and database)
unban <IP> ... <IP> unbans <IP> (in all jails and
database)
Hơn nữa, các restart <JAIL>
, reload <JAIL>
và reload
lệnh bây giờ cũng có --unban
tùy chọn.
fail2ban sử dụng iptables
để chặn lưu lượng. Nếu bạn muốn xem các địa chỉ IP hiện đang bị chặn, hãy nhập
iptables -L -n
và tìm kiếm các chuỗi khác nhau được đặt tên fail2ban-something
, trong đó something
trỏ đến nhà tù fail2ban (ví dụ, Chain f2b-sshd
đề cập đến nhà tù sshd
). Nếu bạn chỉ muốn xóa khối cho một địa chỉ IP duy nhất <IP>
cho một nhà tù nhất định<JAIL>
, fail2ban cung cấp ứng dụng khách của riêng nó:
fail2ban-client set <JAIL> unbanip <IP>
Ngoài ra, bạn có thể sử dụng số dòng. Đầu tiên, liệt kêiptables
quy tắc với số dòng:
iptables -L -n --line-numbers
Tiếp theo bạn có thể sử dụng
iptables -D fail2ban-somejail <linenumber>
để loại bỏ một dòng duy nhất từ bảng. Theo tôi biết, không có tùy chọn để chọn một phạm vi số dòng, vì vậy tôi đoán bạn sẽ phải bọc lệnh này trong một vòng lặp for:
for lin in {200..1}; do
iptables -D fail2ban-somejail $lin
done
Ở đây tôi đã làm số 200 lên. Kiểm tra đầu ra của riêng bạn với lệnh --line-numbers
và lưu ý rằng dòng cuối cùng (với RETURN
) sẽ ở lại. Xem bình luận của @ roaima dưới đây để biết lý do đằng sau việc đếm ngược.
echo {5..1}
sẽ dẫn đến 5 4 3 2 1
.
Cách tốt nhất để bỏ chặn tất cả các IP, là đặt thời gian chờ thành 1 giây, sau đó tất cả IP sẽ được giải phóng ngay lập tức.
fail2ban-client set JailName bantime 1
Sau đó, bạn có thể thiết lập thời gian cấm thích hợp trở lại.
Tốt hơn là để fail2ban thực hiện unban cho bạn. Đừng tự chỉnh sửa iptables.
fail2ban-client status
Mới nhất fail2ban-client
(0.10) có unban -all
lệnh. Nhà tù cũng có thể được "khởi động lại" riêng lẻ, xóa hiệu quả các lệnh cấm.
Nếu bạn có phiên bản cũ hơn, thủ thuật này có thể hoạt động đối với các lệnh cấm tạm thời tự động: xóa nhà tù chứa lệnh cấm sau đó khởi động lại fail2ban để nhà tù (hiện trống) sẽ được tạo lại.
$ fail2ban-client stop sshd
Jail stopped
$ systemctl restart fail2ban
Lưu cấu hình iptable vào tập tin
$ iptables-save > iptables.conf
Chỉnh sửa nó với bất kỳ trình chỉnh sửa nào bạn thích Than load config trở lại iptables
$ iptables-restore < iptables.conf
Đừng quên lưu trữ cấu hình bên trong iptables để nó sẽ được chọn khi khởi động lại
$ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Đây là một oneliner đơn giản để unban toàn bộ nhà tù fail2ban theo cách thích hợp:
iptables -L f2b-recidive -n | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 0.0.0.0 | xargs -n 1 fail2ban-client set recidive unbanip
LƯU Ý: Lệnh iptables lấy tiền tố "f2b-" trước tên tù trong khi "fail2ban-client" tên tù thực sự
Do cách fail2ban
làm việc, chỉ có hai giải pháp khả thi:
fail2ban
nhà tù và khởi động lại tường lửa.Đây là tập lệnh tôi đang sử dụng để bỏ chặn tất cả các địa chỉ IP cho một ssh jail (chỉ cần thay thế sự xuất hiện của sshd bằng tên của nhà tù mà bạn cần ... ví dụ: mysqld-auth)
#!/bin/bash
j=$(iptables -L f2b-sshd | grep -c 'REJECT')
for ((i=1;i<=j;i++))
do
fail2ban-client set sshd unbanip $(fail2ban-client status sshd | grep 'Banned IP list:' | cut -c23-)
done