Site icon MIXCLOUD

Fail2ban là gì? Tác dụng & cách bảo vệ VPS/SSH khỏi brute-force

Fail2ban là gì? Nếu VPS của bạn có IP public, gần như chắc chắn bot sẽ quét và “đập pass” mỗi ngày. Fail2ban không làm bạn “bất khả xâm phạm”, nhưng nó là lớp phòng thủ nền cực hữu ích: giảm tấn công, giảm log rác và giảm tải dịch vụ đăng nhập.

Bài này dành cho:

Bài viết sẽ tìm hiểu nhiều hơn về Fail2ban, và áp dụng Fail2ban vào hệ thống của bạn. Mời bạn đọc cùng theo dõi nội dung dưới bài chia sẻ này của MIXVPS.

Vì sao người dùng cần hiểu “Fail2ban là gì” khi thuê VPS?

Ngay sau khi thuê VPS và mở SSH ra Internet, nhiều người sẽ giật mình vì chỉ vài giờ là log SSH đã xuất hiện hàng loạt lượt đăng nhập thất bại. Đây là “dấu hiệu bình thường” vì bot tự động quét IP public liên tục, nó không cần biết VPS của bạn dùng để làm gì—thấy cổng mở là thử.

Vì vậy, khi thấy VPS “bị đập” liên tục, người dùng sẽ bắt đầu tìm giải pháp kiểu “chặn bot theo IP”, và Fail2ban là cái tên xuất hiện nhiều nhất do nó dễ triển khai và hiệu quả rõ rệt với SSH brute-force.

Fail2ban hoạt động như thế nào?

Cơ chế của Fail2ban có thể hiểu theo một chuỗi rất rõ ràng:

Log của dịch vụ → Fail2ban “đọc” và nhận diện hành vi xấu → Ban IP bằng firewall → (Hết thời gian) tự gỡ ban

Điểm quan trọng: Fail2ban không đoán mò ai xấu ai tốt. Nó dựa trên những gì hệ thống ghi lại trong log. Ví dụ với SSH trên Ubuntu/Debian, log thường nằm ở /var/log/auth.log. Trong log này, mỗi lần đăng nhập thất bại sẽ có dòng kiểu “Failed password…”, “Invalid user…”, “authentication failure…”.

Fail2ban theo dõi log của dịch vụ

Khi Fail2ban chạy, nó sẽ “tail” log giống như bạn chạy tail -f vậy, nhưng thông minh hơn: nó biết dòng nào đáng quan tâm và dòng nào không.

Với SSH:

Fail2ban dùng “filter” để nhận diện mẫu vi phạm

Fail2ban có các filter (bộ lọc) dạng pattern (thường là regex) để match các dòng log liên quan tới hành vi xấu.

Ví dụ filter của SSH thường nhận ra các tình huống:

Khi filter match được một dòng log, Fail2ban sẽ trích xuất IP nguồn (địa chỉ IP đang cố đăng nhập) và ghi nhận “IP này vừa fail 1 lần”.

Fail2ban gom số lần vi phạm theo “cửa sổ thời gian”

Ở đây Fail2ban không ban ngay lập tức chỉ vì 1 lần sai (vì người thật cũng có thể gõ sai). Nó sẽ:

Nôm na: “Trong 10 phút mà anh sai 5 lần thì anh có vấn đề”.

Đến ngưỡng → Fail2ban chạy “action” để ban IP

Khi IP vượt ngưỡng, Fail2ban kích hoạt action. Action thường là:

Vì ban bằng firewall nên hiệu ứng rất “thực dụng”: IP bị chặn sẽ không thể tiếp tục spam request như trước.

Ban tạm thời hoặc lâu hơn (tuỳ cấu hình)

Hầu hết cấu hình thực tế là ban tạm thời:

Bạn cũng có thể cấu hình ban lâu hơn, thậm chí rất lâu, nhưng cần cân nhắc ban nhầm (đặc biệt nếu người dùng login từ IP động).

Fail2ban giúp bảo vệ VPS thế nào?

Fail2ban giúp VPS “đỡ bị làm phiền” và an toàn hơn bằng cách tự động phát hiện các hành vi đăng nhập sai lặp lại (đặc biệt là brute-force SSH) rồi chặn IP vi phạm qua firewall. Nhờ cơ chế dựa trên log, Fail2ban xử lý rất tốt các tình huống bot “đập pass” liên tục – thứ mà hầu hết VPS có IP public đều gặp.

Những lợi ích (tác dụng) rõ nhất của Fail2ban:

Lưu ý: Fail2ban hiệu quả nhất khi đi kèm cấu hình bảo mật cơ bản như SSH key, hạn chế đăng nhập root, và chỉ mở đúng port cần thiết. Nhưng riêng việc bật Fail2ban cho SSH đã giúp VPS “sạch” và an toàn hơn thấy rõ.

Giải thích maxretry, findtime, bantime trong Fail2ban: đặt bao nhiêu là hợp lý?

Maxretry – Sai bao nhiêu lần thì ban

Findtime – Đếm số lần sai trong bao lâu

Bantime – Ban trong bao lâu

Nên dùng Fail2ban cho những dịch vụ nào?

SSH (sshd) – ưu tiên số 1 cho VPS public

Vì sao hiệu quả?

Kỹ thuật cần biết:

Khuyến nghị triển khai:

Nginx/Apache – hữu ích khi có điểm đăng nhập / admin

Fail2ban cho web thường bị hiểu nhầm: nó không phải WAF, không phân tích sâu payload, nhưng rất hợp để chặn các kiểu tấn công lặp lại có dấu hiệu rõ trong log.

Trường hợp nên dùng:

Kỹ thuật cần biết:

Giới hạn kỹ thuật:

Mail (Postfix/Dovecot) – cực cần nếu bạn chạy Mail Server.

Mail Server là “mỏ vàng” của brute-force vì tài khoản email có thể bị dùng để spam, đánh cắp dữ liệu hoặc lừa đảo. Fail2ban ở mail thường hiệu quả rõ vì log xác thực của mail rất “thẳng”.

Trường hợp nên dùng:

Kỹ thuật cần biết:

Lưu ý vận hành:

Cấu hình Fail2ban SSH cơ bản (khuyến nghị cho đa số VPS)

Tạo file cấu hình:

sudo nano /etc/fail2ban/jail.local

Dán cấu hình mẫu dưới đây (mức cân bằng, dễ dùng):

[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5

# Không ban localhost

ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true

Áp dụng cấu hình:

sudo systemctl restart fail2ban

Vì sao đây là “mẫu hợp lý”?

Nếu VPS bị đập mạnh, bạn có thể tăng mức “gắt”:

Nếu VPS là môi trường học tập/đội nhóm hay nhập sai mật khẩu:

Whitelist IP để tránh bị ban nhầm (ignoreip)

Trường hợp rất hay gặp: bạn login sai vài lần rồi… tự bị chặn.

Nếu bạn có IP cố định (nhà/văn phòng/VPN), hãy thêm vào ignoreip:

ignoreip = 127.0.0.1/8 ::1 YOUR_PUBLIC_IP

Ví dụ:

ignoreip = 127.0.0.1/8 ::1 203.0.113.10

Sau đó restart:

sudo systemctl restart fail2ban

Nếu IP của bạn hay thay đổi (4G/ISP), whitelist theo IP sẽ không ổn. Khi đó, hướng đúng thường là:

Cách kiểm tra Fail2ban đang chặn gì (và IP nào đang bị ban)

Kiểm tra các jail đang hoạt động:

sudo fail2ban-client status

Kiểm tra riêng jail SSH:

sudo fail2ban-client status sshd

Bạn sẽ thấy các thông tin quan trọng như:

Muốn xem log Fail2ban để debug:

sudo tail -n 100 /var/log/fail2ban.log

Muốn xem log SSH (Ubuntu/Debian):

sudo tail -n 100 /var/log/auth.log

Unban IP nhanh khi bị chặn nhầm

Nếu bạn hoặc khách bị ban nhầm, unban rất nhanh:

sudo fail2ban-client set sshd unbanip 1.2.3.4

Nếu không chắc jail tên gì, hãy chạy fail2ban-client status trước rồi unban đúng jail.

 

Exit mobile version