Fail2ban là 1 chương trình được viết bằng python có nhiệm vụ chặn các ip kết nối đến server dựa vào các dấu hiệu nghi ngờ mà ip đó để lại trong file log của hệ thống hoặc dịch vụ. Ví dụ như có quá nhiều lần sử dụng mật khẩu không hợp lệ, truy cập không hợp lệ hoặc các dấu hiệu bất thường khác mà có thể nhận biết được.
Cài đặt Fail2Ban trên CentOS ⅞
Để cài đặt Fail2Ban trên CentOS ⅞, trước tiên chúng ta sẽ phải cài đặt EPEL (Gói bổ sung cho Enterprise Linux). EPEL chứa các gói bổ sung cho tất cả các phiên bản CentOS, một trong những gói bổ sung này là Fail2Ban.
yum -y install epel-release
yum -y install fail2ban fail2ban-systemd
Cấu hình Fail2Ban
Sau khi cài đặt, chúng ta sẽ phải cấu hình và tùy chỉnh Fail2Ban với tệp cấu hình jail.local. Tệp jail.local được sử dụng để cập nhật cấu hình tùy chỉnh cho Fail2Ban.
Đầu tiên hãy tạo một bản sao của tệp jail.conf và lưu nó với tên jail.local:
cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Mở tệp /etc/fail2ban/jail.local để chỉnh sửa. Để dễ dàng hơn trong việc chỉnh sửa tệp tin các bạn có thể login VPS với SFTP
Tiếp theo các bạn sẽ cần tìm và chỉnh sửa các thông số sau
#ignoreip = 127.0.0.1/8 ::1
bantime = 10m
findtime = 10m
maxretry = 5
Trong đó
Ignoreip: Được sử dụng để thiết lập danh sách IP sẽ không bị block. Danh sách các địa chỉ IP được phân cách bởi khoảng trắng (Phím cách). Tham số này được sử dụng để đặt địa chỉ IP cá nhân của bạn (nếu bạn truy cập máy chủ từ một IP tĩnh).
bantime: Khoảng thời gian block một IP
findtime: Khoảng thời gian một IP phải login thành công.
maxretry: Số lần đăng nhập sai tối đa
Nếu bạn không muốn chỉnh sửa các thông số này thì các bạn có thể để nguyên thông số mặc định của Fail2ban và chuyển sang bước tiếp theo
Bảo vệ SSH
Để bảo vệ SSH khỏi Bruteforce các bạn tạo file /etc/fail2ban/jail.d/sshd.local với nội dung như sau
[sshd]
enabled = true
filter = sshd
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400
Lưu ý: Trong trường hợp các bạn đổi port SSH thì các bạn thay đổi dòng port = ssh thành port = port-ssh-của-bạn
Khởi động Fail2ban
Sau khi cấu hình hoàn tất các bạn tiến hành khởi động Fail2ban
systemctl enable fail2ban
systemctl start fail2ban
Xem các IP bị block
Để xem danh sách các IP bị block các bạn chạy lệnh như sau
fail2ban-client status sshd

Mở khoá IP trêb Fail2ban
Để mở khoá một IP các bạn có thể sử dụng lệnh như sau
fail2ban-client set sshd unbanip IP-Bị-Block