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 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 nỗ lực đăng nhập bị chặn.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình Fail2ban để bảo mật máy chủ Ubuntu 22.04. Hướng dẫn này cũng đề cập đến lệnh cơ bản của fail2ban-client để quản lý dịch vụ Fail2ban và jails.
Cài đặt máy chủ Ubuntu mặc định đi kèm với Tường lửa UFW, dễ quản lý hơn các tường lửa khác như iptables.
Bây giờ hãy kiểm tra trạng thái tường lửa UFW bằng lệnh sau.
Nếu bạn nhận được thông báo đầu ra như "Trạng thái: không hoạt động", thì tường lửa UFW của bạn vẫn chưa được khởi động. Nhưng nếu bạn nhận được thông báo đầu ra như "Command ufw not found", thì tường lửa UFW chưa được cài đặt trên máy chủ của bạn.
Để cài đặt gói tường lửa UFW, hãy chạy lệnh apt bên dưới.
Sau khi cài đặt UFW hoàn tất, hãy chạy lệnh bên dưới để thêm dịch vụ SSH vào tường lửa UFW.
Tiếp theo, hãy chạy lệnh bên dưới để khởi động và bật tường lửa UFW.
Nhập y để xác nhận và khởi động tường lửa UFW.
Cuối cùng, hãy kiểm tra lại tường lửa UFW bằng lệnh sau.
Bên dưới, bạn có thể thấy tường lửa UFW "Trạng thái: hoạt động" với cổng SSH 22 đã được thêm vào các quy tắc tường lửa.
Chạy lệnh sau để cập nhật và làm mới kho lưu trữ Ubuntu của bạn.
Bây giờ hãy cài đặt gói Fail2ban bằng lệnh bên dưới.
Quá trình cài đặt sẽ bắt đầu.
Sau khi quá trình cài đặt Fail2ban hoàn tất, hãy bật dịch vụ Fail2ban và khởi động dịch vụ bằng lệnh bên dưới.
Cuối cùng, hãy kiểm tra trạng thái dịch vụ Fail2ban bằng lệnh sau.
Trong ảnh chụp màn hình bên dưới, bạn sẽ thấy dịch vụ Fail2ban đang chạy trên máy chủ Ubuntu 22.04.
Tất cả cấu hình Fail2ban được lưu trữ tại thư mục /etc/fail2ban. Dưới đây là cấu hình Fail2ban chi tiết mà bạn phải biết:
Bây giờ hãy chỉnh sửa cấu hình jail.local bằng trình soạn thảo nano.
Đầu tiên, bỏ ghi chú tùy chọn ignoreip và thêm địa chỉ IP của bạn. Tất cả các địa chỉ IP bên trong tùy chọn ignoreip sẽ không bị Fail2ban chặn.
Đối với cài đặt cấm, bạn có thể thay đổi cấu hình theo nhu cầu. Trong ví dụ này, lệnh cấm toàn cục sẽ là 1 ngày, lệnh tìm kiếm sẽ là 10 phút và lệnh thử lại tối đa lên đến 5 lần.
Tùy chọn lệnh bantime là thời gian địa chỉ IP sẽ bị cấm truy cập vào máy chủ. Tùy chọn lệnh findtime là khoảng thời gian giữa số lần không thành công trước khi hành động cấm diễn ra. Và tùy chọn lệnh maxretry là số lần không thành công để địa chỉ IP bị cấm.
Hành động mặc định của Fail2ban chỉ là cấm địa chỉ IP. Nhưng bạn cũng có thể thiết lập thông báo qua email bất cứ khi nào một địa chỉ IP bị cấm.
Thay đổi tùy chọn hành động như bên dưới và thay đổi địa chỉ email người gửi và đích mặc định.
Tiếp theo, đối với tích hợp tường lửa UFW, bạn cần thay đổi tùy chọn banaction thành ufw như bên dưới.
Cuối cùng, đối với cấu hình jails. Phần này là nơi bạn thêm dịch vụ của mình và bảo mật dịch vụ đó bằng fail2ban.
Trong ví dụ này, chúng tôi sẽ bật jail cho dịch vụ SSH, nhưng chúng tôi cũng ghi đè cấu hình mặc định toàn cầu cho sshd jail. Thời gian cấm sẽ là 1 tuần với số lần thử lại lỗi tối đa là 3 lần và thời gian tìm kiếm là 10 phút.
Lưu và đóng tệp khi bạn hoàn tất.
Bây giờ hãy chạy lệnh sau để khởi động lại dịch vụ Fail2ban và áp dụng các thay đổi mới cho cấu hình jail.local.
Bây giờ bạn đã hoàn tất cấu hình Fail2ban với thông báo qua email được bật và sshd jail được bật để bảo mật dịch vụ SSH.
Để xác minh cài đặt và cấu hình fail2ban, hãy chạy lệnh fail2ban-client bên dưới.
Nếu bạn nhận được thông báo đầu ra như "Máy chủ trả lời: pong", điều này có nghĩa là Fail2ban đang chạy mà không có lỗi.
Tiếp theo, hãy chạy lệnh fail2ban-client bên dưới để kiểm tra trạng thái của sshd jail.
Bên dưới, bạn có thể xem trạng thái chi tiết của sshd jail. Điều này bao gồm tệp nhật ký cho dịch vụ SSH và danh sách các địa chỉ IP bị cấm trên sshd jail.
Bây giờ nếu bạn muốn có cấu hình chi tiết của sshd jail, bạn có thể sử dụng lệnh fail2ban-client như bên dưới.
Kiểm tra cấu hình bantime cho sshd jail. Bạn sẽ nhận được đầu ra của bantime tại đây trong vài giây.
Kiểm tra cấu hình maxrtey cho sshd jail. Bạn sẽ thấy maxretry ở đây là 3 vì nó bị ghi đè từ cấu hình toàn cục, là maxrety 5 lần.
Đối với lệnh banaction trong sshd jail, bạn có thể sử dụng lệnh sau. Và bạn sẽ nhận được đầu ra của ufw là lệnh banaction mặc định cho sshd jail.
Đối với findtime tại đây, bạn cũng sẽ thấy giá trị ghi đè từ sshd jail. Đầu ra tại đây cũng sẽ ở định dạng giây.
Cuối cùng, bạn cũng có thể kiểm tra ignoreip mặc định cho sshd jail bằng lệnh bên dưới. Và bạn sẽ thấy ignoreip có cùng giá trị với cấu hình Fail2ban toàn cục.
Để cấm địa chỉ IP thủ công trên sshd jail, bạn có thể sử dụng lệnh fail2ban-client bên dưới. Thay đổi địa chỉ IP bằng địa chỉ IP bạn muốn cấm.
Để bỏ cấm địa chỉ IP khỏi sshd jail, bạn có thể sử dụng lệnh fail2ban-client bên dưới. Chỉ cần đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP bạn muốn bỏ cấm.
Bây giờ sau khi bạn cấm một địa chỉ IP thủ công hoặc bỏ cấm một địa chỉ IP, bạn có thể xác minh bằng lệnh fail2ban-client bên dưới.
Nếu bạn cấm một địa chỉ IP theo cách thủ công, hãy đảm bảo rằng địa chỉ IP đó có trong danh sách các địa chỉ IP bị cấm. Nhưng nếu bạn bỏ cấm một địa chỉ IP, hãy đảm bảo rằng địa chỉ IP đó biến mất khỏi danh sách các địa chỉ IP bị cấm.
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 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 nỗ lực đăng nhập bị chặn.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình Fail2ban để bảo mật máy chủ Ubuntu 22.04. Hướng dẫn này cũng đề cập đến lệnh cơ bản của fail2ban-client để quản lý dịch vụ Fail2ban và jails.
Điều kiện tiên quyết
- Máy chủ Ubuntu 22.04
- Người dùng không phải root có quyền sudo.
Thiết lập Tường lửa UFW
Trước khi bắt đầu cài đặt Fail2ban, bạn sẽ cần thiết lập Tường lửa trên máy chủ Ubuntu của mình.Cài đặt máy chủ Ubuntu mặc định đi kèm với Tường lửa UFW, dễ quản lý hơn các tường lửa khác như iptables.
Bây giờ hãy kiểm tra trạng thái tường lửa UFW bằng lệnh sau.
Mã:
sudo ufw status
Để cài đặt gói tường lửa UFW, hãy chạy lệnh apt bên dưới.
Mã:
sudo apt install ufw -y
Mã:
sudo ufw allow ssh
Mã:
sudo ufw enable
Cuối cùng, hãy kiểm tra lại tường lửa UFW bằng lệnh sau.
Mã:
sudo ufw status
Cài đặt Fail2ban trên Ubuntu 22.04
Sau khi bạn đã cài đặt và cấu hình tường lửa UFW, bây giờ bạn sẽ cài đặt gói Fail2ban vào máy chủ của mình.Chạy lệnh sau để cập nhật và làm mới kho lưu trữ Ubuntu của bạn.
Mã:
sudo apt update
Mã:
sudo apt install fail2ban -y
Sau khi quá trình cài đặt Fail2ban hoàn tất, hãy bật dịch vụ Fail2ban và khởi động dịch vụ bằng lệnh bên dưới.
Mã:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Mã:
sudo systemctl status fail2ban
Cấu hình Fail2ban
Sau khi bạn đã cài đặt Fail2ban, bây giờ là lúc thiết lập và cấu hình Fail2ban.Tất cả cấu hình Fail2ban được lưu trữ tại thư mục /etc/fail2ban. Dưới đây là cấu hình Fail2ban chi tiết mà bạn phải biết:
- Cấu hình fail2ban.conf là cấu hình chính của Fail2ban.
- Cấu hình jail.conf là một ví dụ về cấu hình jail Fail2ban.
- Thư mục action.d chứa các thiết lập hành động fail2ban như thiết lập thư và thiết lập tường lửa.
- Thư mục jail.d chứa cấu hình bổ sung cho jail fail2ban.
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
Tùy chọn lệnh bantime là thời gian địa chỉ IP sẽ bị cấm truy cập vào máy chủ. Tùy chọn lệnh findtime là khoảng thời gian giữa số lần không thành công trước khi hành động cấm diễn ra. Và tùy chọn lệnh maxretry là số lần không thành công để địa chỉ IP bị cấm.
Mã:
lệnh bantime = 1d
lệnh tìm kiếm = 10 phút
lệnh maxretry = 5
Thay đổi tùy chọn hành động như bên dưới và thay đổi địa chỉ email người gửi và đích mặc định.
Mã:
action = %(action_mw)s
destemail = [emailprotected]
sender = [emailprotected]
Mã:
banaction = ufw
Trong ví dụ này, chúng tôi sẽ bật jail cho dịch vụ SSH, nhưng chúng tôi cũng ghi đè cấu hình mặc định toàn cầu cho sshd jail. Thời gian cấm sẽ là 1 tuần với số lần thử lại lỗi tối đa là 3 lần và thời gian tìm kiếm là 10 phút.
Mã:
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 1w
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Bây giờ hãy chạy lệnh sau để khởi động lại dịch vụ Fail2ban và áp dụng các thay đổi mới cho cấu hình jail.local.
Mã:
sudo systemctl restart fail2ban
Sử dụng Fail2ban-client để xác minh trạng thái Fail2ban
Fail2ban cung cấp fail2ban-client dòng lệnh để tương tác với dịch vụ Fail2ban. Điều này cho phép bạn quản lý và cấu hình Fail2ban từ dòng lệnh và cũng cho phép bạn quản lý Fail2ban jail.Để xác minh cài đặt và cấu hình fail2ban, hãy chạy lệnh fail2ban-client bên dưới.
Mã:
sudo fail2ban-client ping
Tiếp theo, hãy chạy lệnh fail2ban-client bên dưới để kiểm tra trạng thái của sshd jail.
Mã:
sudo fail2ban-client status sshd
Bây giờ nếu bạn muốn có cấu hình chi tiết của sshd jail, bạn có thể sử dụng lệnh fail2ban-client như bên dưới.
Kiểm tra cấu hình bantime cho sshd jail. Bạn sẽ nhận được đầu ra của bantime tại đây trong vài giây.
Mã:
sudo fail2ban-client get sshd bantime
Mã:
sudo fail2ban-client get sshd maxretry
Mã:
sudo fail2ban-client get sshd actions
Mã:
sudo fail2ban-client get sshd findtime
Mã:
sudo fail2ban-client get sshd ignoreip
Cấm và bỏ cấm IP bằng Fail2ban-client
Một điều quan trọng khác về Fail2ban ở đây là cách cấm và bỏ cấm địa chỉ IP trên Fail2ban. Để thực hiện điều đó, bạn cũng có thể sử dụng lệnh fail2ban-client.Để cấm địa chỉ IP thủ công trên sshd jail, bạn có thể sử dụng lệnh fail2ban-client bên dưới. Thay đổi địa chỉ IP bằng địa chỉ IP bạn muốn cấm.
Mã:
sudo fail2ban-client set sshd banip IP-ADDRESS
Mã:
sudo fail2ban-client set sshd unbanip IP-ADDRESS
Mã:
sudo fail2ban-client status sshd