Fail2ban là IPS (Phần mềm phòng chống xâm nhập) miễn phí và mã nguồn mở giúp quản trị viên bảo vệ máy chủ Linux khỏi các cuộc tấn công đăng nhập độc hại và tấn công bằng cách dùng vũ lực. Fail2ban được viết bằng Python và đi kèm với các bộ lọc cho nhiều dịch vụ khác nhau như Apache2, SSH, FTP, v.v. Fail2ban giảm các nỗ lực đăng nhập độc hại bằng cách chặn các địa chỉ IP của các cuộc tấn công nguồn.
Fail2ban hoạt động bằng cách quét các tệp nhật ký của các dịch vụ (ví dụ: /var/log/auth.log) và cấm các địa chỉ IP hiển thị các nỗ lực đăng nhập độc hại như quá nhiều mật khẩu không đúng, tìm kiếm khai thác, v.v. Fail2ban cũng hỗ trợ nhiều chương trình tường lửa phụ trợ như iptables, ufw và firewalld. Ngoài ra, cho phép bạn thiết lập thông báo qua email cho mọi lần đăng nhập bị chặn.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Fail2ba trên máy chủ Ubuntu 24.04. Bạn sẽ thiết lập Fail2ban jail, tìm hiểu lệnh 'fail2ban-client' cơ bản, sau đó tìm hiểu cách cấm và bỏ cấm địa chỉ IP bằng Fail2ban.
Đầu tiên, hãy chạy lệnh bên dưới để cập nhật chỉ mục gói Ubuntu của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22672%22%20height=%22210%22%3E%3C/svg%3E
Bây giờ hãy cài đặt các gói 'fail2ban' và 'ufw' bằng lệnh 'apt' sau. Nhập 'Y' để xác nhận cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22374%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy chạy lệnh bên dưới để mở cổng cho SSH và bật UFW. Nhập 'Y' để xác nhận, bắt đầu và bật UFW.
Sau khi bật UFW, bạn sẽ thấy thông báo 'Tường lửa đang hoạt động và được bật khi khởi động hệ thống'.
Tiếp theo, hãy chạy lệnh sau để kiểm tra trạng thái UFW. Bạn sẽ thấy UFW đang 'hoạt động' với 'OpenSSH' được bật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22360%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh 'systemctl' bên dưới để bắt đầu, bật và xác minh Dịch vụ 'fail2ban'.
Bạn có thể thấy bên dưới 'fail2ban' đang hoạt động (đang chạy) và được bật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E
Để bắt đầu, hãy sao chép cấu hình fail2ban mặc định vào '/etc/fail2ban/jail.local' với nội dung sau:
Mở tệp '/etc/fail2ban/jail.local' bằng lệnh biên tập 'nano' sau.
Thêm mạng cục bộ của bạn vào tùy chọn 'ignoreip'. Bất kỳ mạng con nào trong tùy chọn này sẽ không bị fail2ban chặn.
Điều chỉnh cấu hình mặc định cho 'bantime' (thời gian địa chỉ IP sẽ bị cấm), 'findtime' (khoảng thời gian giữa số lần không thành công trước khi hành động cấm) và 'maxretry' (số lần không thành công để địa chỉ IP bị cấm). Trong ví dụ này, bạn sẽ thiết lập 'bantime' thành '1 giờ', 'findtime' thành '10 phúts', với 'maxretry' thành '5 lần'.
Tùy chọn, hãy thay đổi 'hành động' mặc định thành '%(action_mw)s' để cấm địa chỉ IP và gửi thông báo tới quản trị viên qua email. Ngoài ra, hãy đảm bảo thay đổi tùy chọn 'destmail' và 'sender'.
Thay đổi 'banaction' mặc định thành 'ufw'. Với lệnh này, địa chỉ IP sẽ bị fail2ban cấm thông qua UFW.
Bây giờ hãy thay đổi jail mặc định cho 'sshd' bằng cấu hình bên dưới. Trong ví dụ này, 'sshd' jail sẽ có các thiết lập tùy chỉnh cho 'bantime', 'maxretry' và 'findtime'.
Lưu và thoát tệp khi hoàn tất.
Cuối cùng, hãy chạy lệnh 'systemctl' bên dưới để khởi động lại dịch vụ 'fail2ban' và áp dụng thay đổi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
Để đảm bảo fail2ban đang chạy, hãy chạy lệnh 'fail2ban-client' bên dưới.
Nếu fail2ban đang chạy, bạn sẽ thấy đầu ra 'PONG'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22454%22%20height=%2290%22%3E%3C/svg%3E
Bây giờ hãy kiểm tra trạng thái của 'sshd' jail bằng lệnh sau. Lệnh này sẽ hiển thị cho bạn danh sách các địa chỉ IP đã phát hiện và bị cấm đối với 'sshd' jail.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22523%22%20height=%22274%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh 'fail2ban-client get' bên dưới để kiểm tra các quy tắc cụ thể của fail2ban jail. Trong phần này, bạn sẽ kiểm tra 'bantime', 'maxretry', 'actions', 'findtime' và 'ignoreip' từ 'sshd' jail.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22582%22%20height=%22439%22%3E%3C/svg%3E
Để cấm các địa chỉ IP theo cách thủ công thông qua fail2ban, hãy chạy lệnh 'fail2ban-client' bên dưới. Trong trường hợp này, địa chỉ IP bị cấm sẽ chuyển đến nhà tù 'sshd'.
Bây giờ hãy chạy lệnh sau để bỏ lệnh cấm địa chỉ IP khỏi nhà tù 'sshd' fail2ban.
Cuối cùng, bạn có thể kiểm tra Trạng thái 'sshd' jail bằng lệnh bên dưới. Bạn sẽ thấy địa chỉ IP đã bị xóa.
Fail2ban hoạt động bằng cách quét các tệp nhật ký của các dịch vụ (ví dụ: /var/log/auth.log) và cấm các địa chỉ IP hiển thị các nỗ lực đăng nhập độc hại như quá nhiều mật khẩu không đúng, tìm kiếm khai thác, v.v. Fail2ban cũng hỗ trợ nhiều chương trình tường lửa phụ trợ như iptables, ufw và firewalld. Ngoài ra, cho phép bạn thiết lập thông báo qua email cho mọi lần đăng nhập bị chặn.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Fail2ba trên máy chủ Ubuntu 24.04. Bạn sẽ thiết lập Fail2ban jail, tìm hiểu lệnh 'fail2ban-client' cơ bản, sau đó tìm hiểu cách cấm và bỏ cấm địa chỉ IP bằng Fail2ban.
Điều kiện tiên quyết
Để bắt đầu với hướng dẫn này, hãy đảm bảo bạn có:- Máy chủ Ubuntu 24.04
- Người dùng không phải root có quyền quản trị viên
Cài đặt Fail2ban và UFW (Tường lửa đơn giản)
Fail2ban là IPS (Phần mềm phòng chống xâm nhập) bảo vệ máy chủ khỏi các cuộc tấn công bằng cách dùng vũ lực. Phần mềm này có sẵn theo mặc định trên hầu hết các kho lưu trữ Linux và hỗ trợ nhiều tường lửa phụ trợ. Trong phần này, bạn sẽ cài đặt Fail2ban và sau đó thiết lập UFW (Uncomplicated Firewall) sẽ được sử dụng làm tường lửa phụ trợ cho Fail2ban.Đầu tiên, hãy chạy lệnh bên dưới để cập nhật chỉ mục gói Ubuntu của bạn.
Mã:
sudo apt update
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22672%22%20height=%22210%22%3E%3C/svg%3E
Bây giờ hãy cài đặt các gói 'fail2ban' và 'ufw' bằng lệnh 'apt' sau. Nhập 'Y' để xác nhận cài đặt.
Mã:
sudo apt install fail2ban ufw
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22374%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy chạy lệnh bên dưới để mở cổng cho SSH và bật UFW. Nhập 'Y' để xác nhận, bắt đầu và bật UFW.
Mã:
sudo ufw allow OpenSSH
sudo ufw enable
Tiếp theo, hãy chạy lệnh sau để kiểm tra trạng thái UFW. Bạn sẽ thấy UFW đang 'hoạt động' với 'OpenSSH' được bật.
Mã:
sudo ufw status
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22360%22%3E%3C/svg%3E
Cuối cùng, hãy chạy lệnh 'systemctl' bên dưới để bắt đầu, bật và xác minh Dịch vụ 'fail2ban'.
Mã:
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E
Đang cấu hình Fail2ban
Sau khi cài đặt fail2ban, bạn phải cấu hình nó trước khi Fail2ban thực hiện hành động (kiểm tra và chặn). Trong phần này, bạn sẽ sửa đổi cấu hình fail2ban '/etc/fail2ban/jail.local', thiết lập cấu hình toàn cục cho 'bantime', 'maxretry' và 'findtime', thiết lập hành động mặc định và tường lửa UFW, sau đó kích hoạt 'sshd' jail để bảo vệ dịch vụ SSH khỏi các cuộc tấn công bằng cách dùng vũ lực.Để bắt đầu, hãy sao chép cấu hình fail2ban mặc định vào '/etc/fail2ban/jail.local' với nội dung sau:
Mã:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Mã:
sudo nano /etc/fail2ban/jail.local
Mã:
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 192.168.10.20
Mã:
bantime = 1h
findtime = 10m
maxretry = 5
Mã:
action = %(action_mw)s
destemail = [emailprotected]
sender = [emailprotected]
Mã:
banaction = ufw
Mã:
[sshd]
enabled = true
maxretry = 3
findtime = 15m
bantime = 3h
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Cuối cùng, hãy chạy lệnh 'systemctl' bên dưới để khởi động lại dịch vụ 'fail2ban' và áp dụng thay đổi.
Mã:
sudo systemctl restart fail2ban
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22328%22%3E%3C/svg%3E
Kiểm tra các quy tắc fail2ban bằng fail2ban-client
Tại thời điểm này, dịch vụ Fail2ban đã hoạt động với 'sshd' jail đã bật. Bây giờ bạn sẽ học lệnh cơ bản của 'fail2ban-client' để kiểm tra và quản lý cài đặt Fail2ban.Để đảm bảo fail2ban đang chạy, hãy chạy lệnh 'fail2ban-client' bên dưới.
Mã:
sudo fail2ban-client ping
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22454%22%20height=%2290%22%3E%3C/svg%3E
Bây giờ hãy kiểm tra trạng thái của 'sshd' jail bằng lệnh sau. Lệnh này sẽ hiển thị cho bạn danh sách các địa chỉ IP đã phát hiện và bị cấm đối với 'sshd' jail.
Mã:
sudo fail2ban-client status sshd
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22523%22%20height=%22274%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh 'fail2ban-client get' bên dưới để kiểm tra các quy tắc cụ thể của fail2ban jail. Trong phần này, bạn sẽ kiểm tra 'bantime', 'maxretry', 'actions', 'findtime' và 'ignoreip' từ 'sshd' jail.
Mã:
sudo fail2ban-client get sshd bantime
sudo fail2ban-client get sshd maxretry
sudo fail2ban-client get sshd actions
sudo fail2ban-client get sshd findtime
sudo fail2ban-client get sshd ignoreip
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22582%22%20height=%22439%22%3E%3C/svg%3E
Cách cấm và bỏ cấm địa chỉ IP bằng fail2ban-client
Điều quan trọng là phải biết cách cấm hoặc bỏ cấm địa chỉ IP theo cách thủ công bằng 'fail2ban-client'. Với điều này, bạn có thể dễ dàng xóa địa chỉ IP của mình khỏi danh sách bị cấm. Bạn sẽ sử dụng lệnh 'fail2ban-client' để cấm và bỏ cấm các địa chỉ IP trên Fail2ban.Để cấm các địa chỉ IP theo cách thủ công thông qua fail2ban, hãy chạy lệnh 'fail2ban-client' bên dưới. Trong trường hợp này, địa chỉ IP bị cấm sẽ chuyển đến nhà tù 'sshd'.
Mã:
sudo fail2ban-client set sshd banip IP-ADDRESS
Mã:
Sudo fail2ban-client set sshd unbanip IP-ADDRESS
Mã:
sudo fail2ban-client status sshd