fail2ban 是一个用于防止服务器被暴力破解的工具。它通过监控日志文件,检测到多次失败的登录尝试后,会自动屏蔽攻击者的 IP 地址,并可以发送警告邮件通知管理员。fail2ban 支持多种服务(如 SSH、FTP、Apache 等),并且可以通过配置文件进行灵活定制。
在基于 Debian 的系统(如 Ubuntu)上,可以使用以下命令安装:
sudo apt update
sudo apt install fail2ban
在基于 Red Hat 的系统(如 CentOS)上,可以使用以下命令安装:
sudo yum install epel-release
sudo yum install fail2ban
fail2ban 的主要配置文件位于 /etc/fail2ban/
目录下。默认配置文件是 jail.conf
,但建议不要直接修改该文件,而是创建一个自定义配置文件 jail.local
来覆盖默认设置。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
使用文本编辑器打开 jail.local
文件:
sudo nano /etc/fail2ban/jail.local
示例配置:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 600
findtime = 600
maxretry = 3
在 jail.local
文件中,可以为不同的服务配置规则。例如,保护 SSH 服务:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
启动 fail2ban 服务:
sudo systemctl start fail2ban
设置开机自启:
sudo systemctl enable fail2ban
检查 fail2ban 状态:
sudo fail2ban-client status
查看特定服务的状态:
sudo fail2ban-client status sshd
可以通过模拟多次错误登录来测试 fail2ban 是否生效。例如,使用 ssh
连接到服务器时故意输入错误密码多次,然后检查是否被阻止。
fail2ban 还支持与其他工具集成,例如与防火墙(iptables)或云服务商的网络 ACL 结合使用,以增强安全性。
fail2ban 默认使用 iptables 来阻止恶意 IP。可以通过以下命令查看当前的 iptables 规则:
sudo iptables -L
用户可以根据自己的需求创建自定义过滤器。过滤器文件通常位于 /etc/fail2ban/filter.d/
目录下。例如,为 Apache 创建一个过滤器:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*" 404.*
ignoreregex =
然后在 jail.local
中启用该过滤器:
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6
fail2ban 是一个强大且灵活的工具,可以帮助管理员有效地防止暴力破解攻击。通过合理的配置和扩展,可以进一步提升服务器的安全性。