Fail2Ban là một phần mềm mã nguồn mở, được viết bằng Python, dùng để bảo vệ hệ thống Linux khỏi các cuộc tấn công brute force (tấn công thử mật khẩu liên tục). Trong bài viết này, mình sẽ hướng dẫn cách cài đặt Fail2Ban để chống tấn công brute force một cách hiệu quả. Nó hoạt động bằng cách giám sát các tệp log (như /var/log/auth.log
cho SSH) để phát hiện các hành vi đáng ngờ, chẳng hạn như nhiều lần đăng nhập thất bại. Khi phát hiện hành vi này, Fail2Ban tự động cập nhật quy tắc tường lửa (thường là iptables
hoặc firewalld
) để chặn địa chỉ IP của kẻ tấn công trong một khoảng thời gian nhất định.
Các tính năng nổi bật:
- Bảo vệ đa dịch vụ: Hỗ trợ SSH, Apache, Nginx, FTP, SMTP, v.v.
- Tùy chỉnh linh hoạt: Cho phép thiết lập thời gian chặn, số lần thử thất bại tối đa, và các mẫu log để phát hiện tấn công.
- Tự động hóa: Tự động chặn và bỏ chặn IP dựa trên cấu hình.
- Hỗ trợ cảnh báo: Gửi thông báo qua email khi phát hiện tấn công.
Hướng dẫn cài đặt Fail2Ban trên Ubuntu để chống brute force
Dưới đây là hướng dẫn chi tiết để cài đặt và cấu hình Fail2Ban trên Ubuntu (20.04 hoặc 22.04) để bảo vệ dịch vụ SSH.
Bước 1: Cài đặt Fail2Ban
Cập nhật hệ thống:
sudo apt update && sudo apt upgrade -y
Cài đặt Fail2Ban:
sudo apt install fail2ban -y
Kích hoạt và khởi động dịch vụ:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Kiểm tra trạng thái:
sudo systemctl status fail2ban
Đảm bảo dịch vụ đang chạy (trạng thái active (running)
).
Bước 2: Cấu hình Fail2Ban
Fail2Ban sử dụng các tệp cấu hình trong thư mục /etc/fail2ban/
. Tệp chính là /etc/fail2ban/jail.conf
, nhưng để tránh bị ghi đè khi cập nhật, bạn nên tạo tệp /etc/fail2ban/jail.local
hoặc các tệp trong thư mục /etc/fail2ban/jail.d/
.
Sao chép tệp cấu hình mặc định:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Chỉnh sửa tệp jail.local
:
Mở tệp bằng trình soạn thảo (ví dụ: nano
):
sudo nano /etc/fail2ban/jail.local
Cấu hình các tham số mặc định:
Trong phần [DEFAULT]
, bạn có thể tùy chỉnh các thông số như:
ignoreip
: Danh sách IP được miễn chặn (ví dụ: IP của bạn để tránh tự khóa).bantime
: Thời gian chặn IP (tính bằng giây, mặc định là 600 giây = 10 phút).findtime
: Thời gian cửa sổ để đếm số lần thử thất bại (mặc định 600 giây).maxretry
: Số lần thử thất bại tối đa trước khi chặn (mặc định là 5).
Ví dụ:
[DEFAULT]
ignoreip = 127.0.0.1/8 <YOUR_LOCAL_IP>
bantime = 3600
findtime = 600
maxretry = 3
Cấu hình hiện tại của Fail2ban cũng đã khá ok, nên nếu không có gì cần thiết thì bạn không nhất thiết phải cấu hình lại phần này.
Kích hoạt jail cho SSH:
Trong cùng tệp jail.local
, tìm hoặc thêm phần [sshd]
và cấu hình như sau:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
enabled = true
: Kích hoạt bảo vệ SSH.port = ssh
: Cổng SSH (thường là 22, hoặc cổng tùy chỉnh nếu bạn đã thay đổi).filter = sshd
: Sử dụng bộ lọc mặc định cho SSH.logpath
: Đường dẫn đến tệp log của SSH.
Lưu và thoát:
Nhấn Ctrl+O
, Enter
để lưu, rồi Ctrl+X
để thoát.
Khởi động lại Fail2Ban:
sudo systemctl restart fail2ban
Bước 3: Kiểm tra và giám sát
Kiểm tra trạng thái jail:
sudo fail2ban-client status sshd
Kết quả sẽ hiển thị thông tin về jail sshd
, bao gồm số lần thử thất bại và danh sách IP bị chặn.
Ví dụ đầu ra:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 4
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 192.168.1.101
Kiểm tra log Fail2Ban:
sudo tail -f /var/log/fail2ban.log
Tệp log này ghi lại các sự kiện như IP bị chặn hoặc bỏ chặn.
Kiểm danh sách phiên SSH đăng nhập thất bại vào VPS của bạn:
cat /var/log/auth.log | grep 'Failed password' | sort | uniq -c
Kết luận
Fail2Ban là một công cụ mạnh mẽ và dễ cấu hình để bảo vệ VPS khỏi các cuộc tấn công brute force. Với các bước trên, bạn có thể nhanh chóng thiết lập bảo vệ cho SSH và các dịch vụ khác. Hãy đảm bảo kiểm tra log thường xuyên và điều chỉnh cấu hình theo nhu cầu để tối ưu hóa bảo mật.
Nếu bạn cần thêm hướng dẫn về cấu hình nâng cao, hãy để lại câu hỏi!
CÔNG TY TNHH VPSMMO
- VP: 8B đường B31, KDC 91B, Phường An Khánh, Quận Ninh Kiều, Thành phố Cần Thơ
- Tel: 0589549338
- Email: info@vpsmmo.vn