Hướng Dẫn Cài Đặt Fail2Ban Trên Linux Bảo Vệ SSH
Hướng dẫn cài đặt Fail2Ban trên Ubuntu, Debian, AlmaLinux, Rocky Linux và CentOS. Cấu hình Fail2Ban giúp tự động phát hiện, chặn IP dò mật khẩu và bảo vệ SSH khỏi tấn công brute force.
Trong quá trình kiểm tra log SSH trên VPS Linux, bạn phát hiện nhiều địa chỉ IP lạ liên tục đăng nhập vào tài khoản root. Như hình minh họa bên dưới, chỉ trong thời gian ngắn đã xuất hiện hàng loạt dòng Failed password từ nhiều địa chỉ IP khác nhau. Đây là dấu hiệu phổ biến của các bot Internet đang thực hiện Brute Force SSH nhằm dò mật khẩu máy chủ.
Việc cài đặt Fail2Ban trên Linux giúp VPS tự động phát hiện và chặn các địa chỉ IP liên tục thử đăng nhập SSH bằng mật khẩu sai.

Hôm nay, VPSTTT sẽ hướng dẫn bạn cách cài đặt Fail2Ban trên Linux để tự động phát hiện và chặn những địa chỉ IP đang spam kết nối hoặc đăng nhập SSH sai quá nhiều lần. Bài viết sẽ hướng dẫn cài đặt Fail2Ban trên hai nhóm hệ điều hành Linux phổ biến gồm Ubuntu/Debian và CentOS Stream/RHEL/AlmaLinux/Rocky Linux. Các bước được trình bày chi tiết để người mới cũng có thể kiểm tra hệ điều hành, cài đặt đúng gói phần mềm và cấu hình Fail2Ban bảo vệ SSH.
1. Fail2Ban là gì?
Fail2Ban là công cụ bảo mật mã nguồn mở dành cho Linux, có nhiệm vụ theo dõi nhật ký hệ thống và tự động chặn các địa chỉ IP có hành vi đăng nhập sai quá nhiều lần. Công cụ này hoạt động bằng cách quét các file log như /var/log/auth.log hoặc nhật ký systemd, sau đó tạo quy tắc chặn IP thông qua firewall của máy chủ.
Fail2Ban thường được sử dụng để bảo vệ SSH trước các cuộc tấn công Brute Force, đồng thời cũng có thể cấu hình cho nhiều dịch vụ khác như Nginx, Apache, FTP và Postfix. Khi một địa chỉ IP vượt quá số lần đăng nhập thất bại cho phép trong khoảng thời gian đã đặt, Fail2Ban sẽ tạm thời đưa IP đó vào danh sách cấm.
Tuy nhiên, Fail2Ban không thay thế hoàn toàn cho mật khẩu mạnh, SSH Key hoặc firewall. Để bảo vệ VPS Linux tốt hơn, bạn nên kết hợp Fail2Ban với xác thực bằng SSH Key, hạn chế đăng nhập tài khoản root và cập nhật hệ điều hành thường xuyên.
Trước khi cài đặt Fail2Ban trên Linux, bạn nên xác định cổng SSH đang sử dụng và địa chỉ IP quản trị cần đưa vào danh sách bỏ qua.
2. Cài đặt Fail2Ban trên Linux nhanh
Các bước cài đặt Fail2Ban trên Linux sẽ khác nhau đôi chút giữa Ubuntu, Debian, AlmaLinux, Rocky Linux và CentOS.
2.1. Đối với Ubuntu và CentOS:
Đối với Ubuntu và Debian, chạy lần lượt các lệnh sau:
sudo apt update
sudo apt install fail2ban -y2.2. Đối với AlmaLinux 8
Bước 1: Cài đặt công cụ quản lý repository
sudo dnf install -y dnf-plugins-coreBước 2: Kích hoạt kho PowerTools
sudo dnf config-manager --set-enabled powertoolsBước 3: Cài đặt kho EPEL
sudo dnf install -y epel-release
sudo dnf makecacheBước 4: Cài đặt Fail2Ban
sudo dnf install -y fail2ban fail2ban-firewalldAlmaLinux 8 sử dụng tên repository powertools; AlmaLinux 9 chuyển sang tên crb. Gói Fail2Ban dành cho Enterprise Linux được cung cấp thông qua EPEL.
2.3. Đối với CentOS
Bước 1: Cài công cụ quản lý repository
sudo dnf install -y dnf-plugins-coreBước 2: Kích hoạt kho CRB
sudo dnf config-manager --set-enabled crbBước 3: Cài EPEL và EPEL Next
sudo dnf install -y epel-release epel-next-release
sudo dnf makecacheBước 4: Cài đặt Fail2Ban
sudo dnf install -y fail2ban fail2ban-firewalld2.4. Kiểm tra dịch vụ Fail2Ban
Sau khi cài đặt xong, bạn hãy kiểm tra xem dịch vụ Fail2Ban đã hoạt động hay chưa bằng lệnh:
sudo systemctl status fail2ban
Nếu kết quả hiển thị Active: active (running), điều đó có nghĩa là Fail2Ban đã được cài đặt và đang chạy bình thường trên máy chủ.
3. Cấu hình Fail2Ban bảo vệ SSH
3.1. Tạo file cấu hình bảo vệ SSH
Mở file cấu hình bằng trình soạn thảo Nano:
sudo nano /etc/fail2ban/jail.d/sshd.localNếu máy chủ sử dụng cổng SSH mặc định 22, dán toàn bộ nội dung sau:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 1h
findtime = 10m
maxretry = 5
[sshd] enabled = true
port = 22
filter = sshd
backend = systemdBạn phải sử dụng đúng cổng SSH thực tế. Cấu hình sai cổng có thể khiến Fail2Ban không chặn kết nối như mong muốn.

Cách lưu file trong Nano
Sau khi dán nội dung vào Nano, thực hiện lần lượt:
- Nhấn Ctrl + O.
- Nano sẽ hỏi tên file, giữ nguyên và nhấn Enter.
- Nhấn Ctrl + X để thoát.
Trong đó:
- Ctrl + O là lưu file.
- Enter là xác nhận.
- Ctrl + X là thoát khỏi Nano.
3.2. Ý nghĩa các thông số Fail2Ban
| Thông số | Giá trị mẫu | Ý nghĩa |
|---|---|---|
| ignoreip | 127.0.0.1/8 ::1 | Các địa chỉ IP không bị Fail2Ban chặn |
| bantime | 1h | Thời gian chặn IP là 1 giờ |
| findtime | 10m | Khoảng thời gian Fail2Ban theo dõi lỗi đăng nhập |
| maxretry | 5 | Số lần đăng nhập sai tối đa |
| enabled | true | Kích hoạt jail SSH |
| port | 22 | Cổng SSH cần bảo vệ |
| filter | sshd | Bộ lọc log dành cho SSH |
| backend | systemd | Đọc sự kiện SSH từ systemd journal |
Với cấu hình trên, một IP đăng nhập SSH sai 5 lần trong vòng 10 phút sẽ bị chặn trong 1 giờ.
3.3. Kiểm tra file cấu hình Fail2Ban
Trước khi khởi động Fail2Ban, chạy lệnh:
sudo fail2ban-client -tLệnh này giúp kiểm tra file cấu hình trước khi khởi động lại dịch vụ. Nếu kết quả hiển thị "OK: configuration test is successful", cấu hình hiện tại hợp lệ.

Nếu xuất hiện lỗi, không nên khởi động lại Fail2Ban ngay. Hãy kiểm tra các nguyên nhân thường gặp:
- Thiếu tên section [sshd].
- Viết sai enabled = true.
- Nhập sai đơn vị thời gian.
- Dùng ký tự lạ khi sao chép nội dung.
- Cấu hình hai thông số trên cùng một dòng.
- Nhập sai tên file hoặc sai thư mục.
Bạn có thể mở lại file bằng lệnh:
sudo nano /etc/fail2ban/jail.d/sshd.local3.4. Khởi động và bật Fail2Ban cùng hệ thống
Sau khi cấu hình hợp lệ, kích hoạt Fail2Ban:
sudo systemctl enable --now fail2ban
Lệnh này thực hiện đồng thời hai việc:
- Khởi động dịch vụ Fail2Ban ngay lập tức.
- Cho phép Fail2Ban tự chạy sau mỗi lần khởi động máy chủ.
Khởi động lại dịch vụ để nạp cấu hình:
sudo systemctl restart fail2banKiểm tra trạng thái:
sudo systemctl status fail2ban --no-pager -l
Nếu hoạt động bình thường, kết quả sẽ có dòng: Active: active (running)
3.5. Kiểm tra Fail2Ban đã bảo vệ SSH chưa
Để xác nhận quá trình cài đặt Fail2Ban trên Linux thành công, hãy kiểm tra danh sách jail và trạng thái của jail sshd.
Chạy lệnh:
sudo fail2ban-client statusKết quả đúng sẽ tương tự:
Status
|- Number of jail: 1
`- Jail list: sshd
Nếu dòng Jail list có chữ sshd, Fail2Ban đã kích hoạt chức năng bảo vệ SSH.
Tiếp tục chạy:
sudo fail2ban-client status sshdKết quả có thể hiển thị:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| `- Total failed: 0
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:

Ý nghĩa:
- Currently failed: Số lần đăng nhập sai đang được tính.
- Total failed: Tổng số lần đăng nhập sai đã được phát hiện.
- Currently banned: Số IP đang bị chặn.
- Total banned: Tổng số lượt IP đã bị chặn.
- Banned IP list: Danh sách IP đang bị Fail2Ban chặn.
Nếu chưa có ai đăng nhập sai, các giá trị bằng 0 là hoàn toàn bình thường.
4. Cách chặn và bỏ chặn IP bằng Fail2Ban
4.1. Chặn thủ công một địa chỉ IP
Cú pháp:
sudo fail2ban-client set sshd banip DIA_CHI_IP
Ví dụ: sudo fail2ban-client set sshd banip 163.61.xxx.xxx
Sau đó kiểm tra lại:
sudo fail2ban-client status sshd
Địa chỉ IP sẽ xuất hiện trong phần Banned IP list.
Trong kết quả sẽ có: Banned IP list: 163.61.xxx.xxx
4.2. Bỏ chặn một địa chỉ IP
Cú pháp:
sudo fail2ban-client set sshd unbanip DIA_CHI_IPVí dụ: sudo fail2ban-client set sshd unbanip 163.61.xxx.xxx

Kiểm tra lại danh sách:
sudo fail2ban-client status sshd
Kiểm tra log SSH
Lệnh kiểm tra log SSH:
sudo grep "Failed password" /var/log/auth.log | tail -n 20Nếu xuất hiện nhiều dòng Failed password từ cùng một hoặc nhiều địa chỉ IP, rất có thể VPS của bạn đang bị bot thực hiện tấn công Brute Force vào dịch vụ SSH. Đây là lúc Fail2Ban sẽ phát huy tác dụng bằng cách tự động chặn các IP có hành vi đăng nhập bất thường.
Hoàn tất cài đặt Fail2Ban trên Linux mới chỉ là bước đầu, bạn vẫn nên kết hợp SSH Key, mật khẩu mạnh và hạn chế đăng nhập tài khoản root.
Câu hỏi thường gặp về Fail2Ban
Fail2Ban có phải là tường lửa không?
Không. Fail2Ban là công cụ theo dõi log và phát hiện hành vi bất thường. Khi phát hiện IP vi phạm, Fail2Ban yêu cầu tường lửa của hệ thống thực hiện việc chặn IP.
Fail2Ban có làm ảnh hưởng đến kết nối SSH bình thường không?
Thông thường là không. Fail2Ban chỉ chặn những địa chỉ IP vượt quá số lần đăng nhập sai đã cấu hình. Tuy nhiên, bạn nên thêm IP quản trị đáng tin cậy vào mục ignoreip để tránh tự khóa mình.
Fail2Ban có bảo vệ được cổng SSH tùy chỉnh không?
Có. Bạn chỉ cần đặt đúng số cổng tại thông số port.
6. Kết Luận
Qua bài viết này, VPSTTT đã hướng dẫn bạn cách cài đặt Fail2Ban trên Linux để bảo vệ SSH khỏi các cuộc tấn công Brute Force. Sau khi hoàn tất cấu hình, Fail2Ban sẽ tự động theo dõi log đăng nhập, phát hiện những địa chỉ IP có hành vi bất thường và tạm thời chặn chúng bằng firewall.
Bên cạnh Fail2Ban, bạn nên kết hợp thêm SSH Key, mật khẩu mạnh, tắt đăng nhập root và thường xuyên cập nhật hệ điều hành để tăng mức độ an toàn cho VPS hoặc máy chủ Linux.
Nhập đoạn mô tả cho bài viết tại đây.
VPSTTT – Nhà Cung Cấp Giải Pháp Hạ Tầng Số Toàn Diện
VPSTTT là nhà cung cấp giải pháp hạ tầng số tại Việt Nam, phục vụ nhu cầu triển khai, vận hành và lưu trữ dữ liệu của cá nhân, lập trình viên và doanh nghiệp. Hệ sinh thái dịch vụ gồm VPS Việt Nam, VPS quốc tế, VPS Anti DDoS, Hosting cPanel, máy chủ riêng, thuê Rack, Proxy IPv4/IPv6, S3 MinIO và Cloud Storage.
Bên cạnh việc cung cấp tài nguyên hạ tầng, VPSTTT còn tập trung hỗ trợ khách hàng trong quá trình triển khai, cấu hình và xử lý các sự cố thực tế. Nội dung trên Blog VPSTTT được xây dựng từ những tình huống thường gặp khi vận hành VPS, máy chủ và hệ thống trực tuyến, giúp người đọc có thể hiểu nguyên nhân và áp dụng giải pháp rõ ràng hơn.
VPSTTT – Hạ tầng ổn định, giải pháp linh hoạt và đồng hành trong suốt quá trình vận hành.
Thông Tin Liên Hệ Đội Ngũ VPSTTT
Website: https://vpsttt.com
Facebook: https://www.facebook.com/trang.vpsttt/
Zalo OA: https://zalo.me/vpstttgroup
Hotline: 0328 812 674
◉ 168
◉ 180