Fail2Ban là một ứng dụng chạy nền theo dõi log file để phát hiện những địa chỉ IP đăng nhập sai password SSH nhiều lần. Sau đó, Fail2Ban sử dụng IPtables để block ngay địa chỉ IP với một khoảng thời gian định trước.

Hướng dẫn cài đặt và cấu hình Fail2Ban bảo vệ SSH trên CentOS

Cài đặt Fail2Ban

Chúng ta sẽ cài đặt Fail2Ban thông qua Repo EPEL.

yum -y install epel-release
yum -y install fail2ban

Cấu hình mặc định của Fail2Ban khá là ổn rồi, chúng ta không cần thiết phải cập nhật mà đến bước tiếp theo.

Cấu hình Fail2Ban bảo vệ SSH

Cấu hình mặc định ở tập tin /etc/fail2ban/jail.conf cũng đã khá tốt, cho nên không cần chỉnh sửa tại đây cũng được.

Tạo tập tin cấu hình /etc/fail2ban/jail.local.

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 3600

Khởi động Fail2Ban

systemctl start fail2ban
systemctl enable fail2ban

Cuối cùng kiểm tra lại lại Iptables xem đã có rule của Fail2Ban chưa:

iptables -L

Kết quả như sau là được.

Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

Nếu muốn khởi động lại Fail2Ban, dùng lệnh sau.

systemctl restart fail2ban

Theo dõi SSH login

– Bạn có thể sử dụng lệnh sau để biết được VPS/Server đã từng bị tấn công SSH chưa:

cat /var/log/secure | grep 'Failed password' | sort | uniq -c

– Để xem IP đã bị banned bởi Fail2Ban bạn sử dụng lệnh:

fail2ban-client status sshd

– Để xóa IP khỏi danh sách banned, bạn sử dụng lệnh sau

fail2ban-client set sshd unbanip 1.2.3.4

Chúc các bạn thành công!

Tham khảo: Học VPS.