Hướng Dẫn Cài Đặt Và Cấu Hình Fail2Ban Trên Ubuntu

Hướng dẫn chi tiết cách cài đặt và cấu hình Fail2Ban trên hệ điều hành Ubuntu giúp bảo vệ máy chủ Linux khỏi các cuộc tấn công Brute-force nguy hiểm.

Hướng Dẫn Cài Đặt Và Cấu Hình Fail2Ban Trên Ubuntu

Fail2Ban là một trong những hệ thống phát hiện và ngăn chặn xâm nhập (Intrusion Detection System) phổ biến nhất trên Linux. Công cụ này hoạt động bằng cách liên tục quét các tệp nhật ký (log files) để tìm kiếm các dấu hiệu bất thường như đăng nhập thất bại quá nhiều lần (tấn công Brute-force). Khi phát hiện, Fail2Ban sẽ tự động cập nhật quy tắc tường lửa để khóa (ban) địa chỉ IP của kẻ tấn công.

Bài viết này sẽ hướng dẫn bạn từng bước cài đặt và thiết lập cấu hình Fail2Ban trên Ubuntu.

1. Cài Đặt Fail2Ban

Để cài đặt Fail2Ban trên Ubuntu, bạn chỉ cần chạy lệnh đơn giản sau dưới quyền root hoặc dùng sudo:

apt -y install fail2ban

Lưu ý đối với Ubuntu 24.04: Phiên bản Fail2Ban có sẵn trong đợt phát hành đầu tiên của Ubuntu 24.04 sử dụng một module Python đã lỗi thời và có thể không khởi động được. Do đó, hãy đảm bảo bạn cập nhật gói này lên phiên bản 1.0.2-3ubuntu0.1 hoặc mới hơn.

2. Cấu Hình Cơ Bản Cho Fail2Ban

Cấu hình mặc định của Fail2Ban nằm ở tệp /etc/fail2ban/jail.conf. Tuy nhiên, bạn không nên chỉnh sửa trực tiếp vào file này, vì nó có thể bị ghi đè khi cập nhật phần mềm. Thay vào đó, hãy tạo một file mới mang tên jail.local để ghi đè các cấu hình cần thiết.

Tạo và chỉnh sửa file jail.local:

vi /etc/fail2ban/jail.local

Thêm các thông số sau vào file:

[DEFAULT]
# Khai báo các IP an toàn không bao giờ bị khóa (Whitelist). Phân cách bằng dấu cách.
ignoreip = 127.0.0.1/8 ::1

# Thời gian một IP bị khóa (ban). Các hậu tố: m (phút), h (giờ), d (ngày), mo (tháng), y (năm).
bantime  = 1d

# Khoảng thời gian theo dõi số lần đăng nhập sai (findtime)
findtime  = 5m

# Số lần đăng nhập sai tối đa (maxretry) trước khi bị khóa
maxretry = 5

# Cấu hình email nhận thông báo khi có IP bị khóa
destemail = root@localhost

# Cấu hình email gửi thông báo
sender = [email protected]

Với cấu hình trên: Nếu một ai đó đăng nhập sai 5 lần (maxretry) trong khoảng thời gian 5 phút (findtime), IP của người đó sẽ bị khóa trong vòng 1 ngày (bantime).

Sau khi lưu cấu hình, khởi động lại Fail2Ban để áp dụng:

systemctl restart fail2ban

3. Theo Dõi Và Quản Lý Dịch Vụ SSH

Mặc định, Fail2Ban sẽ tự động bật bảo vệ cho dịch vụ SSH. Bạn có thể kiểm tra trạng thái chung bằng lệnh:

fail2ban-client status

Output tham khảo sẽ hiện: Jail list: sshd

Bạn có thể thay đổi cấu hình riêng cho sshd bằng cách sửa tệp /etc/fail2ban/jail.d/defaults-debian.conf. (Ví dụ thay đổi bantime, maxretry hoặc thiết lập gửi email thông báo với hành động action = %(action_mw)s).

Để xem thông tin chi tiết về các IP đang bị khóa của dịch vụ SSH:

fail2ban-client status sshd

Output tham khảo nếu có IP bị khóa:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   10.0.0.203

Thực chất Fail2Ban sử dụng cấu hình tường lửa (như nftables hoặc iptables) để khóa IP. Bạn có thể xem rule tường lửa thực tế mà Fail2Ban vừa thêm vào:

nft list ruleset

4. Hướng Dẫn Khóa/Mở Khóa IP Thủ Công

Nếu bạn muốn quản lý linh hoạt, Fail2Ban cung cấp các lệnh để gỡ bỏ (unban) hoặc thêm trực tiếp (ban) một IP vào danh sách đen.

Mở khóa (Unban) một địa chỉ IP (Ví dụ IP 10.0.0.203):

fail2ban-client set sshd unbanip 10.0.0.203

Khóa (Ban) thủ công một dải IP (Ví dụ dải 10.0.0.192/28):

fail2ban-client set sshd banip 10.0.0.192/28

Mở khóa toàn bộ IP đang bị cấm:

fail2ban-client unban --all

5. Mở Rộng Bảo Vệ Cho Các Dịch Vụ Khác (Apache, Vsftpd, Postfix…)

Fail2Ban không chỉ bảo vệ SSH mà còn có rất nhiều “Jails” (Khu vực giam giữ) được thiết lập sẵn cho các dịch vụ khác. Bạn có thể xem danh sách các dịch vụ hỗ trợ bằng lệnh:

grep '^\[' /etc/fail2ban/jail.conf | tail -n +3

Để kích hoạt bảo vệ cho một dịch vụ, hãy tạo file .conf tương ứng trong thư mục /etc/fail2ban/jail.d/.

Ví dụ 1: Bảo vệ bảo mật xác thực Apache2 (Apache Basic Auth)

vi /etc/fail2ban/jail.d/apache-auth.conf

Nội dung file:

[apache-auth]
enabled = true
backend = auto
bantime  = 600
findtime  = 3m
maxretry = 5
action = %(action_mw)s

Ví dụ 2: Bảo vệ máy chủ FTP Vsftpd

vi /etc/fail2ban/jail.d/vsftpd.conf

Nội dung file:

[vsftpd]
enabled = true
backend = systemd
journalmatch = _SYSTEMD_UNIT=vsftpd.service
action = %(action_mw)s

Ví dụ 3: Bảo vệ Postfix SASL

vi /etc/fail2ban/jail.d/postfix-sasl.conf

Nội dung file:

[postfix-sasl]
enabled = true
backend = auto
action = %(action_mw)s

Sau khi cấu hình xong các dịch vụ, hãy reload lại Fail2Ban để áp dụng thiết lập:

systemctl reload fail2ban

Bạn có thể kiểm tra trạng thái tổng quát để xem các Jails đã hoạt động chưa:

fail2ban-client status

Output tham khảo: Jail list: apache-auth, postfix-sasl, sshd, vsftpd


Việc triển khai Fail2Ban là một bước bắt buộc để nâng cao bảo mật hệ thống Linux của bạn. Cảm ơn bạn đã theo dõi bài viết, chúc bạn thao tác thành công và bảo vệ máy chủ một cách an toàn nhất!

Bình luận

Bài viết liên quan