Fail2Ban là một công cụ bảo mật mạnh mẽ, giúp bảo vệ máy chủ Linux khỏi các cuộc tấn công brute-force bằng cách giám sát các tệp log (như /var/log/auth.log) và tự động chặn các địa chỉ IP có quá nhiều lần thử đăng nhập thất bại. Dưới đây là hướng dẫn cài đặt và cấu hình Fail2Ban để bảo vệ SSH trên Ubuntu (các bước tương tự có thể áp dụng cho các bản phân phối Linux khác như Debian, CentOS, v.v.).
Đảm bảo hệ thống của bạn được cập nhật để cài đặt phiên bản mới nhất của Fail2Ban:
sudo apt update
sudo apt upgrade -y- Trên Ubuntu/Debian:
sudo apt install fail2ban -y
- Trên CentOS/RHEL:
sudo yum install epel-release -y sudo yum install fail2ban -y
- Trên Fedora:
sudo dnf install fail2ban -y
Sau khi cài đặt, kích hoạt Fail2Ban để chạy tự động khi khởi động và khởi động dịch vụ:
sudo systemctl enable fail2ban
sudo systemctl start fail2banXác nhận Fail2Ban đang chạy:
sudo systemctl status fail2banFail2Ban sử dụng các "jail" (bộ quy tắc) để giám sát và chặn các dịch vụ. Mặc định, nó đã có jail cho SSH (gọi là sshd).
File cấu hình chính của Fail2Ban là /etc/fail2ban/jail.conf. Không nên chỉnh sửa trực tiếp file này vì nó có thể bị ghi đè khi cập nhật. Thay vào đó, tạo file jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localMở file jail.local bằng trình soạn thảo (như nano):
sudo nano /etc/fail2ban/jail.localTìm phần [sshd] (thường đã được kích hoạt mặc định) và điều chỉnh các thông số nếu cần. Ví dụ:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600
ignoreip = 127.0.0.1- Giải thích các thông số:
enabled = true: Kích hoạt jail cho SSH.port = ssh: Cổng SSH (mặc định là 22, nếu bạn đổi cổng SSH, thay đổi giá trị này, ví dụ:port = 2222).filter = sshd: Sử dụng bộ lọc mặc định cho SSH (định nghĩa trong/etc/fail2ban/filter.d/sshd.conf).logpath = /var/log/auth.log: Đường dẫn đến file log của SSH (trên CentOS có thể là/var/log/secure).maxretry = 3: Số lần thử đăng nhập thất bại trước khi bị chặn.findtime = 600: Thời gian (giây) để đếm số lần thử thất bại (600 giây = 10 phút).bantime = 3600: Thời gian chặn IP (giây, 3600 = 1 giờ).ignoreip = 127.0.0.1: Danh sách IP không bị chặn (thêm IP của bạn nếu cần, cách nhau bằng dấu cách).
Lưu file và thoát (Ctrl+O, Enter, Ctrl+X trong nano).
Áp dụng cấu hình mới:
sudo systemctl restart fail2ban-
Kiểm tra trạng thái jail:
sudo fail2ban-client status
Kết quả sẽ hiển thị danh sách các jail đang hoạt động, ví dụ:
sshd. -
Kiểm tra chi tiết jail SSH:
sudo fail2ban-client status sshd
Kết quả sẽ cho thấy số lần thất bại, danh sách IP bị chặn, v.v.
-
Bỏ chặn IP (nếu cần): Nếu bạn vô tình bị chặn, bỏ chặn IP bằng lệnh:
sudo fail2ban-client set sshd unbanip <IP_ADDRESS>
Thay
<IP_ADDRESS>bằng địa chỉ IP cần bỏ chặn, ví dụ:192.168.1.100. -
Xem log Fail2Ban: Kiểm tra log để xem hoạt động chặn:
sudo cat /var/log/fail2ban.log
- Thay đổi cổng SSH: Nếu bạn đã đổi cổng SSH (không phải 22), đảm bảo cập nhật
porttrong filejail.local. - Tường lửa: Fail2Ban thường dùng
iptablesđể chặn IP. Đảm bảo tường lửa của bạn (như UFW, firewalld) không xung đột. Nếu dùng UFW, cho phép cổng SSH:sudo ufw allow 22/tcp sudo ufw reload
- Bảo mật bổ sung: Kết hợp Fail2Ban với:
- Xác thực khóa công khai (public key) thay vì mật khẩu.
- Đổi cổng SSH để giảm lượt quét tự động.
- Cập nhật hệ thống thường xuyên.
Sau khi cài đặt và cấu hình, Fail2Ban sẽ tự động giám sát các lần đăng nhập SSH thất bại và chặn IP độc hại, giúp bảo vệ máy chủ của bạn khỏi tấn công brute-force. Nếu bạn cần bảo vệ các dịch vụ khác (như Apache, Nginx), có thể thêm các jail tương ứng trong /etc/fail2ban/jail.local.
Nếu bạn gặp vấn đề, chia sẻ lỗi hoặc cấu hình hiện tại (như nội dung file jail.local) để tôi hỗ trợ thêm!