Cách cài đặt và cấu hình Fail2Ban trên Linux

9 phút đọc - 14 tháng 5, 2026

hero section cover
Mục lục
  • Cách cài đặt và cấu hình Fail2Ban trên Linux
  • Yêu cầu
  • Cài đặt Fail2Ban trên Ubuntu/Debian
  • Cấu hình Jails
  • Kiểm tra và giám sát
  • Cấu hình nâng cao
Chia sẻ

Hướng dẫn từng bước để cài đặt, cấu hình và kiểm tra Fail2Ban trên các máy chủ Linux dựa trên Ubuntu, Debian và RHEL.

Cách cài đặt và cấu hình Fail2Ban trên Linux

Fail2Ban giám sát nhật ký máy chủ của bạn để phát hiện các hoạt động đáng ngờ và tự động chặn các địa chỉ IP vi phạm bằng cách cập nhật các quy tắc tường lửa. Nó ngăn chặn các cuộc tấn công brute-force, giảm thiểu nhật ký rác và chạy êm ái ở chế độ nền sau khi được cấu hình. Hướng dẫn này bao gồm cài đặt trên Ubuntu/Debian, cấu hình cơ bản, thiết lập jail và một số tùy chọn nâng cao đáng biết.

Yêu cầu

Fail2Ban chạy trên hầu hết các bản phân phối Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux và Fedora. Bạn sẽ cần:

  • Python 3 đã được cài đặt trên hệ thống
  • Quyền truy cập root hoặc sudo để cài đặt gói phần mềm và thay đổi tường lửa
  • Tường lửa đang hoạt động (iptables, nftables, ufw hoặc firewalld)
  • Tệp nhật ký ghi lại các lần đăng nhập thất bại (/var/log/auth.log trên các hệ thống dựa trên Debian, /var/log/secure trên các hệ thống dựa trên RHEL)

Trên các hệ thống dựa trên RHEL, hãy kích hoạt kho lưu trữ EPEL trước tiên. Trước khi cài đặt Fail2Ban, hãy xác nhận tường lửa của bạn đang chạy bằng ufw status hoặc systemctl status firewalld.

Cài đặt Fail2Ban trên Ubuntu/Debian

Cập nhật các gói phần mềm và cài đặt Fail2Ban:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Kích hoạt dịch vụ để nó khởi động khi khởi động hệ thống, sau đó khởi động nó:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Sao chép cấu hình mặc định vào một tệp ghi đè cục bộ. Luôn chỉnh sửa tệp jail.local, không phải jail.conf, để các bản cập nhật gói phần mềm không ghi đè lên cài đặt của bạn:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Kiểm tra xem mọi thứ đã hoạt động chưa:

sudo systemctl status fail2ban
sudo fail2ban-client status

Lệnh đầu tiên sẽ hiển thị "Active: active (running)". Lệnh thứ hai liệt kê các jail đang hoạt động của bạn. Xác nhận Fail2Ban đã được kích hoạt khi khởi động bằng lệnh sudo systemctl is-enabled fail2ban.

Cấu hình Jails

Cài đặt mặc định

Mở /etc/fail2ban/jail.local và điều chỉnh phần [DEFAULT]. Các cài đặt này áp dụng cho tất cả các jail trừ khi bị ghi đè:

Tham sốGiá trị khuyến nghịChức năng
bantime3600Chặn một địa chỉ IP trong 1 giờ
findtime600Đếm số lần thất bại trong khoảng thời gian 10 phút
số lần thử lại tối đa3 đến 5Số lần thất bại trước khi kích hoạt lệnh cấm
bỏ qua địa chỉ IP127.0.0.1/8 ::1Các địa chỉ IP không bao giờ bị chặn

Thêm địa chỉ IP quản trị của riêng bạn vào ignoreip để tránh bị khóa ngoài. Ví dụ: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Bảo vệ SSH

Kích hoạt chế độ SSH jail trong tệp jail.local:

[sshd]
enabled = true

Kiểm tra xem logpath có trỏ đến tệp nhật ký chính xác cho bản phân phối của bạn hay không. Nếu bạn đã chuyển SSH sang một cổng không chuẩn (ví dụ: 2222), hãy cập nhật tham số cổng cho phù hợp.

Bảo vệ máy chủ web

Kích hoạt chế độ cách ly phù hợp với máy chủ web của bạn:

  • Nginx: [nginx-http-auth] cho các lỗi xác thực, [nginx-botsearch] cho các bot độc hại
  • Apache: [apache-auth] cho xác thực, [apache-badbots] cho bot

Jail tái phạm

Chế độ [recidive] phát hiện các địa chỉ IP liên tục bị chặn trong các chế độ khác và áp dụng hình phạt kéo dài hơn, thường là một tuần (604.800 giây). Chế độ này hữu ích đối với những kẻ tấn công dai dẳng, thường xuyên thay đổi phương thức tấn công.

Sau khi thực hiện các thay đổi, hãy tải lại:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Kiểm tra và giám sát

Kiểm tra các lệnh cấm

Trước khi sử dụng Fail2Ban trong sản xuất, hãy kiểm tra nó. Từ một máy từ xa (không phải IP quản trị của bạn), hãy thử đăng nhập SSH cho đến khi bạn vượt quá maxretry. Bạn sẽ bị chặn. Xác nhận bằng:

sudo fail2ban-client status sshd

Theo dõi các lệnh cấm diễn ra theo thời gian thực:

tail -f /var/log/fail2ban.log

Nếu bạn vô tình chặn một địa chỉ IP hợp lệ, hãy gỡ chặn nó:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Giám sát hàng ngày

Xem lại lịch sử cấm bằng cách tìm kiếm trong nhật ký:

grep "Ban\|Unban" /var/log/fail2ban.log

Các lệnh quản lý hữu ích:

LệnhMục đích
fail2ban-client statusLiệt kê tất cả các jails đang hoạt động
fail2ban-client bannedHiển thị tất cả các địa chỉ IP hiện đang bị chặn
fail2ban-client set <jail> unbanip <IP>Bỏ chặn một địa chỉ IP cụ thể
fail2ban-client unban --allXóa tất cả các lệnh cấm
fail2ban-client set <jail> banip <IP>Cấm một địa chỉ IP theo cách thủ công

Các lệnh cấm vẫn tồn tại sau khi khởi động lại. Fail2Ban lưu trữ chúng trong cơ sở dữ liệu SQLite tại /var/lib/fail2ban/fail2ban.sqlite3.

Cấu hình nâng cao

Chuyển sang nftables

nftables là phiên bản thay thế hiện đại cho iptables. Nó xử lý IPv4 và IPv6 trong một khung duy nhất, mở rộng tốt hơn với danh sách chặn lớn và có tính năng giới hạn tốc độ tích hợp sẵn. Nếu bạn đang sử dụng Ubuntu 22.04+, Debian 11+ hoặc bất kỳ bản phân phối mới nào, đây là lựa chọn tốt hơn.

Đặt nó trong jail.local:

[DEFAULT]
banaction = nftables-multiport

Khởi động lại Fail2Ban, sau đó xác minh bằng lệnh sudo nft list ruleset. Bạn sẽ thấy f2b-tablef2b-chain trong kết quả. Chỉ nên tiếp tục sử dụng iptables nếu bạn đang sử dụng hệ thống cũ hoặc có yêu cầu về khả năng tương thích.

Thông báo qua email

Theo mặc định, Fail2Ban cấm truy cập mà không thông báo. Để nhận thông báo qua email, hãy thêm đoạn sau vào phần [DEFAULT] của tệp jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

Hành động action_mwl sẽ gửi email kèm theo chi tiết chặn, dữ liệu WHOIS và các dòng nhật ký đã kích hoạt việc chặn. Sử dụng action_mw nếu bạn chỉ muốn dữ liệu WHOIS. Bạn cần cài đặt một trình chuyển tiếp email như sendmail hoặc cấu hình máy chủ trung gian SMTP thông qua công cụ như msmtp.

Đối với thông báo trên Slack hoặc Discord, hãy tạo một skript gửi webhook và kết nối nó thông qua tệp hành động tùy chỉnh trong /etc/fail2ban/action.d/.

Nếu bạn đang tìm kiếm một máy chủ có quyền truy cập root đầy đủ và băng thông không giới hạn để chạy Fail2Ban, hãy xem các máy chủ chuyên dụng của FDC.

background image
Máy chủ của bạn có đang cản trở sự phát triển của bạn không?

Bạn đã chán ngán với việc triển khai chậm chạp hoặc giới hạn băng thông? FDC Servers cung cấp nguồn điện chuyên dụng ngay lập tức, phạm vi toàn cầu và các gói linh hoạt được thiết kế cho mọi quy mô. Sẵn sàng nâng cấp chưa?

Mở khóa hiệu suất ngay bây giờ

Blog

Nổi bật trong tuần

Các bài viết khác
Danh sách kiểm tra tăng cường bảo mật máy chủ Linux

Danh sách kiểm tra tăng cường bảo mật máy chủ Linux

Danh sách kiểm tra từng bước để tăng cường bảo mật cho máy chủ Linux. Bao gồm SSH, tường lửa, vá lỗi, quyền truy cập tệp, SELinux/AppArmor và ghi nhật ký kiểm tra

15 phút đọc - 8 tháng 5, 2026

hướng dẫn sử dụng iperf3: Kiểm tra tốc độ mạng trên Linux & Windows

10 phút đọc - 7 tháng 5, 2026

Các bài viết khác
background image

Bạn có thắc mắc hoặc cần giải pháp tùy chỉnh?

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức