首页/系统/Linux 运维命令速查/统计 SSH 失败登录来源与联动封禁

统计 SSH 失败登录来源与联动封禁

爆破排查:从 auth 日志统计失败 IP 与用户名 TopN,判断攻击面并联动 fail2ban/firewalld 封禁;先统计后处置。

Linux 运维命令速查系统更新于 2026-10-13

统计失败登录来源与联动封禁

服务器被暴力破解时,认证日志里会留下大量失败记录。排查的第一步不是马上封地址,而是先统计:失败来源排行、被尝试的用户名排行、尝试次数与时间分布。看清攻击面之后再决定处置方式——交给自动封禁工具按策略拦截,或者手动加临时拒绝规则。这一步做对了,处置才不会误伤正常的运维来源。

基本信息

适用平台GNU/Linux(认证日志与防火墙工具)
数据来源认证日志、安全日志或日志服务
统计对象失败登录的来源地址与用户名
联动手段自动封禁工具或防火墙拒绝规则
处置顺序先统计后处置
注意封禁前排除正常出口地址

典型使用场景

  • 服务器被大规模爆破时快速看清来源分布。
  • 排查登录失败激增是否集中在少量来源地址。
  • 评估是否需要调整认证策略(改用密钥登录、限制来源)。
  • 给安全事件报告提供统计证据。
  • 验证自动封禁工具是否按预期拦截。

统计与联动

统计与联动
grep 'Failed password' /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head
grep 'Failed password' /var/log/auth.log | awk '{for(i=1;i<=NF;i++) if($i=="for") print $(i+1)}' | sort | uniq -c | sort -rn | head
journalctl -u sshd --since '24 hours ago' | grep -c 'Failed password'
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=203.0.113.7 reject'
fail2ban-client status sshd
ssh sample-host uptime                            # 确认加规则后正常运维仍可用

统计对象与方向

统计对象含义处置方向
失败来源排行攻击来源集中度集中时优先按地址拦截
失败用户名排行被尝试的账户名常见于猜测默认账户
次数与时间分布攻击强度与节奏突增时配合告警关注
成功登录记录正常访问与可能的入侵异常来源的成功登录要重点看
自动封禁状态拦截是否生效查看当前封禁列表
正常运维来源以免误封封禁前先排除这些地址
统计口径要以本机实际日志格式为准:不同发行版与认证实现的字段位置不同,直接照搬列号容易取到错误内容,先取样确认再统计。
处置必须包含封禁与策略加固两部分:只清日志不封禁等于放任,只封禁不加固认证方式则攻击会换来源继续。
封禁前先排除办公出口与监控来源地址,避免把自己挡在门外;加完规则立即用正常来源验证一次登录可用性。

易错点

  • 不做统计直接全量封禁,误伤正常运维来源,自己失去登录权限。
  • 只清理日志不封禁来源,攻击持续进行,问题反复出现。
  • 统计脚本的字段偏移直接照搬,日志格式不同导致统计结果错误,处置方向跟着错。
  • 只看失败不看成功记录,漏掉已经成功登录的异常来源。

数据来源与参考

  • OpenSSH 日志格式
  • fail2ban 官方文档
  • firewalld 官方文档(rich rule)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌