首页/安全/取证与溯源速查/SSH 失败登录统计与来源聚合
Linux 取证135 条

SSH 失败登录统计与来源聚合

把 Failed password 行按来源 IP 聚合,可得到爆破规模与主要来源;统计结果既是阻断依据,也是时间线的密度信号。

取证与溯源速查安全更新于 2026-10-13

失败统计能说明什么

把认证日志里的 Failed password 行按来源 IP 与账号聚合,得到的是爆破的规模与结构:有多少次尝试、来自几个来源、针对哪些账号、持续了多久。这组数字有三重用途——作为阻断依据、作为时间线上的密度信号、以及作为「是否得手」的前置条件(大量失败之后是否出现成功登录)。聚合前要先确认日志覆盖范围,轮转文件不纳入统计会让规模被严重低估。

基本信息

数据来源/var/log/auth.log(Debian 系)、/var/log/secure(RHEL 系)及其轮转文件
聚合维度来源 IP、被尝试账号、时间分布(按小时或按天)
关键模式Failed password、Invalid user、Connection closed by authenticating user
配套证据btmp/lastb(失败记录文件)、成功登录的 Accepted 行
环境干扰前置代理、跳板机、容器网络会让日志中的 IP 变成代理地址
产出形式聚合统计表 + 时间分布图,作为报告的量化部分

典型使用场景

  • 评估爆破强度:总量、来源数、时间跨度
  • 为封禁与限速策略提供依据(哪些 IP 该进黑名单)
  • 判断攻击是广撒网还是针对特定账号(决定口令策略优先级)
  • 把失败高峰与业务异常时间段对齐,判断是否伴随其他攻击行为
  • 确认拦截措施是否生效:封禁后同一来源的记录是否停止
  • 为「未得手」的结论提供支撑,避免只凭没有成功记录就下判断

聚合统计

聚合统计
# 总次数与轮转文件一起统计,避免漏高峰
zgrep -c 'Failed password' /var/log/auth.log* 2>/dev/null | tail -5
# 按来源地址聚合,取前 20
zcat -f /var/log/auth.log* 2>/dev/null | grep -oE 'from [0-9a-fA-F:.]+ port' | awk '{print $2}' | sort | uniq -c | sort -rn | head -20
# 按被尝试账号聚合
zcat -f /var/log/auth.log* 2>/dev/null | grep -oE 'Invalid user [^ ]+|Failed password for [^ ]+' | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20
# 按小时看分布,定位攻击高峰
zcat -f /var/log/auth.log* 2>/dev/null | grep 'Failed password' | awk '{print $1,$2,$3}' | cut -d: -f1 | sort | uniq -c
# 是否存在失败之后的成功(得手信号)
zcat -f /var/log/auth.log* 2>/dev/null | grep -E 'Accepted|Failed' | tail -40

统计口径与判读

统计项含义判读要点
尝试总量指定时间窗内的失败次数与业务规模对比才有意义;单看绝对值容易夸大
来源 IP 数不同来源地址的数量大量分散来源多为僵尸网络扫描
Top 来源占比单个 IP 占全部尝试的比例集中在一两个来源说明是定向目标
被尝试账号涉及的用户名出现不存在的账号名说明按字典批量尝试
失败与成功比同来源的失败次数与是否出现成功失败后短时间内出现成功,是要优先排查的组合
同一 IP 对大量不同账号失败,通常是字典爆破;同一账号被反复尝试,更像是针对性的口令猜测。两种情形的处置优先级不同,聚合时按维度分开看。
引入 fail2ban、反向代理或负载均衡后,日志中记录的来源地址可能是代理地址而不是真实客户端。统计前先确认部署结构,否则会把内网地址误判为攻击来源。
统计只覆盖日志保留期内的数据。超出保留期的历史尝试已不可见,报告里应写明统计区间,不要把它当作完整历史。

易错点

  • 只统计当前 auth.log,未纳入 auth.log.1 与压缩包,爆破高峰期正好落在轮转文件里
  • 把来源 IP 当作真实攻击者地址,未考虑代理、NAT 与跳板
  • 只算总量不看分布,无法区分广撒网扫描与针对单账号的定向猜测
  • 只看失败记录,未确认是否已有成功登录,得手与否说不清
  • 统计区间含业务自身触发的失败(运维脚本改过口令),未做基线排除

数据来源与参考

  • OpenSSH 手册(sshd 日志级别与格式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌