fail2ban 防 SSH 暴力破解实战

配置 fail2ban 自动封禁暴力破解 SSH 的来源 IP,覆盖安装、jail 配置、封禁时长与白名单设置,并说明如何避免误封自己以及如何查看封禁记录。

为什么 SSH 是攻击重点

公网服务器的 22 端口一旦开放,就会持续被扫描器尝试弱口令。这类攻击的特点是频率高、来自大量不同 IP、单个来源尝试次数有限。靠人工看日志封禁来不及,fail2ban 的作用就是自动统计失败次数并用防火墙规则拒绝这些来源。

安装与基本原理

用系统包管理器安装 fail2ban。它的工作方式是读取指定日志(如 /var/log/secure 或 auth.log),按正则匹配失败登录,超过阈值就调用防火墙插入拒绝规则。它不修改 SSH 服务本身,属于旁路防护,误伤风险相对可控。

配置 SSH jail

在 /etc/fail2ban/jail.local 中启用 sshd 相关配置。关键参数含义如下:

  • enabled:开启该 jail
  • port:SSH 端口,若改过端口需同步修改
  • filter:匹配规则,sshd 是官方自带的
  • logpath:认证日志路径,不同发行版路径不同
  • maxretry:允许失败次数,通常 3-6
  • bantime:封禁时长,初期建议 10 分钟到 1 小时,误封影响小
  • findtime:统计窗口,表示在这个时间段内累计失败次数

避免把自己锁在外面

配置前先把你的固定 IP 加入 ignoreip 白名单,尤其是通过公司或家里固定网络管理服务器时。若你经常变换 IP,建议改用密钥登录并禁用密码登录,这样即使被封也能通过其他通道处理。同时建议先另开一个会话验证配置生效,再关闭当前连接,避免配置错误直接断送访问。

常见问题

现象 处理
自己被封 通过云控制台 VNC 登录,执行 fail2ban-client unban ip,或用白名单避免复发
没有封禁记录 检查 logpath 是否指向真实存在的日志文件
封禁未生效 确认防火墙后端(iptables/nftables/云安全组)与 fail2ban 兼容
误封正常用户 调大 maxretry 或缩短 bantime,先观察再收紧

进一步加固

fail2ban 只是第一层。更有效的做法是关闭密码登录、改用 SSH 密钥、限制来源 IP 段、禁用 root 直接登录。把这些做完之后,暴力破解基本失去意义,fail2ban 转而防御其他服务(如 FTP、邮件、后台登录)的爆破尝试。定期 fail2ban-client status 看看哪些 jail 活跃、封了多少 IP,能让你对服务器被攻击的状况心里有数。

Previous Article

Nginx 配置 HTTPS 与证书自动续期(certbot 实操)

Next Article

Linux 服务器磁盘空间清理实操

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *