如何配置 Fail2ban 防止雨云服务器 SSH 暴力破解

文章导读
在雨云或其他 Linux 云服务器上配置 Fail2ban 防止 SSH 暴力破解,最直接的方法是安装 Fail2ban 服务并启用 sshd 监狱,设定合理的重试次数和封禁时长。适用场景为开放 SSH 端口的公网服务器,风险边界在于配置错误可能导致管理员自身 IP 被误封,操作前务必保留备用连接通道。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

在雨云或其他 Linux 云服务器上配置 Fail2ban 防止 SSH 暴力破解,最直接的方法是安装 Fail2ban 服务并启用 sshd 监狱,设定合理的重试次数和封禁时长。适用场景为开放 SSH 端口的公网服务器,风险边界在于配置错误可能导致管理员自身 IP 被误封,操作前务必保留备用连接通道。

先说结论:Fail2ban 能有效自动化封禁频繁尝试登录的 IP,但必须配合防火墙后端使用,且不能替代强密码或密钥认证。

  • 先判断:确认服务器操作系统类型及防火墙后端是 iptables、nftables 还是 firewalld。
  • 优先做:修改 jail.local 配置文件而非直接修改 jail.conf,避免更新被覆盖。
  • 再验证:使用 fail2ban-client 命令查看状态,并通过日志确认封禁动作是否触发。

命令速用版

以下命令适用于基于 Debian/Ubuntu 或 CentOS/RHEL 的常见 Linux 发行版,需 root 权限执行。

# 安装 Fail2ban
sudo apt install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban  # CentOS/RHEL

# 启动并设置开机自启
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 查看 SSH 监狱状态
sudo fail2ban-client status sshd

为什么会这样

Fail2ban 的工作原理是定期扫描指定的日志文件,匹配预设的正则表达式来识别失败登录尝试。

当同一 IP 在指定时间内失败次数超过阈值,Fail2ban 会调用系统防火墙命令将该 IP 加入拒绝列表。这种机制属于事后防御,旨在增加攻击者的时间成本,而非完全阻止连接请求。

如何配置 Fail2ban 防止雨云服务器 SSH 暴力破解

分步处理

配置过程分为安装、配置文件初始化、参数调整和启动服务四个步骤。

  1. 初始化配置:安装完成后,将默认配置复制到本地配置文件,命令为 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. 编辑配置:使用编辑器打开 /etc/fail2ban/jail.local,找到 [sshd] 段落。
  3. 设定参数:设置 enabled = true,调整 maxretry(允许最大重试次数,建议 3-5 次)和 bantime(封禁时长,单位秒,建议 3600 以上)。
  4. 重载服务:保存文件后,执行 sudo systemctl restart fail2ban 使配置生效。

怎么验证是否生效

验证分为状态检查和日志审计两部分,确保服务运行且规则被加载。

执行 sudo fail2ban-client status sshd,输出中应包含 Currently failed 和 Total banned 字段。查看日志文件 /var/log/fail2ban.log,搜索 "Ban" 关键字,确认是否有 IP 被封禁的记录。

如何配置 Fail2ban 防止雨云服务器 SSH 暴力破解

常见坑

配置 Fail2ban 时容易忽略防火墙兼容性和自身 IP 白名单设置。

  • 防火墙后端冲突:如果服务器使用 firewalld 或 ufw,需在 jail.local 中指定 banaction 为对应后端,否则封禁命令无效。
  • 自身误封:测试时不要在自己当前连接的 IP 上多次输错密码,建议先将管理 IP 加入 ignoreip 白名单。
  • 配置优先级:直接修改 jail.conf 会在软件升级时被还原,必须修改 jail.local

常见问题

如何解除被误封的 IP?

使用命令 sudo fail2ban-client set sshd unbanip <IP 地址> 即可立即解封指定 IP。

SSH 端口修改后如何配置?

jail.local[sshd] 段落中添加 port = 你的端口号,确保 Fail2ban 监控正确的端口。

Fail2ban 会影响服务器性能吗?

公开资料中没有看到可靠的量化数据,但在常规配置下,Fail2ban 作为后台守护进程占用的 CPU 和内存资源极低,通常可忽略不计。

参考来源

  • Fail2ban Official GitHub, fail2ban/fail2ban, https://github.com/fail2ban/fail2ban
  • Ubuntu Documentation, Fail2ban, https://ubuntu.com/server/docs/security-fail2ban