返回

Linux服务器如何配置Fail2ban?SSH暴力破解防护实战

2026-09-13 Linux Fail2ban 安全防护 4 0

为什么Linux服务器需要Fail2Ban

公网Linux服务器只要开放SSH端口,通常就会持续收到自动化扫描和密码尝试。攻击者往往通过字典不断尝试 root、admin 等常见账户,如果服务器仍然允许密码登录,风险会进一步增加。

Fail2Ban的工作方式比较简单:监控SSH认证失败日志,当某个IP在规定时间内连续失败达到阈值后,就通过防火墙临时封禁这个IP。它并不能替代SSH密钥、权限控制和防火墙,但非常适合作为服务器的第一层自动化防护。

安装Fail2Ban

Ubuntu、Debian可以直接安装:

sudo apt update
sudo apt install fail2ban -y

安装完成后启动服务:

sudo systemctl enable --now fail2ban

检查运行状态:

sudo systemctl status fail2ban

如果看到 active (running),说明Fail2Ban已经正常运行。

配置SSH暴力破解防护

不要直接修改默认的 jail.conf,建议创建独立的 jail.local:

sudo nano /etc/fail2ban/jail.local

加入下面的配置:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd

[sshd]
enabled = true
port = ssh

这里几个参数比较重要:

  • bantime = 1h 表示封禁IP 1小时。
  • findtime = 10m 表示在10分钟内统计失败次数。
  • maxretry = 5 表示同一个IP达到5次失败后执行封禁。

现在很多Linux发行版使用systemd journal记录服务日志,因此 backend = systemd 对这类环境尤其重要。如果服务器仍然使用 /var/log/auth.log 等传统日志文件,则需要根据实际日志位置进行配置。Fail2Ban官方项目也明确支持从日志文件中检测认证失败。

保存后重新加载:

sudo systemctl restart fail2ban

检查SSH防护是否生效

查看Fail2Ban当前状态:

sudo fail2ban-client status

如果配置正确,一般可以看到:

Jail list: sshd

继续查看SSH规则:

sudo fail2ban-client status sshd

重点关注:

Currently banned
Total banned
Banned IP list

其中 Currently banned 是当前正在封禁的IP数量,Banned IP list 可以查看具体被封禁的地址。

如果没有检测到任何失败记录,可以先检查SSH日志。例如使用systemd的服务器可以执行:

sudo journalctl -u ssh --since "1 hour ago"

部分发行版服务名称可能是 sshd:

sudo journalctl -u sshd --since "1 hour ago"

如何手动解封IP

如果误封了自己的IP,可以使用:

sudo fail2ban-client set sshd unbanip 192.168.1.100

将IP替换成实际地址。

也可以查看当前封禁列表:

sudo fail2ban-client status sshd

服务器管理员应该特别注意白名单配置。如果自己的固定办公IP经常连接服务器,可以考虑设置 ignoreip,避免因为输错密码导致自己被封。

例如:

[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.100

Fail2Ban之外,还应该做什么

Fail2Ban并不是SSH安全的全部。更推荐使用SSH密钥认证,并尽量关闭密码登录。Red Hat的安全指南同样建议使用密钥认证降低攻击面,并可以通过 PermitRootLogin 限制root直接登录。

例如确认已经配置好SSH密钥后,可以在 /etc/ssh/sshd_config 中考虑:

PasswordAuthentication no
PermitRootLogin no

修改SSH配置后先检查:

sudo sshd -t

确认没有语法错误,再重新加载SSH服务:

sudo systemctl reload sshd

不同发行版的服务名称可能是 ssh,修改前最好保持当前SSH连接不要关闭,并通过另一个终端测试新的登录方式,避免配置错误后无法远程进入服务器。Red Hat文档也要求SSH配置修改后重新加载或重启 sshd 才能生效。

另外,修改SSH默认端口只能减少针对22端口的自动化扫描,并不能真正阻止攻击者发现SSH服务。真正重要的是密钥认证、访问控制和防火墙策略。

总结

对于公网Linux服务器,一个实用的SSH安全方案可以采用 Fail2Ban + SSH密钥 + 禁止密码登录 + 禁止root直接登录 + 防火墙限制 的组合。

其中Fail2Ban负责自动发现大量失败登录并临时封禁IP,SSH密钥负责提高认证安全性,防火墙则进一步限制不必要的网络访问。完成配置后,定期通过 fail2ban-client status sshd 和系统日志检查防护是否正常,比单纯安装Fail2Ban更加可靠。

顶部