Cách cài Fail2ban trên Ubuntu để chặn đăng nhập SSH đáng ngờ
Hướng dẫn cài Fail2ban trên VPS Ubuntu, cấu hình jail cho SSH, kiểm tra trạng thái và gỡ chặn IP an toàn. Giải pháp giúp tự động hạn chế các lần đăng nhập thất bại bất thường.
WAF giúp lọc và kiểm soát lưu lượng truy cập vào website để giảm rủi ro từ nhiều kiểu tấn công phổ biến. Tìm hiểu cách hoạt động và dấu hiệu cho thấy website nên cân nhắc triển khai.
#WAF
#tường lửa ứng dụng web
#bảo vệ website
VVibeVPS
Sẵn sàng triển khai?
Đưa website của bạn lên Cloud VPS ngay hôm nay
Khởi tạo tự động ngay sau khi thanh toán, chuyển khoản bằng mã QR, bật tắt và cài lại máy chủ trong trang quản lý.
Fail2ban là công cụ giúp bảo vệ VPS bằng cách theo dõi nhật ký dịch vụ và tạm thời chặn địa chỉ IP có nhiều lần đăng nhập thất bại trong một khoảng thời gian. Khi được cấu hình cho SSH, công cụ này hỗ trợ giảm các lượt dò mật khẩu tự động mà không cần bạn theo dõi log liên tục.
Trong hướng dẫn dưới đây, bạn sẽ biết cách cài Fail2ban Ubuntu, tạo cấu hình riêng cho SSH, kiểm tra hoạt động và gỡ chặn IP khi cần. Fail2ban là một lớp bảo vệ bổ sung, không thay thế việc dùng mật khẩu mạnh, SSH key hay cập nhật hệ thống thường xuyên.
Fail2ban hoạt động như thế nào?
Máy chủ VPS được bảo vệ trước các lượt đăng nhập SSH đáng ngờ
Fail2ban đọc nhật ký của các dịch vụ như SSH, tìm những dấu hiệu đăng nhập thất bại theo bộ lọc tương ứng, sau đó yêu cầu tường lửa chặn IP vi phạm trong thời gian được thiết lập. Khi hết thời hạn, IP thường được gỡ chặn tự động. Bạn cũng có thể chủ động gỡ chặn bằng lệnh quản trị.
Các thuật ngữ thường gặp:
Jail: cấu hình theo dõi một dịch vụ, chẳng hạn SSH.
Filter: quy tắc nhận diện sự kiện đáng ngờ trong log.
maxretry: số lần thử sai tối đa trước khi bị chặn.
findtime: khoảng thời gian Fail2ban dùng để đếm số lần thử.
bantime: thời gian IP bị chặn.
Ví dụ, nếu maxretry là 5 và findtime là 10 phút, một IP có thể bị chặn khi ghi nhận đủ 5 lần đăng nhập thất bại trong khoảng thời gian đó. Cách xử lý cụ thể còn phụ thuộc log và cấu hình hệ thống.
Chuẩn bị trước khi cài đặt
Quản trị viên chuẩn bị cài Fail2ban trên VPS Ubuntu
Bạn cần một VPS Ubuntu có quyền root hoặc tài khoản được phép chạy lệnh sudo. Đăng nhập qua SSH và cập nhật danh sách gói trước khi cài phần mềm:
sudo apt update
sudo apt upgrade -y
Nếu VPS đang chạy dịch vụ quan trọng, hãy cân nhắc thời điểm cập nhật và sao lưu cấu hình cần thiết. Trước khi bật chặn SSH, kiểm tra cổng SSH thực tế, tình trạng tường lửa và cách kết nối dự phòng. Nếu SSH không dùng cổng mặc định 22, cấu hình Fail2ban phải khớp với cổng đang sử dụng.
Đặc biệt, nên giữ phiên SSH hiện tại mở trong khi cấu hình, đồng thời thử đăng nhập bằng một phiên mới trước khi đóng phiên cũ. Việc này giúp giảm nguy cơ tự chặn IP quản trị hoặc cấu hình sai khiến bạn mất quyền truy cập.
Cài Fail2ban trên VPS Ubuntu
Mở terminal và cài gói Fail2ban từ kho phần mềm Ubuntu:
sudo apt install fail2ban -y
Sau khi cài xong, bật dịch vụ để Fail2ban tự khởi chạy cùng hệ thống và khởi động ngay:
sudo systemctl enable --now fail2ban
Kiểm tra dịch vụ có hoạt động hay không:
sudo systemctl status fail2ban
Nếu trạng thái hiển thị active (running), dịch vụ đang chạy. Nhấn q để thoát màn hình trạng thái. Bạn cũng có thể xem phiên bản đã cài:
fail2ban-client --version
Fail2ban có các tệp cấu hình mặc định trong thư mục /etc/fail2ban. Không nên chỉnh trực tiếp jail.conf, vì tệp này có thể bị ghi đè khi cập nhật gói. Thay vào đó, hãy tạo tệp cấu hình riêng jail.local để các thiết lập tùy chỉnh được giữ độc lập.
Trong cấu hình mẫu, một IP bị chặn trong một giờ nếu có 5 lần đăng nhập thất bại trong 10 phút. Đây là điểm khởi đầu để tham khảo, không phải thông số phù hợp cho mọi máy chủ. Bạn có thể điều chỉnh thời gian theo nhu cầu quản trị và mức độ rủi ro.
Nếu SSH của bạn chạy ở cổng khác, thay 22 bằng cổng thực tế, ví dụ port = 2222. Đừng đổi cổng theo suy đoán: hãy xác nhận cấu hình sshd và quy tắc tường lửa trước. Nếu chỉ muốn áp dụng thời gian chặn hoặc số lần thử riêng cho SSH, có thể đặt các tham số đó bên trong phần [sshd]; cấu hình trong phần này sẽ được ưu tiên cho jail tương ứng.
Thiết lập backend = systemd hướng Fail2ban đọc sự kiện từ nhật ký systemd, thường phù hợp với máy Ubuntu sử dụng systemd. Nếu hệ thống báo lỗi liên quan đến backend hoặc thiếu thư viện systemd, kiểm tra log của dịch vụ. Trên một số môi trường, có thể cần gói hỗ trợ python3-systemd:
sudo apt install python3-systemd -y
Máy chủ cấu hình ghi log xác thực vào /var/log/auth.log có thể dùng backend đọc tệp log thay cho systemd. Khi đổi backend, cần đảm bảo đường dẫn log tồn tại và được Fail2ban đọc. Không nên bật nhiều cách đọc log cho cùng một jail nếu chưa hiểu rõ cấu hình.
Lưu tệp trong nano bằng Ctrl + O, nhấn Enter để xác nhận, rồi thoát bằng Ctrl + X. Kiểm tra cấu hình trước khi khởi động lại dịch vụ:
sudo fail2ban-client -t
Nếu kết quả cho biết cấu hình hợp lệ, tải lại Fail2ban:
sudo systemctl restart fail2ban
Nếu có lỗi, xem nội dung thông báo và nhật ký dịch vụ thay vì tiếp tục với cấu hình chưa được xác nhận:
sudo journalctl -u fail2ban --no-pager -n 50
Kiểm tra jail SSH và theo dõi trạng thái
Minh họa Fail2ban theo dõi và chặn IP đăng nhập SSH sai nhiều lần
Sau khi khởi động lại, kiểm tra tổng quan Fail2ban:
sudo fail2ban-client status
Để xem riêng jail SSH:
sudo fail2ban-client status sshd
Kết quả thường cho biết jail có đang hoạt động, tổng số lần phát hiện và danh sách IP hiện bị chặn. Nếu sshd chưa xuất hiện trong danh sách, hãy kiểm tra lại enabled = true, tên phần [sshd], tính hợp lệ của cấu hình và log lỗi dịch vụ.
Để theo dõi log theo thời gian thực, dùng:
sudo journalctl -u fail2ban -f
Nhấn Ctrl + C để dừng theo dõi. Nếu dùng cấu hình đọc /var/log/auth.log, bạn cũng có thể kiểm tra các sự kiện xác thực trong tệp log đó. Không nên cố tình nhập sai mật khẩu nhiều lần trên máy chủ đang sử dụng để thử nghiệm: IP của bạn có thể bị chặn, khiến việc truy cập bị gián đoạn.
Gỡ chặn IP và xử lý sự cố thường gặp
Nếu IP quản trị bị chặn, trước tiên xác nhận địa chỉ IP cần gỡ và đảm bảo bạn đang thao tác từ một phiên có quyền quản trị. Lệnh dưới đây gỡ một địa chỉ khỏi jail SSH:
sudo fail2ban-client set sshd unbanip 203.0.113.10
Thay địa chỉ ví dụ bằng IP thực tế cần gỡ. Sau đó kiểm tra lại:
sudo fail2ban-client status sshd
Một số tình huống thường gặp khi cài Fail2ban VPS:
Dịch vụ không khởi động: chạy fail2ban-client -t, rồi xem journalctl -u fail2ban để tìm lỗi cấu hình hoặc backend.
Jail SSH không hoạt động: xác nhận enabled = true nằm dưới [sshd], không bị viết sai tên hoặc đặt nhầm vị trí.
Không phát hiện đăng nhập thất bại: kiểm tra backend có đọc đúng nguồn log và SSH có ghi nhận sự kiện xác thực hay không.
Không kết nối được sau khi bật: thử từ một IP khác hoặc dùng bảng điều khiển quản trị của VPS nếu có; kiểm tra cả Fail2ban lẫn tường lửa của hệ điều hành và nền tảng.
Cần thay đổi thời gian chặn: chỉnh bantime, findtime hoặc maxretry trong jail.local, kiểm tra cấu hình rồi khởi động lại dịch vụ.
Tránh thêm IP vào danh sách bỏ qua một cách rộng rãi hoặc tắt Fail2ban chỉ để xử lý nhanh mà chưa xác định nguyên nhân. Nếu cần loại trừ IP quản trị ổn định, cấu hình ignoreip cẩn thận và chỉ thêm địa chỉ đáng tin cậy.
Lưu ý bảo mật khi dùng Fail2ban
Fail2ban giúp tự động hạn chế các IP đăng nhập thất bại, nhưng không thể ngăn mọi kiểu tấn công và cũng không bảo đảm máy chủ an toàn tuyệt đối. Hãy kết hợp với các biện pháp cơ bản:
Ưu tiên đăng nhập SSH bằng khóa, đặt mật khẩu mạnh và không chia sẻ tài khoản quản trị.
Chỉ mở các cổng cần thiết; phối hợp quy tắc tường lửa của VPS với tường lửa trên Ubuntu.
Cập nhật hệ điều hành và các dịch vụ để nhận bản vá bảo mật.
Theo dõi nhật ký định kỳ, đặc biệt sau khi thay đổi cổng SSH hoặc cách xác thực.
Giữ phương án truy cập dự phòng trước khi chỉnh cấu hình SSH hay tường lửa.
Tổng kết
Cài Fail2ban Ubuntu gồm ba bước chính: cài gói, tạo jail.local để bật jail SSH và kiểm tra dịch vụ sau khi khởi động lại. Khi cấu hình đúng, Fail2ban có thể tự động chặn tạm thời IP có nhiều lần đăng nhập thất bại, giúp giảm một phần lưu lượng dò mật khẩu trên VPS.
Hãy kiểm tra kỹ cổng SSH, nguồn log và quyền truy cập trước khi áp dụng thay đổi. Nếu đang cần một máy chủ để triển khai website hoặc dịch vụ riêng, bạn có thể tham khảo các gói VPS của VibeVPS, trong đó VPS AMD EPYC Gen 3 có giá từ 81.000đ/tháng. Chọn cấu hình phù hợp, sau đó chủ động thiết lập các lớp bảo mật cần thiết cho hệ thống.
Tìm hiểu cách tạo SSH key, thêm khóa công khai lên VPS và kết nối từ Windows, macOS hoặc Linux. Bài viết cũng hướng dẫn kiểm tra cấu hình và tắt đăng nhập bằng mật khẩu an toàn.
DNSSEC giúp trình phân giải xác thực dữ liệu DNS, giảm nguy cơ người dùng bị dẫn đến địa chỉ giả mạo. Tìm hiểu cơ chế hoạt động, giới hạn và các bước bật DNSSEC cho tên miền.
#DNSSEC
#DNS
#bảo mật DNS
VVibeVPSĐọc bài
Cloud VPS và hosting với khởi tạo tự động, thanh toán bằng mã QR và trang quản lý cho mọi dịch vụ của bạn.
Thông tin doanh nghiệp
CÔNG TY TNHH CÔNG NGHỆ INUX
Mã số thuế
0601272174
Giấy chứng nhận ĐKDN
0601272174 · 29/09/2024 · Thuế cơ sở 8 tỉnh Ninh Bình