Cài đặt Fail2ban bảo vệ VPS/Server khỏi tấn công dò mật khẩu SSH

Nếu bạn muốn sử dụng để đăng nhập bằng pasword ssh thì cài cho an tâm, với mình thì không nên cài mà tắt login bằng password root là ok. Login bằng key ssh an toàn hơn => không phải cài thêm, tốn dung lượng, tốn ram chi cho mệt

Fail2ban là gì?
Fail2ban là 1 chương trình được viết bằng python, có nhiệm vụ theo dõi các file log của Server và phát hiện những IP đăng nhập có dấu hiệu bất thường, đồng thời ngăn chặn các IP đó theo một quy tắc do người dùng quy định.
IP đăng nhập bất thường là những trường hợp như nhập sai password SSH nhiều lần, khi phát hiện Fail2ban sẽ block những IP đó bằng tường lửa iptable.

Cài đặt Fail2ban.
Bạn xài VPSSIM& HOCVPS chắc cũng cần phải cài đó, Mình trải nghiệm VPSSIM + CSF Firewall mà nhìn hầu như ko có tác dụng. Có lẽ ko đúng mục đích cuả mình. Với Fail2ban thì nó chặn các login fail, bị tấn công VPS Server thì nó làm việc râts tốt.

Mặc định trong gói repo epel đã có sẵn Fail2ban mới nhất. Ta tiến hành cài đặt Fail2ban như sau (Trên CentOS):

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

Sau khi cài đặt, file cấu hình của Fail2ban nằm tại vị trí: nano /etc/fail2ban/jail.conf

Mở lên có nội dung:

# "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, thường địa chỉ IP ở VN là địa chỉ động, nên chúng ta không sử dụng được option 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 đã khá ok, ta không cần chỉnh sửa gì thêm và chuyển sang bước cấu hình bảo vệ SSH.

Cấu hình Fail2ban jail.local bảo vệ SSH
Tạo file cấu hình trong: /etc/fail2ban/jail.local
Với nội dung:

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

 

Hoặc bạn có thể copy file cấu hình mặc định và đổi tên thành file jail.local như sau:

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/jail.local

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
  • bantime: thời gian ban IP 3600 giây = 1 giờ, bạn có thể điều chỉnh lại nếu muốn

Khởi động Service Fail2ban

chkconfig –level 23 fail2ban on
service fail2ban start

systemctl start fail2ban
systemctl enable fail2ban

Chú ý: Nếu gặp thông báo: “no directory /var/run/fail2ban to contain the socket file /var/run/fail2ban/fail2ban.sock” thì có nghĩa bạn cần phải tạo thư mục cho fail2ban thủ công như sau:

mkdir /var/run/fail2ban

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

iptables -L

Nếu thấy có bản ghi f2b-SSH như này là ok

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

Theo dõi SSH login

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 nào đã bị banned bởi Fail2Ban bạn sử dụng lệnh:

fail2ban-client status sshd

Output có dạng:

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 3
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 103.207.68.41

Để xóa IP khỏi danh sách banned, bạn sử dụng lệnh sau:
fail2ban-client set sshd unbanip 103.207.68.41

Trên đây là một số câu lệnh cài đặt, cấu hình fail2ban và quản lý IP baned. Cài đặt Fail2ban trên CentOS 7, 8 cập nhật 10/2019. Bảo vệ SSH trước tấn công dò mật khẩu.

Tham khảo thêm một số tuỳ chọn khác như gửi email thông báo, tạo danh sách IP trắng… tại đây:n www.linode.com

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

*