日志是服务器安全的"黑匣子"。当你怀疑服务器遭到入侵、发现异常流量,或只是想了解谁在什么时候登录过,都需要从日志入手。本文介绍 Linux 服务器上最重要的几类日志文件,以及用来排查异常登录的实用命令。
本文要点
- auth.log / secure 认证日志的位置与读取方法
- last、lastb 命令查看成功与失败登录历史
- journalctl 过滤 SSH 相关日志
- 发现可疑登录后的排查步骤与应急处置
关键日志文件位置
| 文件 | 系统 | 内容 |
|---|---|---|
| /var/log/auth.log | Debian/Ubuntu | SSH 登录、sudo、su 认证记录 |
| /var/log/secure | CentOS/RHEL | 同上(RHEL 系的认证日志) |
| /var/log/syslog | Debian/Ubuntu | 系统全局日志 |
| /var/log/messages | CentOS/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 -20CentOS / 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 20lastb:登录失败记录
# 查看登录失败记录(需 root 权限)
lastb -n 20
# 统计失败次数最多的 IP(Top 20)
lastb -a | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20lastb 记录量可能很大
服务器长期暴露在公网且未做防护,/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"可疑登录排查步骤
- 用
last -n 30查看登录 IP,标记不认识的来源 - 用
grep "Accepted" /var/log/auth.log找所有成功登录 - 对可疑 IP,查看对应时间段内执行了哪些命令:
cat ~/.bash_history - 检查是否有新增账户:
cat /etc/passwd | grep -v nologin - 检查是否有异常进程:
ps aux | grep -v "\[" - 检查定时任务是否被篡改:
crontab -l和ls /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 参数调整。