user-last 是什么
last 读取 wtmp 记录,展示历史登录会话:谁在什么时间、从哪个终端或 IP 登录、什么时候退出、持续了多久。它属于 util-linux 工具集,同族的还有 lastb(失败登录)、lastlog(每个账号最近一次登录)。安全排查要回答「谁登过这台机器」、容量核对要回答「这台机器有没有人真的在用」,都从这里入手。
基本信息
| 用途 | 查看登录、注销、重启等历史记录 |
|---|---|
| 语法 | last [选项] [用户名] [终端];lastb 看失败登录;lastlog 看每个账号最近登录 |
| 数据来源 | wtmp(成功登录)、btmp(失败登录)、lastlog,均位于 /var/log 下 |
| 所属 | util-linux(与 w、who 同族) |
典型使用场景
- 安全排查:确认某段异常时间内有没有人从陌生 IP 登录
- 账号清理:结合 lastlog 找出长期未登录的账号,作为下线依据
- 重启取证:用 last reboot 与 journal 的启动轮次互相印证
- 容量评估:确认跳板机上分摊的账号是否真的在使用
- 异常来源统计:按来源 IP 聚合登录次数,发现陌生来源
常用示例
常用示例
last -n 20 # 最近 20 条会话
last -F # 显示完整的年月日与时间
last -i | head # 显示来源 IP 而非主机名
last deploy # 只看某个账号
last reboot # 重启历史
last -x | head # 附带关机与运行级切换记录
last -f /var/log/wtmp.1 | head # 读轮转后的历史文件失败登录与最近登录
失败登录与最近登录
sudo lastb -n 20 # 失败登录记录(需要读 btmp 的权限)
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -20 # 按来源聚合,看谁在尝试
lastlog | grep -v 'Never' | head # 每个账号最近一次登录
lastlog -u deploy # 单个账号的最近登录
last -i | awk 'NF>=3 {print $3}' | sort | uniq -c | sort -rn | head -10相关命令对照
| 命令 | 看什么 | 数据文件 |
|---|---|---|
| last | 成功登录与注销、重启 | /var/log/wtmp |
| lastb | 失败登录尝试 | /var/log/btmp |
| lastlog | 每个账号最近一次登录时间 | /var/log/lastlog |
| w / who | 当前在线用户与正在做什么 | utmp |
| last -x | 额外包含关机与运行级变化 | /var/log/wtmp |
wtmp 与 btmp 会随日志轮转切分,last 默认只读当前文件。查更早的历史要显式指定文件,或者以集中式日志平台为准,本地记录的时间跨度通常很有限。
last 显示为空并不等于没人登录过:这两个文件经常被清空或轮转,攻击者清理痕迹时首选的就是它们。判断是否有异常登录,应以集中日志与审计记录为准。