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:
[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 = 3Trong đó:
- 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 Fail2ban jail.local bảo vệ SSH
Tạo file cấu hình trong:/etc/fail2ban/jail.local
Với nội dung:
[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 = 3600Hoặ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
systemctl start fail2ban systemctl enable fail2banChú ý: 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 anywhereTheo 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 -cXem IP nào đã bị banned bởi Fail2Ban bạn sử dụng lệnh:
fail2ban-client status sshdOutput 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.41Trê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

