应使用auid=1001过滤系统调用(如openat、write、unlink等)并辅以/etc等目录及passwd、shadow等文件的细粒度监控,再通过ausearch与aureport提取uid=1001的操作链,最后将规则写入/etc/audit/rules.d/并augenrules --load持久化。

要审计特定用户ID(如 UID=1001)的所有敏感文件操作,核心是结合系统调用过滤与文件路径监控,而非仅依赖文件级规则。因为用户可能通过任意命令、脚本或非标准路径修改敏感文件,单靠 -w /etc/passwd 这类静态路径规则会漏掉重命名、复制覆盖、内存写入等绕过行为。
锁定目标用户的系统调用行为
最可靠的方式是捕获该用户发起的、可能导致文件篡改的关键系统调用,例如 openat、write、unlink、renameat、truncate 等。这些调用在内核层面真实反映“谁在改什么”。
- 对 64 位系统执行:
sudo auditctl -a always,exit -F arch=b64 -F auid=1001 -S openat,write,unlink,unlinkat,renameat,truncate -k uid_1001_file_ops -
auid=1001表示原始登录用户 ID(即使切换为 root 也保留),比uid更稳定可信 -
-S后列出具体系统调用名,避免使用泛化的execve导致日志爆炸
补充关键路径的细粒度监控
在系统调用层之外,仍需对已知高危路径做二次防护,防止低权限进程间接触发(如 cron 脚本以 UID=1001 运行但调用 cp 覆盖 /etc/shadow)。
- 监控整个敏感目录(递归):
sudo auditctl -a always,exit -F arch=b64 -F dir=/etc -F perm=wa -k etc_dir_mod_by_uid1001 - 单独强化核心文件(写+属性):
sudo auditctl -w /etc/passwd -p wa -k passwd_mod_uid1001sudo auditctl -w /etc/shadow -p wa -k shadow_mod_uid1001sudo auditctl -w /etc/sudoers -p wa -k sudoers_mod_uid1001 - 注意:
-w规则不支持auid过滤,所以它记录的是所有对该路径的操作;后续需用ausearch -k ... | grep auid=1001筛选
验证与日志提取方法
规则生效后,不能只看有没有日志,而要看能否精准定位 UID=1001 的操作上下文。
- 实时查看匹配事件:
sudo ausearch -k uid_1001_file_ops -i | grep "auid=1001" - 提取完整操作链(含进程名、可执行路径、参数):
sudo ausearch -k uid_1001_file_ops -i --start recent --raw | aureport -f -i - 检查某次写入是否清空重写:
在输出中找flags=O_WRONLY|O_CREAT|O_TRUNC—— 这表示文件被覆盖式写入,风险极高
转为永久规则并确保持久生效
临时规则重启即失效,生产环境必须固化。
- 新建规则文件:
sudo tee /etc/audit/rules.d/20-uid1001-sensitive.rules -a always,exit -F arch=b64 -F auid=1001 -S openat,write,unlink,unlinkat,renameat,truncate -k uid_1001_file_ops<br>-a always,exit -F arch=b64 -F dir=/etc -F perm=wa -k etc_dir_mod_by_uid1001<br>-w /etc/passwd -p wa -k passwd_mod_uid1001<br>-w /etc/shadow -p wa -k shadow_mod_uid1001<br>EOF
- 重新加载全部规则:
sudo augenrules --load - 确认载入成功:
sudo auditctl -l | grep uid_1001











