SSH 22端口被暴力破解?fail2ban 排查与封禁实战 核心要点图解,SSH暴力破解可通过/var/log/auth.log中的Failed password记录快速确认。;fail2ban能自动分析日志并调用iptables封禁恶意IP,是阻断SSH爆破的有效工具。;配置fail2ban时需调整bantime、findtime和maxretry以平衡安全与误封。;结合密钥登录、更改默认端口和防火墙限制可大幅降低SSH被爆破风险。
SSH 22端口被暴力破解?fail2ban 排查与封禁实战 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • SSH暴力破解可通过/var/log/auth.log中的Failed password记录快速确认。
  • fail2ban能自动分析日志并调用iptables封禁恶意IP,是阻断SSH爆破的有效工具。
  • 配置fail2ban时需调整bantime、findtime和maxretry以平衡安全与误封。
  • 结合密钥登录、更改默认端口和防火墙限制可大幅降低SSH被爆破风险。

痛点:SSH 22 端口为何总被盯上

SSH 22 端口是 Linux 服务器的默认管理入口,也是攻击者自动化扫描和暴力破解的首选目标。一旦被攻破,服务器将面临数据泄露、勒索软件植入等严重风险。本文从实战角度出发,手把手教你如何快速排查 SSH 暴力破解迹象,并通过 fail2ban 自动封禁恶意 IP,同时给出加固建议,让你在 30 分钟内完成从发现到阻断的全过程。

第一步:确认是否遭受 SSH 暴力破解

登录服务器,执行以下命令查看认证日志中的失败记录:

grep 'Failed password' /var/log/auth.log | tail -20

如果输出中频繁出现来自不同 IP 的“Failed password for root”等字样,说明正在被爆破。还可以统计失败次数最多的 IP:

grep 'Failed password' /var/log/auth.log | awk '{print }' | sort | uniq -c | sort -nr | head -10

另外,使用 lastb 命令可查看失败的登录尝试列表。确认攻击后,立即进入下一步防护。

第二步:安装并配置 fail2ban

fail2ban 能监控日志文件,根据规则自动封禁恶意 IP。以 Ubuntu/Debian 为例:

sudo apt update
sudo apt install fail2ban -y

创建本地配置文件 /etc/fail2ban/jail.local,内容如下:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 192.168.1.0/24

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

参数说明:bantime 为封禁时长,findtime 为检测时间窗口,maxretry 为最大失败次数,ignoreip 用于设置白名单。保存后重启服务:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

第三步:验证封禁效果与日常管理

查看 fail2ban 运行状态:

sudo fail2ban-client status sshd

输出中会显示当前封禁的 IP 列表。若要手动解封某个 IP:

sudo fail2ban-client set sshd unbanip 192.0.2.1

也可通过 iptables 查看封禁规则:

sudo iptables -L -n --line-numbers | grep f2b

建议配置邮件通知,以便及时感知攻击动态。在 jail.local 的 [DEFAULT] 段添加:

destemail = your@email.com
sender = fail2ban@yourhost
mta = sendmail
action = %(action_mwl)s

第四步:SSH 加固检查清单

fail2ban 是事后封禁,结合以下措施可大幅降低风险:

  • 禁用密码登录:修改 /etc/ssh/sshd_config 中 PasswordAuthentication no,改用密钥认证。
  • 更改默认端口:将 Port 22 改为其他端口,减少自动化扫描。
  • 限制访问源 IP:通过防火墙仅允许可信 IP 访问 SSH 端口。
  • 启用双因素认证:如 Google Authenticator,增加额外保护层。
  • 定期更新软件:保持 OpenSSH 为最新版本,修复已知漏洞。

完成以上步骤后,SSH 暴力破解的成功率将趋近于零。若你希望更省心地管理服务器安全,可以考虑使用 AegisX 的入侵检测与自动封禁能力,它集成了类似 fail2ban 的功能,并提供可视化面板和实时告警,适合多服务器场景。

行动建议

立即登录你的服务器,执行 grep 'Failed password' /var/log/auth.log | wc -l 检查失败次数。若数值异常,请按本文步骤部署 fail2ban,并逐项完成加固清单。安全无小事,早一步行动,少一分风险。

常见问题(FAQ)

如何快速判断SSH是否正在被暴力破解?

执行 grep 'Failed password' /var/log/auth.log | tail -20 查看最近失败记录。若出现大量来自不同IP的失败尝试,或同一IP高频失败,即可判定遭受暴力破解。也可用 lastb 命令查看失败登录列表。

fail2ban 安装后需要做哪些基本配置?

安装后主要修改 /etc/fail2ban/jail.local 文件,启用 [sshd] 并设置 enabled = true,调整 bantime(封禁时长)、findtime(检测时间窗)和 maxretry(最大失败次数)。建议 bantime 设为 1h 以上,maxretry 设为 3-5 次。

fail2ban 封禁后如何查看或解封 IP?

使用 fail2ban-client status sshd 查看当前封禁列表。解封单个 IP 用 fail2ban-client set sshd unbanip 。也可直接查看 iptables 规则:iptables -L -n --line-numbers | grep f2b。

fail2ban 会不会误封正常用户?如何避免?

有可能误封,尤其是用户多次输错密码时。可通过设置白名单(ignoreip)排除可信 IP,并适当调大 maxretry(如 5 次)和 findtime(如 10 分钟)。同时启用邮件通知以及时发现误封。

除了 fail2ban,还有哪些 SSH 防护措施?

建议禁用密码登录,改用密钥认证;修改 SSH 默认端口;使用防火墙限制访问源 IP;启用双因素认证;定期更新 SSH 服务端软件。多层防护可显著降低被入侵风险。