auditd 是用来做安全审计与合规取证的,不是监控性能,也不是自动化运维。
auditd 是什么?
auditd(Audit Daemon) 是 Linux 内核的审计框架在用户态的守护进程。
它配合内核的 Linux Audit Framework,可以精确记录系统中的关键安全事件,例如:
- 哪个用户访问/修改了某个文件
- 哪个进程执行了某条命令
- 哪个程序调用了敏感系统调用(syscall)
- 权限、SELinux、ACL 的变化
- 登录、提权、sudo 行为
这些记录不可伪造、可追溯,常用于:
- 安全审计
- 合规要求(等保、ISO 27001、PCI-DSS)
- 事后取证(incident response)
auditd 解决什么问题?
它回答的是安全问题,不是运维问题:
❓「事情发生过没有?」
❓「是谁干的?」
❓「当时用的什么程序?」
而不是:
❌ 文件有没有变化(inotify 更合适)
❌ 任务什么时候跑(cron)
❌ 系统快不快(top / prometheus)
auditd 的核心特点
1️⃣ 内核级、不可绕过
事件在 syscall 层捕获
即使程序绕过日志,也逃不过 audit
2️⃣ 记录非常细
可以精确到:
- UID / GID
- PID / PPID
- 可执行文件路径
- syscall 参数
- 时间戳
3️⃣ 偏向“事后分析”
- 不是实时处理
- 日志量大
- 需要配合分析工具
auditd 能记录什么?(举例)
1. 文件访问审计
$ auditctl -w /etc/passwd -p wa -k passwd_change
含义:
- 监控 /etc/passwd
- w 写入、a 属性修改
- key 为 passwd_change
谁改了 /etc/passwd,一定有记录。
2. 命令执行审计
$ auditctl -a always,exit -F arch=b64 -S execve -k cmd_exec
记录所有命令执行行为。
3. sudo / 提权行为
系统通常默认就有规则,记录:
- sudo
- su
- PAM 登录
auditd vs inotify vs cron(重点对比)
| 工具 | 核心作用 |
|---|---|
| auditd | 安全审计、取证 |
| inotify | 文件变化监听 |
| cron | 定时任务 |
举个同一个场景的三种视角
有人改了 /etc/ssh/sshd_config
inotify:
👉 文件变了(但不知道是谁)
cron:
👉 定时跑一次 diff(不实时)
auditd:
👉 谁、用什么命令、什么时候改的(完整证据)
什么时候该用 auditd?
- 你应该考虑 auditd,如果你关心:
- 安全合规
- 关键文件不可被“悄悄改”
- 运维责任追踪
- 服务器被入侵后的取证能力
你不应该用 auditd,如果你只是想:
- 自动处理文件变化
- 做实时同步
- 做业务监控
一个重要提醒(实话)
auditd 很强,但:
❗ 配不好会日志爆炸
❗ 规则太多会影响性能
❗ 不适合“什么都审计”
审计的是“关键点”,不是“全部行为”。