日志是服务器安全的"黑匣子"。当你怀疑服务器遭到入侵、发现异常流量,或只是想了解谁在什么时候登录过,都需要从日志入手。本文介绍 Linux 服务器上最重要的几类日志文件,以及用来排查异常登录的实用命令。

本文要点

  • auth.log / secure 认证日志的位置与读取方法
  • last、lastb 命令查看成功与失败登录历史
  • journalctl 过滤 SSH 相关日志
  • 发现可疑登录后的排查步骤与应急处置

关键日志文件位置

文件系统内容
/var/log/auth.logDebian/UbuntuSSH 登录、sudo、su 认证记录
/var/log/secureCentOS/RHEL同上(RHEL 系的认证日志)
/var/log/syslogDebian/Ubuntu系统全局日志
/var/log/messagesCentOS/RHEL系统全局日志
/var/log/fail2ban.log通用fail2ban 封禁记录
/var/log/wtmp通用登录成功记录(二进制,用 last 读取)
/var/log/btmp通用登录失败记录(二进制,用 lastb 读取)

查看 SSH 登录认证日志

Debian / Ubuntu

# 查看最近 50 条认证日志
tail -50 /var/log/auth.log

# 只看 SSH 相关
grep "sshd" /var/log/auth.log | tail -30

# 查看登录失败记录
grep "Failed password" /var/log/auth.log | tail -20

CentOS / RHEL

tail -50 /var/log/secure
grep "Failed password" /var/log/secure | tail -20

用 last 和 lastb 查看登录历史

last:成功登录历史

# 查看最近登录记录(含用户、IP、时间)
last -n 20

# 查看指定用户的登录记录
last root

# 显示完整时间戳
last -F -n 20

lastb:登录失败记录

# 查看登录失败记录(需 root 权限)
lastb -n 20

# 统计失败次数最多的 IP(Top 20)
lastb -a | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20

lastb 记录量可能很大

服务器长期暴露在公网且未做防护,/var/log/btmp 可能积累大量数据。安装 fail2ban 后会大幅减少失败尝试。

用 journalctl 过滤日志

# 查看 SSH 服务的全部日志(最近 50 条)
journalctl -u ssh -n 50          # Debian/Ubuntu
journalctl -u sshd -n 50         # CentOS/RHEL

# 实时追踪(类似 tail -f)
journalctl -u ssh -f

# 查看今天的 SSH 日志
journalctl -u ssh --since today

# 查看过去 1 小时
journalctl -u ssh --since "1 hour ago"

可疑登录排查步骤

  1. last -n 30 查看登录 IP,标记不认识的来源
  2. grep "Accepted" /var/log/auth.log 找所有成功登录
  3. 对可疑 IP,查看对应时间段内执行了哪些命令:cat ~/.bash_history
  4. 检查是否有新增账户:cat /etc/passwd | grep -v nologin
  5. 检查是否有异常进程:ps aux | grep -v "\["
  6. 检查定时任务是否被篡改:crontab -lls /etc/cron.*

发现入侵的应急措施

若确认已被入侵,立即在 KiwiVM 关机止损,创建快照留证;用 KiwiVM 紧急控制台离线排查;视情况考虑重装系统并从干净备份恢复数据。

定期审计建议

  • 每周查看一次 last,确认登录来源都是预期 IP
  • 部署 fail2ban 减少 btmp 的噪音
  • 将日志转发到外部系统,防止入侵者清除本机日志
  • 关键操作(sudo)配置告警通知

小结

  • auth.log(Debian)/ secure(CentOS)是 SSH 安全排查的起点
  • last 看成功登录,lastb 看失败尝试
  • journalctl -u ssh -f 实时追踪最直观
  • 发现可疑 IP 后,顺藤摸瓜查对应时间段的操作痕迹

常见问题

last 和 lastb 有什么区别?

last 显示登录成功的历史记录,lastb 显示登录失败(认证错误)的记录。两者结合可以全面了解服务器登录活动。

日志文件能被入侵者删除吗?

能。建议将日志实时转发到独立的日志服务器,提高日志的可信度和不可篡改性。

/var/log/btmp 文件太大怎么处理?

执行 > /var/log/btmp 清空(不要用 rm,否则 lastb 无法写入),或配置 logrotate 自动轮转。

journalctl 日志默认保存多久?

默认按磁盘使用上限轮转,可在 /etc/systemd/journald.conf 中用 MaxRetentionSec 和 SystemMaxUse 参数调整。