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 |
- 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:
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, [email protected]] logpath = /var/log/secure maxretry = 3 bantime = 3600 |
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 |
1 |
cat /var/log/secure | grep 'Failed password' | sort | uniq -c |
1 |
fail2ban-client status sshd |
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 |
1 |
fail2ban-client set sshd unbanip 103.207.68.41 |
UpForShare.com biên soạn