SSH trên VPS public gần như chắc chắn sẽ bị bot quét. Có ngày bạn chưa làm gì đặc biệt, log đã đầy các dòng thử đăng nhập root, admin, test, ubuntu. Fail2Ban không làm VPS “bất khả xâm phạm”, nhưng nó giúp giảm kiểu tấn công lì lợm này.
Tôi thích xem Fail2Ban như một người gác cửa kiên nhẫn: ai thử sai quá nhiều lần trong một khoảng thời gian ngắn thì bị mời ra ngoài một lúc.
Fail2Ban là gì và chống brute force SSH như thế nào?
Fail2Ban theo dõi log dịch vụ, tìm các mẫu đăng nhập sai, rồi tự động thêm rule firewall để chặn IP vi phạm. Với SSH, nó thường nhìn vào log xác thực của Ubuntu để phát hiện các lần đăng nhập thất bại.
Công cụ này phù hợp với VPS Linux public, nhất là khi bạn chưa có nhiều lớp bảo vệ khác. Nếu bạn mới tìm hiểu nền tảng, hãy đọc thêm VPS Linux là gì để hiểu vì sao Linux server thường cần tự cấu hình bảo mật.

Khi nào bạn nên cài Fail2Ban trên VPS?
Nên cài Fail2Ban khi VPS có SSH mở ra Internet, đặc biệt nếu bạn dùng port mặc định hoặc chưa giới hạn IP đăng nhập. Nó cũng hữu ích khi bạn vận hành website cho khách hàng và không muốn log SSH bị spam liên tục bởi bot.
Dù vậy, Fail2Ban không phải lý do để giữ mật khẩu yếu. Bộ nền an toàn vẫn nên gồm SSH key, user sudo riêng, tắt đăng nhập root nếu phù hợp, firewall gọn và backup định kỳ. Fail2Ban chỉ là một lớp trong hệ thống đó.
Cách cài Fail2Ban trên Ubuntu ra sao?
Trên Ubuntu, cách cài khá ngắn. Sau khi cài, bạn nên tạo file cấu hình riêng trong jail.d thay vì sửa trực tiếp file mặc định.
sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban --no-pager
Tạo file cấu hình cho SSH:
sudo nano /etc/fail2ban/jail.d/sshd.local
Nội dung mẫu:
[sshd]
enabled = true
port = ssh
filter = sshd
maxretry = 5
findtime = 10m
bantime = 1h
Nếu SSH của bạn dùng port riêng, thay port = ssh bằng port thực tế, ví dụ port = 2222.
Các thông số maxretry, findtime, bantime nghĩa là gì?
Ba thông số này quyết định Fail2Ban có chặn mạnh hay không. Người mới thường copy cấu hình mà không hiểu, dẫn đến hai cực: quá lỏng thì không có tác dụng, quá chặt thì dễ tự ban khi gõ sai mật khẩu vài lần.

| Thông số | Ý nghĩa | Gợi ý ban đầu |
|---|---|---|
| maxretry | Số lần sai tối đa | 5 |
| findtime | Khoảng thời gian tính lỗi | 10 phút |
| bantime | Thời gian chặn IP | 1 giờ |
| jail | Nhóm luật cho từng dịch vụ | sshd cho SSH |
Làm sao kiểm tra Fail2Ban đang hoạt động?
Sau khi lưu cấu hình, restart Fail2Ban và kiểm tra jail SSH:
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd
Nếu jail sshd xuất hiện và có thông tin Currently banned, Total failed, dịch vụ đang đọc log. Nếu không thấy gì, kiểm tra lại tên dịch vụ SSH, log backend, và port.
Bạn cũng có thể xem log:
sudo journalctl -u fail2ban --no-pager -n 80
Nên cấu hình Fail2Ban mạnh đến mức nào?
Với VPS mới, tôi thường bắt đầu vừa phải. Chặn 1 giờ sau 5 lần sai trong 10 phút đã đủ giảm nhiều bot phổ thông. Sau vài ngày theo dõi log, bạn mới quyết định có tăng bantime hay thêm jail khác không.
Nếu VPS phục vụ website quan trọng, đừng chỉ dựa vào Fail2Ban. Hãy xem lại cấu hình VPS, tài nguyên và vị trí server. Bài cách chọn cấu hình VPS và thuê VPS Việt Nam sẽ giúp bạn cân bằng giữa hiệu năng, độ trễ và vận hành.
Nếu bị ban nhầm IP thì xử lý thế nào?
Nếu bạn lỡ bị chặn, cách gỡ là chạy từ một phiên còn truy cập được hoặc qua console của nhà cung cấp VPS:
sudo fail2ban-client set sshd unbanip 203.0.113.10
Đây là lý do tôi luôn giữ một phiên SSH cũ khi thử cấu hình bảo mật. Với các thay đổi có nguy cơ tự khóa, hãy kiểm tra bằng phiên mới trước khi thoát.
Câu hỏi thường gặp về Fail2Ban trên Ubuntu VPS
Fail2Ban có thay thế SSH key không?
Không. SSH key vẫn là lớp xác thực mạnh hơn mật khẩu. Fail2Ban chỉ giúp giảm số lần thử sai từ cùng một IP và làm brute force tốn kém hơn.
Cài Fail2Ban có làm nặng VPS không?
Thông thường không đáng kể với VPS nhỏ. Fail2Ban chủ yếu đọc log và thêm rule chặn khi cần. Với VPS 1GB RAM vẫn có thể dùng nếu cấu hình jail vừa phải.
Nên đặt bantime bao lâu?
Với VPS cá nhân hoặc website nhỏ, 10 phút đến 1 giờ là mức dễ bắt đầu. Nếu bị tấn công nhiều, bạn có thể tăng dần nhưng nên tránh cấu hình quá cực đoan khi chưa theo dõi log.
Fail2Ban có hoạt động với Ubuntu 24.04 không?
Có, nhưng tên log backend có thể khác tùy hệ thống dùng systemd journal hay file auth.log. Nếu jail không bắt lỗi, hãy kiểm tra logpath/backend và trạng thái dịch vụ sshd.
Làm sao gỡ ban nhầm IP của mình?
Bạn có thể dùng fail2ban-client set sshd unbanip <IP>. Trước khi cấu hình mạnh tay, nên giữ một phiên SSH dự phòng để tránh tự khóa mình.

