首页/安全/取证与溯源速查/Linux 认证日志(auth.log/secure)判读
Linux 取证135 条

Linux 认证日志(auth.log/secure)判读

登录、sudo、su、sshd 事件统一汇入认证日志:Debian/Ubuntu 在 /var/log/auth.log,RHEL/CentOS 在 /var/log/secure,是主机溯源的首要入口。

取证与溯源速查安全更新于 2026-10-13

认证日志记什么

Linux 把认证与授权类事件统一写入认证日志:sshd 的登录成功与失败、sudo 提权、su 切换、PAM 会话开关、systemd-logind 的会话与锁屏都记录在这里。Debian/Ubuntu 系落在 /var/log/auth.log,RHEL/CentOS 系落在 /var/log/secure,写入者是 rsyslog(或 rsyslog 从 journald 转发)。它是主机溯源里第一个该看的文件:谁在什么时间、从哪个 IP、用什么方式拿到了访问权,几乎都能在这一处找到原始记录。

基本信息

日志路径/var/log/auth.log(Debian/Ubuntu)、/var/log/secure(RHEL/CentOS)
写入组件rsyslog 按 authpriv 规则落盘,或由 journald 提供
权限要求Debian 系通常为 root:adm 640,普通用户读不到,需 sudo
轮转文件auth.log.1 为未压缩旧日志,更早的为 .gz,用 zcat 读取
关联来源journalctl、last/lastb(wtmp/btmp)、sudo 独立日志
时区文件内时间为本地时区,进时间线前要换算

典型使用场景

  • 确认某次登录是否成功、来源 IP 与端口是多少
  • 统计失败尝试次数,判断是否处于口令爆破中
  • 排查提权路径:sudo 执行了什么命令、由谁触发
  • 判断会话时长:session opened 与 session closed 配对
  • 核对服务账号是否被用于交互式登录
  • 与 wtmp/last 输出交叉验证登录历史是否被清理

快速浏览与精筛

快速浏览与精筛
# 概览最近的登录、sudo、su 事件
grep -Ei 'ssh|sudo|su' /var/log/auth.log | tail -50
# 只看成功登录,RHEL 系把路径换成 /var/log/secure
grep 'Accepted' /var/log/secure | tail -20
# 成功与失败一次看全,含来源 IP 与端口
grep -E 'Accepted|Failed' /var/log/auth.log | tail -30
# 按来源 IP 聚合失败次数,快速找出被针对的账号
grep 'Failed password' /var/log/auth.log | awk '{print $(NF-3), $(NF-5)}' | sort | uniq -c | sort -rn | head
# 提权与命令记录
grep -E 'sudo:|su:' /var/log/auth.log | tail -30
# 旧日志:未压缩直接 grep,压缩文件用 zcat
grep 'Accepted' /var/log/auth.log.1 | tail
zcat /var/log/auth.log.2.gz | grep 'Accepted' | head

行格式逐段读法

字段含义判读要点
日期 时间事件时间,本地时区文件内不带时区标识,先确认主机的时区设置
主机名产生日志的主机集中收集多主机日志时,此处区分来源
进程[PID]如 sshd[12345]、sudo、CRON同一 PID 的多行属于同一次会话,可串起来看
事件内容Accepted/Failed password、session opened 等Accepted 表示认证通过;invalid user 表示账号名本身不存在
来源与端口from IP port N(ssh2)端口是客户端源端口,不等于目标端口;NAT 后地址会被改写
已切到 journald 的主机可能出现 auth.log 为空或只有部分内容,此时用 journalctl -u ssh(或 -u sshd)、journalctl -t sudo 补看;journalctl 支持 --since/--until 与 -o json 输出,字段比文本日志更规整。
攻击者拿到权限后最常见的动作之一就是删改认证日志。事件发生后应尽快把日志副本(含轮转文件)导出到分析机,导出后核对文件哈希;单独依据主机现存日志下结论有被误导的风险。
想让 sudo 命令记录更完整,可在 sudoers 里启用 log_output 或用 auditd 记录 execve;默认配置下 sudo 只记命令路径,不记完整参数。

易错点

  • 只看当日 auth.log:轮转后的 auth.log.1 与 .gz 往往保存了入侵最初几天的记录,漏读会找不到入口
  • 把 Failed password 一律当攻击:内网扫描、配置错误的定时任务、改过密码的脚本都会产生同类条目,需按来源与账号聚类判断
  • 忽略日志时间是本地时区,直接与 UTC 的流量日志比对,得出因果颠倒的结论
  • 把 /etc/rsyslog.conf 里的 authpriv 规则关掉或误改后仍以为日志在正常记录,实际已停止写入
  • 容器内的 sshd 或应用把日志写到容器 stdout,宿主机 auth.log 里查不到,需要单独取容器日志

数据来源与参考

  • rsyslog 官方文档(rsyslog.conf 规则语法)
  • OpenSSH 手册 sshd(8)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌