Hướng dẫn cài đặt Fail2Ban bảo vệ SSH trên CentOS 6

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 iptable firewall rules để block ngay địa chỉ IP với một khoảng thời gian định trước.

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 Fail2Ban

# nano /etc/fail2ban/jail.conf

Sau khi cài đặt xong, bạn mở file cấu hình của Fail2Ban lên sẽ thấy một số thông số như sau:

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not

# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

Trong đó

  • ignoreip: không block những địa chỉ này
  • bantime: khoảng thời gian (giây) block IP
  • findtime: khoảng thời gian (giây) một IP phải login thành công
  • maxretry: số lần login false tối đa

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

Tạo file cấu hình

# nano /etc/fail2ban/jail.local

Và sử dụng nội dung sau:

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 file cấu hình /etc/fail2ban/filter.d/sshd.conf
  • action: fail2ban sẽ ban địa chỉ IP nếu match filter /etc/fail2ban/action.d/iptables.conf. Nếu bạn đã thay đổi port ssh, sửa đoạn port=ssh bằng port mới, ví dụ port=2222
  • logpath: đường dẫn file log fail2ban sử dụng để theo dõi
  • maxretry: số lần login false tối đa

Khởi động Service Fail2Ban

# chkconfig --level 23 fail2ban on
# service fail2ban start

Cuối cùng check lại iptables xem đã có rule của Fail2Ban chưa:

# iptables -L

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

Kết quả thường sẽ là như bên dưới, đã từng có rất nhiều đợt tấn công:

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

# fail2ban-client status ssh-iptables

Output trả về sẽ có dạng như thế này:

Status for the jail: ssh-iptables
|- Filter
| |- Currently failed: 1
| |- Total failed: 6
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 116.***.***.147(ip bị banned)

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

# fail2ban-client set ssh-iptables unbanip 116.***.***.147(ip muốn xóa khỏi danh sách banned)

Hi vọng với Fail2Ban, chúng ta sẽ ngăn chặn được các cuộc tấn công sơ bộ vào SSH, hẹn gặp lại các bạn trong các bài tiếp theo, chúc các bạn thành công.