Fail2ban监控日志,并在多次登录失败后暂时阻止IP地址。它通常用于减少公共Linux服务器上的SSH暴力破解噪音。
Fail2ban通过读取日志文件,使用过滤器匹配登录失败模式,并通过监狱配置应用临时禁令来工作。
Ubuntu或Debian
sudo apt update sudo apt install fail2ban sudo systemctl enable --now fail2ban
AlmaLinux、Rocky Linux、Oracle Linux或CentOS
sudo dnf install fail2ban sudo systemctl enable --now fail2ban
如果软件包不可用,请先为您的发行版启用适当的额外存储库。
创建本地监狱配置
不要直接编辑jail.conf。创建或编辑jail.local,以便软件包更新不会覆盖您的更改。
sudo nano /etc/fail2ban/jail.local
一个基本的SSH监狱配置如下:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 5 findtime = 10m bantime = 1h
在AlmaLinux、Rocky Linux、Oracle Linux或CentOS上,SSH日志可能位于/var/log/secure:
logpath = /var/log/secure
常见设置
| 设置 | 控制内容 |
|---|---|
enabled | 打开或关闭监狱。 |
port | Fail2ban应保护的服务端口。 |
filter | 用于检测失败尝试的Fail2ban过滤器。 |
logpath | Fail2ban读取的日志文件。 |
maxretry | 在禁令之前允许的失败次数。 |
findtime | Fail2ban统计失败次数的时间窗口。 |
bantime | IP被禁的时长。 |
ignoreip | 永远不应被禁的IP地址。 |
将您的IP列入白名单
如果您有固定的家庭或办公室IP,请将其添加到ignoreip中,以免在测试时将自己锁定:
[DEFAULT] ignoreip = 127.0.0.1/8 YOUR_IP_ADDRESS
仅添加您信任的IP地址。除非您了解安全影响,否则不要将广泛的公共范围列入白名单。
重启并检查Fail2ban
- 更改监狱配置后重启Fail2ban:
sudo systemctl restart fail2ban
- 检查Fail2ban服务和监狱状态:
sudo systemctl status fail2ban --no-pager sudo fail2ban-client status sudo fail2ban-client status sshd

解除IP地址的禁令
sudo fail2ban-client set sshd unbanip IP_ADDRESS
查看Fail2ban日志
sudo journalctl -u fail2ban --since "1 hour ago" sudo tail -100 /var/log/fail2ban.log
Fail2ban很有帮助,但它不能替代SSH密钥、强密码、更新和合理的防火墙。
