登录记录分在几个文件里
Linux 的登录记录不是集中在一个文件里:wtmp 记录成功登录的会话,btmp 记录失败尝试,lastlog 记录每个账号最近一次登录时间,utmp 反映当前在线会话。看单一来源容易得出片面结论,三条线交叉验证才可靠:例如 lastb 里出现大量失败尝试而 last 中没有对应的成功记录,说明爆破未得手;而 lastlog 显示某账号长期未登录却出现成功会话,就需要进一步核实。
基本信息
| 适用平台 | Linux(utmp/wtmp/btmp/lastlog 机制) |
|---|---|
| 对应命令 | last、lastb、lastlog、who、w |
| 权限要求 | lastb 需要 root 才能查看完整内容 |
| 日志文件 | /var/log/wtmp、/var/log/btmp、/var/log/lastlog |
| 风险等级 | 中 |
典型使用场景
- 例行巡检:查看异常时间与异常来源的登录记录
- 入侵排查:确认是否存在非工作时间的成功登录
- 爆破识别:统计失败尝试的次数与来源
- 账号核查:确认是否存在长期未用但突然登录的账号
- 合规取证:登录记录是审计的基础材料
四种视图
四种视图
last -n 20 | head -25 # 成功登录会话(读取 wtmp)
sudo lastb -n 20 | head -25 # 失败登录尝试(读取 btmp,需 root)
lastlog | head -20 # 各账号最近一次登录时间
who; w # 当前在线会话
last -x reboot | head -5 # 重启记录,用于对齐时间线
awk '{print $1}' /var/log/btmp 2>/dev/null | head # 二进制文件,勿用文本工具直接读命令与读法
| 命令 | 数据来源 | 判读要点 |
|---|---|---|
| last | wtmp | 关注来源 IP、时间是否在维护窗口内 |
| lastb | btmp | 大量条目说明存在爆破尝试 |
| lastlog | lastlog | 显示从未登录的账号属于重点 |
| who/w | utmp | 当前会话多出陌生来源需立即核实 |
| last -x reboot | wtmp | 用于把其它记录与重启事件对齐时间 |
记录被清空或权限异常本身就是入侵信号:发现异常先留存原始文件(附哈希)再排查,顺序反了会破坏证据。
落地要点
- lastb 需 root 权限:普通权限看不到内容,巡检脚本要注意
- 容器与部分精简系统没有 utmp 机制:命令无输出属于环境限制,不是被清理
- 登录记录要与集中日志交叉验证:本地文件一旦被清就只剩远端副本
- 定期统计失败登录的 TOP 来源,为防火墙与 fail2ban 策略提供依据
- 把登录记录核查纳入月度巡检模板,避免只在出事后才看
记录文件是二进制格式:用 last、lastb、lastlog 读取,不要用 grep 或 cat 直接打开,否则只会看到乱码。