Linux last 与 lastb 命令解析

3次阅读

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

Linux last 与 lastb 命令解析

lastlastb 是 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”,第四列常为失败原因(如 passwordssh-rsa
  • 可用于快速识别暴力破解行为:同一 IP 短时间内大量失败记录,尤其集中在 root 或常见用户名上
  • btmp 同样会被轮转,历史失败记录可能在 btmp.1 中,可用 sudo lastb -f /var/log/btmp.1 查看

日志文件权限与安全注意事项

wtmpbtmp 属于敏感系统日志,其内容可暴露登录来源、活跃时段和潜在攻击痕迹,因此权限控制严格:

  • /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,但建议先备份再操作,且清除后无法追溯此前的爆破线索

配合其他工具增强分析能力

单独使用 lastlastb 只能看原始记录,结合简单文本处理可提升效率:

  • 统计各 IP 的失败次数:sudo lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -10
  • 筛选最近 24 小时的失败登录(需配合 dateawk 时间过滤,较复杂,建议用 journalctl 替代做实时分析)
  • 对比 lastlastb 时间线,可判断某次登录失败后是否紧跟着成功登录,辅助识别撞库或弱口令利用
  • 注意:last 不显示登录 shell 或命令执行行为,如需审计用户操作,应启用 auditd 或检查 ~/.bash_history(后者易被用户清除)
text=ZqhQzanResources