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 install epel-release
yum 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ập nhật nội dung tập tin /etc/fail2ban/jail.local như sau.

[sshd]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=root, [email protected]]
logpath  = /var/log/secure
maxretry = 3
bantime = 3600

Trong đó

  • enabled: kích hoạt bảo vệ, nếu muốn tắt bạn hãy chuyển thành false.
  • filter: giữ mặc định để sử dụng tập tin cấu hình /etc/fail2ban/filter.d/sshd.conf.
  • action: Fail2Ban sẽ khóa địa chỉ IP nếu đúng /etc/fail2ban/action.d/iptables.conf.
  • logpath: đường dẫn tập tin log sử dụng để theo dõi.
  • maxretry: số lần đăng nhập sai tối đa.
  • bantime: thời gian khóa IP, 3600 giây = 1 giờ, bạn có thể điều chỉnh lại nếu muốn.

Khởi động Fail2Ban

hkconfig --level 23 fail2ban on
service fail2ban start

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

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.