成功登录记录是攻击者突破口令或密钥后的首要痕迹,需重点排查Accepted password、异常IP、非工作时间及高频登录;结合last/lastb/lastlog分析时空异常,并交叉验证其他系统痕迹以确认入侵。

从 /var/log/secure 或 /var/log/auth.log 抓“成功登录”线索
攻击者一旦突破口令或密钥,最常留下的第一处痕迹就是合法的 SSH 登录记录。别只盯着“Failed password”,Accepted password 才是关键信号——尤其是来自陌生 IP、非工作时间、或高频短时多次登录的情况。
- 用
grep "Accepted" /var/log/secure | tail -50快速翻最近 50 条成功登录;CentOS/RHEL 默认用/var/log/secure,Ubuntu/Debian 用/var/log/auth.log - 注意匹配
from后的 IP 和port:比如from 203.124.87.15 port 56231,这个端口不是标准 SSH 端口(22),说明对方可能在扫描或已控制跳板机 - 如果日志里大量出现同一 IP 对不同用户名的
Accepted记录(如root、admin、test01),基本可判定是暴力破解得手后的横向尝试
用 last、lastb 和 lastlog 追踪登录时空异常
这三个命令背后分别读取的是 /var/log/wtmp(历史登录)、/var/log/btmp(失败登录)和 /var/log/lastlog(每个用户最后一次登录)。它们不依赖 syslog,即使攻击者清空了 secure,只要没删或覆盖这些二进制文件,痕迹仍在。
-
last -n 30查最近 30 次登录,重点看pts/0类远程会话的登录时间、IP、持续时长;突然出现凌晨 3 点从俄罗斯 IP 登录并持续 12 小时的记录,大概率异常 -
lastb -n 20查最近 20 次失败登录,若发现某 IP 在 1 秒内触发 17 次失败(Invalid user+Failed password组合),说明正在跑字典爆破 lastlog | awk '$3 != "" && $3 可快速筛出“最后登录时间早于今年 1 月 1 日”的账号——这类长期未用却突然活跃的账户,极可能是被植入的后门账号
检查 /etc/passwd 里有没有“不该有 shell”的人
攻击者加号账户,往往直接给 /bin/bash 或 /bin/sh,而不是系统默认的 /usr/sbin/nologin 或 /bin/false。但更隐蔽的是 UID=0 的隐藏 root 变体(如 rooot、admim),或 UID 小于 1000 却不在初始系统用户列表里的账号。
-
awk -F: '$3 == 0 {print}' /etc/passwd列出所有 UID 为 0 的用户,除root外都需人工确认 -
awk -F: '$7 !~ /(nologin|false|sync|halt|shutdown)$/ {print $1, $3, $7}' /etc/passwd找出所有能真正登录的用户(shell 不是受限类型),再结合lastlog看他们是否真有活动 - 特别警惕用户名含数字/下划线/非常规拼写的账号(如
www_data_2、x99),这些不像管理员手动创建,倒像脚本批量生成
比对 wtmp/btmp 时间戳与系统时间是否严重偏移
高级攻击者有时会篡改系统时间来混淆日志时间轴,让 last 显示的登录时间变成“未来”或“远古”。这时 wtmp 文件本身的修改时间(stat /var/log/wtmp)就成关键证据。
-
stat /var/log/wtmp | grep "Modify:"查文件最后修改时间;如果显示是“2026-01-28 23:59:59”,但last里却有“2026-01-29 01:00:00”的登录记录,说明时间被调过 -
ls -lt /var/log/*.log /var/log/*/*.log 2>/dev/null | head -5快速扫一遍日志文件的修改顺序:正常情况下secure、messages、wtmp应该是相近时间更新;若wtmp时间明显晚于其他日志几小时,且内容又“恰好”缺失某段时间,就要怀疑被裁剪过 - 注意:
btmp默认只有 root 可读,普通用户执行lastb会报权限错误——这不是异常,是设计如此;但如果你发现lastb返回空,而stat /var/log/btmp显示大小为 0,则说明它已被清空
真正的难点不在命令会不会敲,而在判断“多异常才算入侵”。比如单次异地登录未必是问题,但配合 /etc/passwd 新增低 UID 账户、/tmp 下出现无名 ELF 文件、以及 netstat 显示一个监听在 31337 端口的未知进程——这三者同时出现,才构成强证据链。日志只是起点,不是终点。










