Cài đặt Fail2Ban trên centos 7 hạn chế bruteforce

  • Friday 05/02/2021

Fail2ban là 1 chương trình được viết bằng python nhằm ngăn 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ụ.

Cơ chế hoạt động của Fail2ban

Chương trình Fail2ban sẽ chạy nền dịch vụ và quét file log được chỉ định bởi người dùng hoặc sử dụng mẫu cấu hình mặc định. Sau đó Fail2ban sẽ sử dụng các khuôn mẫu mà Fail2ban quy định để lọc và trích xuất các thông tin cần thiết. Từ những thông tin đó mà Fail2ban sẽ quyết định khoá truy cập IP đang thực hiện hoạt động đáng ngờ, như đăng nhập SSH sai mật khẩu quá nhiều lần,…Về cơ bản thì Fail2ban sẽ tạo ra bộ rule tường lửa iptables để chặn truy cập từ địa chỉ IP đã xác định trong 1 khoảng thời gian nhất định. Như vậy Fail2ban có khả năng giảm thiểu rất nhiều số hoạt động đăng nhập không chính xác vào dịch vụ hệ thống.

Cài đặt Fail2Ban trên CentOS 7

– Để cài đặt Fail2Ban trên CentOS 7, 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

– Mở file /etc/fail2ban/jail.conf  (trước khi chỉnh sửa bạn có thể backup lại 1 này trước để trong quá trình thao tác có bị sai có thể trả lại config ban đầu)

Giải thích cấu hình:
– ignoreip: danh sách các địa chỉ IP mà chúng ta không muốn bị khoá truy cập, có thể coi đây là 1 whitelist địa chỉ IP.
– bantime: khoảng thời gian (giây) mà Fail2ban sẽ khoá truy cập từ địa chỉ (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 thất bại tối đa

Để bảo vệ SSH khỏi Bruteforce các bạn tạo file /etc/fail2ban/jail.d/sshd.local

[sshd]
enabled = true
filter = sshd
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 3600

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

Giải thích cấu hình:

enabled : kích hoạt chức năng cho phép Fail2ban bảo vệ dịch vụ được cấu hình trong section

filter : bạn có thể tìm thấy tên của các mẫu file quy chuẩn hoạt động filter riêng của Fail2ban được cấu hình sẵn trong thư mục ‘/etc/fail2ban/filter.d/*‘. Ta sử dụng tên ‘ssh’, vì nó là alias

– logpath : đường dẫn file log Fail2ban sử dụng để lọc liên tục các thông báo đăng nhập sai.
– maxretry : số lần login thất bại tối đa cho phép.
– bantime : thời gian khoá truy cập từ IP đăng nhập sai quá số lần ‘maxretry’. 3600 giây = 1 giờ. Bạn có thể thay đổi giá trị theo mong muốn.

Khởi động dịch vụ Fail2ban

systemctl enable fail2ban
systemctl start 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