Fail2ban là Hệ thống phòng chống xâm nhập mã nguồn mở và miễn phí được viết bằng Python. Hệ thống này được sử dụng để bảo vệ hệ thống của bạn khỏi các cuộc tấn công bằng cách dùng vũ lực. Hệ thống này liên tục giám sát các tệp nhật ký SSH (và các tệp nhật ký khác) để tìm các nỗ lực xác thực, sau một số lần nhập sai mật khẩu nhất định, địa chỉ IP của máy khách sẽ bị Fail2Ban cấm. Nó có thể được sử dụng để bảo mật một số dịch vụ bao gồm SSH, vsftpd, Apache và Webmin.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt tường lửa Fail2Ban trên Alma Linux 8.
Nếu firewalld không chạy, bạn sẽ nhận được kết quả sau:
Bây giờ, hãy khởi động dịch vụ firewalld bằng lệnh sau:
Bạn có thể kiểm tra trạng thái của firewalld bằng lệnh sau:
Bạn sẽ thấy kết quả sau:
Bây giờ, hãy liệt kê tất cả các dịch vụ được firewalld định cấu hình bằng lệnh sau:
Bạn sẽ thấy đầu ra sau:
Sau khi kho lưu trữ EPEL được cài đặt, bạn có thể cài đặt tường lửa Fail2Ban bằng lệnh sau:
Sau khi cài đặt hoàn tất, hãy khởi động và kích hoạt dịch vụ Fail2Ban bằng lệnh sau:
Bạn có thể xác minh trạng thái của dịch vụ fail2ban bằng cách chạy lệnh:
Bạn sẽ thấy đầu ra sau:
Theo mặc định, Fail2Ban sử dụng tường lửa Iptables. Để bật hỗ trợ tường lửa, hãy chạy lệnh sau:
Tiếp theo, khởi động lại dịch vụ Fail2Ban để áp dụng các thay đổi:
Để bảo vệ dịch vụ SSH, hãy tạo tệp cấu hình jail cho SSH bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp khi bạn hoàn tất, sau đó khởi động lại dịch vụ SSH để áp dụng các thay đổi:
Bây giờ bạn có thể xác minh cấu hình jail bằng lệnh sau:
Bạn sẽ nhận được jail đã cấu hình trong đầu ra sau:
Để kiểm tra jail SSH xem có IP bị cấm nào không, hãy chạy lệnh sau:
Bạn sẽ nhận được tất cả danh sách IP bị cấm trong đầu ra sau:
Nếu bạn muốn bỏ cấm địa chỉ IP theo cách thủ công, hãy chạy lệnh sau:
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt tường lửa Fail2Ban trên Alma Linux 8.
Điều kiện tiên quyết
- Máy chủ chạy Alma Linux 8.
- Mật khẩu gốc được cấu hình trên máy chủ.
Xác minh cài đặt Firewalld
Theo mặc định, gói Firewalld được cài đặt sẵn trên Alma Linux 8. Trước tiên, bạn sẽ cần kiểm tra xem nó có đang chạy hay không. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
systemctl status firewalld
Mã:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Mã:
systemctl start firewalld
Mã:
systemctl status firewalld
Mã:
? firewalld.service - firewalld - daemon tường lửa động Đã tải: đã tải (/usr/lib/systemd/system/firewalld.service; đã tắt; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ bảy 2022-02-19 08:57:14 UTC; 40s trước Tài liệu: man:firewalld(1) PID chính: 7214 (firewalld) Nhiệm vụ: 2 (giới hạn: 23696) Bộ nhớ: 27,9M CGroup: /system.slice/firewalld.service ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid19/02 08:57:14 linux systemd[1]: Đang khởi động firewalld - daemon tường lửa động...19/02 08:57:14 linux systemd[1]: Đã khởi động firewalld - daemon tường lửa động.
Mã:
firewall-cmd --list-all
Mã:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Cài đặt Fail2Ban
Theo mặc định, gói Fail2Ban không có trong repo mặc định của Alma Linux. Vì vậy, bạn sẽ cần cài đặt nó từ repo EPEL. Bạn có thể cài đặt kho lưu trữ EPEL bằng lệnh sau:
Mã:
dnf install epel-release -y
Mã:
dnf install fail2ban fail2ban-firewalld -y
Mã:
systemctl start fail2ban
systemctl enable fail2ban
Mã:
systemctl status fail2ban
Mã:
? fail2ban.service - Dịch vụ Fail2Ban Đã tải: đã tải (/usr/lib/systemd/system/fail2ban.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ bảy 2022-02-19 08:58:34 UTC; 6 giây trước Tài liệu: man:fail2ban(1) Quy trình: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (mã=thoát, trạng thái=0/THÀNH CÔNG) PID chính: 7840 (fail2ban-server) Nhiệm vụ: 3 (giới hạn: 23696) Bộ nhớ: 10,8M CGroup: /system.slice/fail2ban.service ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start19/02 08:58:34 linux systemd[1]: Đang khởi động dịch vụ Fail2Ban...19/02 08:58:34 linux systemd[1]: Đã khởi động dịch vụ Fail2Ban.19/02 08:58:35 linux fail2ban-server[7840]: Máy chủ đã sẵn sàng
Cấu hình Fail2Ban
Tệp cấu hình chính của Fail2Ban nằm tại /etc/fail2ban/jail.conf. Tốt nhất là tạo một bản sao của tệp cấu hình chính. Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Mã:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Mã:
systemctl restart fail2ban
Bảo mật SSH với Fail2Ban
Theo mặc định, Fail2Ban không được cấu hình để chặn IP từ xa. Bạn sẽ cần cấu hình tệp cấu hình jail Fail2Ban cho từng dịch vụ mà bạn muốn bảo vệ.Để bảo vệ dịch vụ SSH, hãy tạo tệp cấu hình jail cho SSH bằng lệnh sau:
Mã:
nano /etc/fail2ban/jail.d/sshd.local
Mã:
# Cấu hình này sẽ chặn máy chủ từ xa trong 2 giờ sau 3 lần đăng nhập SSH không thành công.[sshd]enabled = truebantime = 2hmaxretry = 3
Mã:
systemctl restart fail2ban
Mã:
fail2ban-client status
Mã:
Trạng thái|- Số lượng jail: 1`- Danh sách Jail: sshd
Mã:
fail2ban-client status sshd
Mã:
Trạng thái của jail: sshd|- Bộ lọc| |- Hiện không thành công: 6| |- Tổng số lần không thành công: 15| `- Nhật ký khớp: _SYSTEMD_UNIT=sshd.service + _COMM=sshd`- Hành động |- Hiện đang bị cấm: 2 |- Tổng số bị cấm: 2 `- Danh sách IP bị cấm: 96.9.67.48 43.154.142.8
Mã:
fail2ban-client unban remote-ip-address