Linux审计系统(auditd)需精准编写规则以捕获关键安全事件,优先监控特权操作、敏感文件变更和网络行为;临时规则用auditctl调试,永久规则写入/etc/audit/rules.d/并augenrules加载;注意路径存在性、架构标识及权限标记准确性。

Linux审计系统(auditd)通过规则定义监控哪些系统调用、文件访问、用户行为等事件,规则写得准不准,直接决定能否捕获关键安全线索。核心在于理解规则语法结构、事件触发条件和日志可追溯性,而不是堆砌大量无意义的监控项。
auditctl命令临时添加规则(调试首选)
日常调试建议先用auditctl添加单条规则,确认事件能被正确捕获后再固化到配置文件。规则格式统一为:auditctl -w 路径 -p 权限 -k 标签。
- -w:监控指定文件或目录(注意:监控目录时仅捕获目录自身属性变更,子文件需配合inotify或递归规则)
- -p:权限标记,r=读、w=写、x=执行、a=属性变更(如chmod/chown),组合使用如-p wa
- -k:自定义关键词,用于后续ausearch或aureport过滤,例如-k ssh_login或-k sensitive_file_access
示例:监控/etc/shadow文件的任何写入或属性修改行为:
auditctl -w /etc/shadow -p wa -k shadow_modification
永久生效规则写入/etc/audit/rules.d/
临时规则在auditd重启后失效。要长期启用,须将规则写入/etc/audit/rules.d/下的.conf文件(如10-sysadmin.rules),然后执行augenrules --load重载。
- 每行一条规则,支持#开头注释
- 避免重复加载:规则文件名按字母序加载,可用数字前缀控制顺序(如00-base.rules、99-custom.rules)
- 监控敏感命令二进制文件比监控进程更可靠,例如:
-w /usr/bin/sudo -p x -k privileged_exec
-w /bin/bash -p x -k shell_launch
聚焦高价值行为,避免日志泛滥
审计日志体积增长极快,盲目全量监控会导致磁盘占满、检索困难。应优先覆盖以下几类行为:
- 特权账户操作:root登录、sudo执行、su切换
- 关键配置文件变更:/etc/passwd、/etc/group、/etc/sudoers、SSH相关文件(/etc/ssh/sshd_config、~/.ssh/authorized_keys)
- 网络敏感行为:bind监听非标准端口、execve调用nc/curl/wget(可结合-a always,exit -F arch=b64 -S execve -F path=/usr/bin/nc)
- 异常进程行为:execve调用可疑路径(如/tmp、/dev/shm)、未签名二进制执行(需配合integrity模块)
验证与排查常见问题
规则加了却看不到日志?多数因路径不匹配、权限标记遗漏或内核架构未指定导致。
- 检查规则是否已加载:auditctl -l(列出当前生效规则)
- 确认事件是否触发:ausearch -k your_key_name 或 tail -f /var/log/audit/audit.log | grep your_key_name
- 32/64位兼容问题:x86_64系统上监控64位程序需显式加-F arch=b64,否则可能漏捕;32位程序用-F arch=b32
- 路径必须绝对且真实存在:若监控/home/user/.bashrc,该文件必须已存在,否则规则加载失败(auditd默认跳过不存在路径)










