服务器遭ssh暴力破解,证据见/var/log/secure中大量failed password日志及root用户异常登录成功记录,结合威胁情报确认攻击ip具恶意扫描行为。

当你发现服务器CPU异常飙升、SSH连接变慢或安全组频繁触发告警时,必须立即检查是否存在黑客扫描和暴力破解行为——这些攻击往往在成功入侵前就已留下大量日志痕迹,而关键证据就藏在/var/log/secure(CentOS/RHEL)或/var/log/auth.log(Ubuntu/Debian)里。
定位暴力破解的原始日志入口
先确认日志文件是否存在且可读:执行 ls -l /var/log/secure /var/log/auth.log 2>/dev/null,若返回“没有那个文件”,说明系统类型不匹配——CentOS系看/var/log/secure,Debian/Ubuntu系看/var/log/auth.log。
用 tail -n 200 /var/log/secure 快速查看最近200行登录记录,重点找含 Failed password 或 Invalid user 的行。不要直接翻页,否则可能漏掉连续爆破段。
这一步必须做,因为攻击者常在凌晨3–5点集中扫号,人工滚动容易跳过时间密集区。
筛选高频失败登录IP并排序
执行命令:grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -15
该命令提取每条失败记录中的IP地址(位于倒数第4字段),统计出现次数并降序排列,输出前15个最可疑IP。注意:如果某IP失败次数超过50次,【基本可判定为自动化爆破】,不是误操作。
若结果为空,尝试换用 grep "Invalid user" /var/log/secure ——有些攻击工具会先试探不存在的用户名,再爆破真实账号。
交叉验证登录失败与成功的时间关联
方法一:查指定IP的完整行为链
假设上一步发现恶意IP是 185.143.222.77,执行:grep "185.143.222.77" /var/log/secure | grep -E "(Failed|Accepted|Invalid)" | tail -30。这能看清它是否在大量失败后突然成功登录——这是爆破成功的典型信号。
方法二:查root账户的异常登录时段
执行:grep "Accepted.*for root" /var/log/secure | awk '{print $1,$2,$3,$9,$11}' | head -10。重点看时间戳和来源IP,【若出现非办公时段+境外IP组合,立即标记】。
识别扫描行为的特征日志模式
第一步:抓取短时间内的高频GET请求(Web层扫描)
若服务器跑Nginx/Apache,执行:tail -n 5000 /var/log/nginx/access.log | awk '$9 ~ /^40[0-4]$/ {print $1}' | sort | uniq -c | sort -nr | head -10。返回的IP若单秒内触发超20个404,大概率在目录爆破(如扫/wp-admin、/.git/config)。
第二步:查系统级端口扫描痕迹
执行:grep "sshd.*invalid" /var/log/secure | head -5。若看到类似 sshd[12345]: Invalid user admin from 203.123.45.67 port 58321,且该IP在1分钟内反复更换用户名(admin、test、ftp、mysql…),就是典型密码喷洒扫描。
第三步:检查是否有日志被清空或截断
运行:stat /var/log/secure | grep "Modify\|Change"。若修改时间(Modify)比系统启动时间(uptime -s)还新,【说明有人手动删过日志,高度可疑】。











