audit.rules文件必须放在/etc/audit/rules.d/目录下,且权限为640、属主root:root,否则auditctl -R会静默跳过;规则需以-k指定唯一key名,加载后须用auditctl -l和ausearch验证生效。

audit.rules 文件必须放在 /etc/audit/rules.d/ 目录下
Ubuntu 18.04+ 默认使用 rules.d/ 目录管理静态规则,/etc/audit/rules.d/audit.rules 是唯一被 auditctl -R 自动加载的入口文件(其他 .rules 文件也会被读取,但命名混乱易被忽略)。如果规则写在 /etc/audit/rules 或临时用 auditctl -w 添加,重启后全部丢失。
常见错误现象:sudo auditctl -l 显示规则,但 sudo systemctl restart auditd 后清空;或 ausearch -k xxx 查不到记录——大概率是规则没落盘到 rules.d/。
- 必须用
sudo nano /etc/audit/rules.d/audit.rules编辑,不能只改/etc/audit/rules - 文件权限应为
640,属主root:root,否则auditctl -R会静默跳过 - 每行规则末尾不要留空格,
-k后的 key 名避免含空格或特殊字符(如sudo_usage可,sudo usage不可)
监控用户关键行为:passwd、sudo、SSH 登录的规则写法
不是所有操作都值得审计——高频低价值事件(如普通 openat)会快速撑爆日志。聚焦三类高风险行为:身份变更、权限提升、远程接入。
以下规则直接可用,复制进 /etc/audit/rules.d/audit.rules 即可:
- 监控
/etc/passwd和/etc/shadow修改:-w /etc/passwd -p wa -k identity_mod-w /etc/shadow -p wa -k identity_mod - 捕获所有
sudo执行(含参数):-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -F perm=x -k sudo_exec - 记录 SSH 登录尝试(成功/失败均触发):
-w /var/log/auth.log -p wa -k ssh_login
注意:这不是监听 SSH 进程,而是监控日志文件本身被追加——更可靠,且兼容 OpenSSH 默认配置
为什么不用 -S login?因为现代 Ubuntu 的 login 系统调用已被 PAM 和 systemd-logind 替代,直接监控调用几乎不触发。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
规则加载后必须验证是否生效
执行 sudo auditctl -R /etc/audit/rules.d/audit.rules 后,不能只看命令无报错就认为成功。要确认三点:
- 运行
sudo auditctl -l | grep -E "(sudo_exec|identity_mod|ssh_login)",确保 key 名出现在输出中 - 手动触发一次行为(如
sudo whoami、sudo vipw、SSH 登录),再立刻查:sudo ausearch -k sudo_exec -ts recent | head -5 - 检查
/var/log/audit/audit.log是否有新条目:sudo tail -n 5 /var/log/audit/audit.log | grep "sudo_exec\|identity_mod"
如果查不到,常见原因:key 名拼写不一致、auditd 服务未运行(systemctl status auditd)、或 SELinux/AppArmor 阻断了 auditd 写日志(极少见,但 ausearch -m avc 可确认)。
避免规则冲突和性能陷阱
Ubuntu 默认已加载基础规则(如 /etc/audit/rules.d/nvidia.rules),叠加自定义规则时容易重复或覆盖。尤其注意:
- 不要用
-D清空规则再重载——这会删掉系统自带的内核事件监控(如 OOM killer 记录) - 避免对整个
/etc目录递归监控:-w /etc -p rwxa会产生海量日志,建议精确到单个文件 -
-F uid=0和-F auid!=4294967295区别很大:
前者只匹配 root 进程,后者才真正捕获“登录后提权”的行为(auid是登录会话初始 UID,不可变) - 生产环境慎用
-S execve全局监控——它每秒可能产生数百条日志,建议限定路径:-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
最易被忽略的一点:auditd 日志轮换依赖 logrotate,但默认配置不包含 /var/log/audit/。若没配 /etc/logrotate.d/auditd,audit.log 会长满磁盘——且不会自动清理,只会停写(disk_full_action = SUSPEND 是默认行为)。

















