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

  • Friday 05/02/2021

Đây 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 chống bruteforce của Fail2ban

Chương trình này sẽ chạy nền 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 đó nó 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à ứng dụng 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ì ứng dụng 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 ứng dụng này trên hệ điều hành 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. Bạn có thể chạy câu lệnh sau để cài đặt.

yum -y install epel-release
yum -y install fail2ban fail2ban-systemd

Thiết lập cấu hình

– 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)

Fail2Ban

Giải thích cấu hình ứng dụng:
– 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 muốn bỏ qua.
– bantime: khoảng thời gian (giây) mà ứng dụng 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 cho phép login thất bại tối đa

Để bảo vệ SSH khỏi tấn công 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  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 : là đường dẫn chứa file log ứng dụng  sử dụng để ghi nhận lại liên tục các thông báo đăng nhập sai.
– maxretry : là số lần đăng nhập 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ụ

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

Bạn có thể tham khảo thêm về iptable để nâng cao bảo mật VPS tại đây

Bạn có thể tham khảo đăng ký dịch vụ VPS P.A tại đây

Rate this post