Kính thưa các bạn. Nằm trong số các biện pháp nhằm bảo vệ VPS/Server Linux khỏi các vụ tấn công ác ý. Việc phòng chống, ngăn chặn tấn công dò tìm mật khẩu đăng nhập SSH là điều rất quan trọng. Cài đặt Fail2ban sẽ là một công cụ hỗ trợ bảo mật tuyệt vời.
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.
Ghé thăm: trang chủ Fail2ban.
Cài đặt Fail2ban
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 fail2ban -y
Sau khi cài đặt, file cấu hình của Fail2ban nằm tại vị trí:
/etc/fail2ban/jail.conf
Mở lên có nội dung:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [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, 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:
1 2 3 4 5 6 7 8 9 | [sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] # sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] logpath = /var/log/secure maxretry = 3 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
1 2 | systemctl start fail2ban systemctl enable fail2ban |
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
1 2 3 | 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:
1 | 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:
1 | fail2ban-client status sshd |
Output có dạng:
1 2 3 4 5 6 7 8 9 | 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:
1 | 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. 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:
https://www.linode.com/docs/security/using-fail2ban-for-security/
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: Truyện cười vô va
UpForShare.com biên soạn