Cài đặt Fail2Ban trên CentOS 7 chống bruteforce attack

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 7

Bước 1: 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

Bước 2: 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ước 3: 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

Bước 3: Chống bruteforce attack WordPress

Nếu bạn đang sử dụng website WordPress bạn có thể dùng Fail2ban để chống tấn công bruteforce (Dò mật khẩu) cho website của bạn.

Đầu tiên các bạn cần tạo filter cho Fail2ban bằng cách tạo file /etc/fail2ban/filter.d/wordpress.conf với nội dung sau

[Definition]
failregex = ^<HOST> .* "POST .*wp-login.php
            ^<HOST> .* "POST .*xmlrpc.php
ignoreregex =

Tiếp theo các bạn tạo file /etc/fail2ban/jail.d/wordpress.local với nội dung như sau

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/*.log
	/var/log/httpd/access_log
maxretry = 5
findtime = 10m
bantime = 60m
  • Lưu ý: Cần chỉnh sửa logpath phù hợp với cấu hình log webserver trên VPS của các bạn.

Bước 4: 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

Hoặc

fail2ban-client status wordpress

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

Hoặc

fail2ban-client set wordpress unbanip IP-Bị-Block

Như vậy mình đã hướng dẫn các bạn cài đặt và cấu hình Fail2ban trên Centos 7 và cách cấu hình chống bruteforce attack cho SSH và WordPress. Chúc bạn thành công.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận