登录记录里的时间缺口
wtmp 记录登录、注销与重启事件,utmp 保存当前登录会话,btmp 保存失败登录尝试,三者分别由 last、who 与 lastb 读取。这些文件的起止时间应与机器运行时长匹配:如果 wtmp 只覆盖最近几天,而主机已经连续运行数月,说明文件被清空、重建或轮转策略过于激进。判断方式是与 uptime、系统安装时间、日志时间范围交叉对照,而不是只看单个文件的第一条记录。
基本信息
| 文件 | /var/log/wtmp、/var/run/utmp、/var/log/btmp |
|---|---|
| 读取命令 | last、lastb、who、utmpdump |
| 对照对象 | uptime -s 的启动时间与 last reboot 的重启记录 |
| 异常表现 | 时间倒流、记录过短、完全没有重启行 |
典型使用场景
- 判断登录记录是否被人为清空或轮转覆盖
- 核对主机上报的运行时长与重启记录是否一致
- 确认事件时刻是否存在无人认领的登录会话
- 检查失败登录记录与认证日志能否互相印证
- 评估登录类证据的完整范围,为报告限定结论边界
对照检查
对照检查
last reboot | head -5 # 重启记录,正常应与运行时长吻合
uptime -s # 系统启动时刻
utmpdump /var/log/wtmp | head -5 # 原始记录视图,含二进制结构字段
last -F | head -10 # 完整时间格式的登录记录
ls -l /var/log/wtmp* # 轮转文件与当前文件
stat -c '%n %y %s' /var/log/wtmp # 修改时间与大小,判断是否被重建last 输出读法
| 列 | 含义 | 判读要点 |
|---|---|---|
| 用户名 | 登录账号,reboot 表示重启 | 缺少 reboot 行需解释原因 |
| 终端 | tty 或 pts 编号 | pts 表示通过 SSH 或终端复用接入 |
| 来源 | 登录来源地址或本地 | 异常地址是定位重点 |
| 起止时间 | 登录与注销时间 | 仍为 still logged in 表示会话未注销 |
wtmp 被清空常见原因是轮转配置错误或人为删除,两者含义完全不同:轮转通常留下压缩的历史文件与配置痕迹,人为删除则表现为时间上突然的断点。
容器与部分云主机启动时不写重启记录,判断前先确认环境类型与 init 系统,避免把平台差异当成证据缺口。
清空或重建 wtmp 会同时清掉当前会话记录,现场处置时不要为了让报告「干净」而执行任何清理命令。