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.
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.1hoặ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
Dockhand - Công cụ quản lý Docker giao diện web cho người mới
Dockhand là một công cụ quản lý Docker có giao diện web hiện đại, dễ sử dụng, rất phù hợp cho người mới bắt đầu và các hệ thống homelab.
Hướng dẫn toàn tập về AWS Identity and Access Management (IAM)
Tìm hiểu từ A-Z về AWS IAM, các thành phần như User, Group, Role, Policy và cách quản lý quyền truy cập trên AWS an toàn, chuẩn xác.
So Sánh Caddy, Nginx và Apache: Đâu Là Lựa Chọn Tốt Nhất Cho Web Server?
Phân tích và so sánh chi tiết ưu, nhược điểm của Caddy, Nginx và Apache. Giúp bạn dễ dàng lựa chọn web server phù hợp nhất cho dự án của mình.