auditd是linux内核级审计框架,需配置精准规则(如监控/etc/shadow、sudo执行等)、使用augenrules加载永久规则、验证生效并加固日志管理,避免盲目全量审计。

auditd 是 Linux 系统内建的内核级审计框架,能精准捕获系统调用、文件访问、用户登录、权限变更等关键行为。要真正发挥其作用,不能只开服务,需明确审计目标、合理配置规则、定期检查日志,并确保日志防篡改。
明确你要审计的关键操作
盲目全量审计会导致日志爆炸且难以定位问题。建议优先覆盖以下高风险动作:
- 敏感文件修改:/etc/passwd、/etc/shadow、/etc/sudoers、/etc/ssh/sshd_config
- 特权命令执行:sudo、su、passwd、useradd、userdel、iptables、systemctl(启动/停止关键服务)
- 用户身份变更:登录(sshd、login)、切换用户(su)、提权(sudo)
- 关键系统调用:execve(执行程序)、openat/open(打开文件)、chmod/chown(修改权限)、setuid/setgid(改变 UID/GID)
配置 auditd 规则(推荐使用 augenrules)
直接编辑 /etc/audit/rules.d/ 下的 .rules 文件,再通过 augenrules --load 生效,比手动写入 /etc/audit/audit.rules 更可靠(避免重启后丢失)。
示例规则(保存为 /etc/audit/rules.d/critical.rules):
-w /etc/passwd -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/sudoers -p wa -k admin_access -a always,exit -F arch=b64 -S execve -F uid!=1000 -k privileged_exec -a always,exit -F arch=b64 -S setuid,setgid -k identity_change -w /var/log/audit/ -p wa -k audit_log
说明:
-w 监控文件;-p wa 监控写(w)和属性变更(a);-k 设置关键词,便于后续用 ausearch 快速过滤;-a always,exit 对系统调用做出口审计;-F uid!=1000 排除普通用户(按需调整)可减少噪音。
验证与排查审计是否生效
规则加载后,别急着等攻击——主动触发并确认记录是否产生:
- 运行 sudo touch /tmp/test_audit,再执行 ausearch -m execve -i | grep test_audit 查看是否捕获
- 修改 sudoers:sudo visudo 并保存,然后查 ausearch -k admin_access
- 检查 auditd 状态:sudo systemctl status auditd 和 sudo aureport --start today -x 快速汇总今日执行命令
若无记录,常见原因:规则未 reload(漏了 augenrules --load)、SELinux 拦截(临时 setenforce 0 测试)、规则语法错误(用 auditctl -s 看是否报错)。
日志管理与安全加固
audit.log 默认在 /var/log/audit/audit.log,但默认配置下易被覆盖或误删:
- 启用日志轮转:编辑 /etc/audit/auditd.conf,设置 max_log_file = 50(MB)、num_logs = 10、max_log_file_action = rotate
- 禁止普通用户读取审计日志:确保 log_group = audit,且 /var/log/audit/ 权限为 drwx------,属组 audit
- 远程集中存储(进阶):配置 audispd 插件将日志转发到 syslog 或专用 SIEM,避免本地日志被清除
不复杂但容易忽略:auditd 本身不加密日志,也不自带告警。如需实时通知(例如检测到 su root),需配合 aureport + 自定义脚本或集成 osquery、Wazuh 等工具。











