为什么要审计权限变更
提权与后门落地几乎都会改动文件权限:给脚本加 suid 位、把目录改成全局可写、把配置改成所有人可读。这类 syscall 数量大、噪声高,但只要按「谁发起」过滤,就能把系统守护进程的日常操作挡在外面,留下真正值得看的那部分。
基本信息
| 适用平台 | Linux(auditd) |
|---|---|
| 关键 syscall | chmod 家族、chown 家族、setxattr 等 |
| 常用过滤 | auid>=1000 且 auid!=4294967295 只留交互登录用户 |
| 基线 | 权限变更可追溯到具体登录用户 |
典型使用场景
- 事件调查:确认某目录权限在何时、被谁改动过
- 合规审计:权限变更属于必须留痕的运维行为
- 加固后的回归检查:确认监控覆盖范围没有随规则调整而失效
- 排查误操作:业务异常后回溯是否有人改过关键配置权限
规则与查询
规则与查询
# 权限相关 syscall 监控:只保留交互登录用户的操作
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S chown,fchown,fchownat,lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
# 关键目录的写与属性变更
-w /etc -p wa -k etc_perm
# 查询今天的记录
ausearch -k perm_mod --start today | head -30
ausearch -k etc_perm --start today | head -20字段读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| auid | 原始登录用户 ID | 4294967295 表示未经过登录会话,多为守护进程 |
| uid | 当前生效用户 ID | sudo 场景下 uid 可能是 0,看 auid 才知道是谁 |
| key | 规则标记 | perm_mod 等自定义标记便于检索 |
| comm | 进程名 | 结合路径判断是业务程序还是可疑工具 |
auid 过滤把系统守护进程的噪声先挡在门外,是这类规则能长期可用的前提;不加过滤时单机日志量会迅速失控。
suid 与 sgid 位的变化不是这组 syscall 记录出来的:需要配合定期 find 扫描,两者覆盖面不同,不能互相替代。
审计日志本身是敏感数据:它记录了谁在什么时候改了哪些关键文件,一旦被篡改就失去举证价值,应限制读取权限并转发到集中日志平台。
规则上线前先估算日志量:只加关键目录与关键 syscall,再用 -w /etc -p wa 这类范围明确的规则,比全盘监控更可持续。