last和lastb是linux查看登录历史的核心命令,分别读取/var/log/wtmp(成功登录)和/var/log/btmp(失败登录)二进制日志;last默认显示倒序成功记录,lastb需root权限查看失败尝试,二者均支持指定文件、限制行数及ip显示。

last 和 lastb 是 Linux 系统中用于查看用户登录历史的核心命令,它们读取的是二进制日志文件(/var/log/wtmp 和 /var/log/btmp),而非文本日志,因此不能用 cat 直接阅读,必须通过专用工具解析。
last:查正常登录记录
该命令默认读取 /var/log/wtmp,记录所有成功登录(包括本地终端、SSH、图形界面等)及系统启动/关机事件。每次用户成功登录、登出、重启或关机,都会在此文件中追加一条记录。
- 不加参数直接运行
last,显示最近的登录活动,按时间倒序排列(最新在最前) - 加用户名(如
last alice)可筛选特定用户的历史登录 - 加
-n 10可限制输出行数;-i显示 IP 地址而非主机名(对 SSH 登录更实用) - 注意:
wtmp文件会被logrotate定期轮转,旧记录可能存于wtmp.1等压缩归档中,需用last -f /var/log/wtmp.1手动指定查看
lastb:查失败登录尝试
lastb 读取的是 /var/log/btmp,专门记录认证失败事件,例如密码错误、无效用户名、SSH 密钥拒绝等。这个文件默认只有 root 可读,普通用户执行会提示“Permission denied”。
- 必须以 root 身份运行,如
sudo lastb - 输出格式与
last类似,但第三列显示“failed”,第四列常为失败原因(如password、ssh-rsa) - 可用于快速识别暴力破解行为:同一 IP 短时间内大量失败记录,尤其集中在 root 或常见用户名上
-
btmp同样会被轮转,历史失败记录可能在btmp.1中,可用sudo lastb -f /var/log/btmp.1查看
日志文件权限与安全注意事项
wtmp 和 btmp 属于敏感系统日志,其内容可暴露登录来源、活跃时段和潜在攻击痕迹,因此权限控制严格:
-
/var/log/wtmp通常权限为644,所有用户可读(但仅 root 可写) -
/var/log/btmp默认权限为600,仅 root 可读写——这是防止未授权用户窥探失败登录信息的关键防护 - 若发现
btmp权限异常(如被设为 644),应立即修复:sudo chmod 600 /var/log/btmp - 清空失败记录可用
sudo truncate -s 0 /var/log/btmp,但建议先备份再操作,且清除后无法追溯此前的爆破线索
配合其他工具增强分析能力
单独使用 last 或 lastb 只能看原始记录,结合简单文本处理可提升效率:
- 统计各 IP 的失败次数:
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -10 - 筛选最近 24 小时的失败登录(需配合
date和awk时间过滤,较复杂,建议用journalctl替代做实时分析) - 对比
last和lastb时间线,可判断某次登录失败后是否紧跟着成功登录,辅助识别撞库或弱口令利用 - 注意:
last不显示登录 shell 或命令执行行为,如需审计用户操作,应启用auditd或检查~/.bash_history(后者易被用户清除)










