审计日志按用户检索
auditd 的记录以登录会话标识 auid 挂靠到具体用户,这点与普通 syslog 不同:即使经过了 su 或 sudo 切换身份,同一次登录的后续动作仍可按 auid 串起来。ausearch 的 -ua 与 -ui 就是分别按 auid 和 uid 过滤的入口。
基本信息
| 工具 | ausearch(auditd 套件) |
|---|---|
| 用户过滤 | -ua 按 auid,-ui 按 uid |
| 时间过滤 | -ts 支持 today、recent 或具体时刻 |
| 事件类型 | -m USER_LOGIN、-m EXECVE、-m AVC 等 |
| 特殊 auid | 4294967295(即 -1)表示该进程没有登录会话 |
| 辅助文件 | /proc/<pid>/loginuid 保存进程关联的 auid |
典型使用场景
- 把一次登录期间的所有动作串成链条
- 判断某条命令记录属于哪个登录会话
- 区分交互登录与系统服务进程
- 与 su、sudo 记录互相印证
- 输出指定用户的行为时间线
最小示例
最小示例
ausearch -ua 1000 -ts today | head -40 # 按 auid 过滤今天的记录
ausearch -m USER_LOGIN -i -ts today | tail -20 # 登录事件,-i 转为可读输出
ausearch -ua 1000 -m EXECVE -ts recent | head -20 # 指定用户的命令执行
cat /proc/1234/loginuid # 某进程关联的登录会话
ausearch -ui 0 -ts today 2>/dev/null | head -10 # 按 uid 过滤,注意与 auid 的区别
ausearch -ua 1000 -ts today | wc -l # 统计记录条数字段与解读
| 字段 | 含义 | 注意 |
|---|---|---|
| auid | 登录会话的原始用户 | 切换身份后保持不变 |
| uid | 当前实际用户 | 提权后会变为 0 |
| ses | 会话编号 | 关联同一次登录 |
| pid | 进程号 | 与 loginuid 结合可定位进程 |
| comm | 命令名 | 只有名称,不含参数 |
| exe | 可执行文件路径 | 用于判断程序来源 |
auid 为 4294967295(即 -1)表示进程没有登录会话,例如开机阶段启动的守护进程,统计用户行为时应当排除。
回答「谁登录后做了什么」应当用 -ua;-ui 过滤的是当前实际用户,提权之后的记录会被归到 root 名下。
时间过滤是按日志中的时间戳生效的,跨多个引导周期查询时要同时限定起止时间,否则一次会取出过多记录难以阅读。
先做规模统计再逐条展开更高效:aureport 可按用户、登录与命令汇总,用它判断数据量之后再决定是否细看。
修改审计规则会改变后续记录的内容与范围,取证阶段先记录现有规则,再决定是否需要调整。