auditctl 是 Linux 中用于动态管理内核审计规则的命令行工具,支持实时添加文件监控、系统调用审计等规则,需 auditd 运行且规则需写入 /etc/audit/rules.d/ 并重载才能持久化。

在 Linux 系统中,auditctl 是用户空间用于动态管理内核审计规则的命令行工具。它能立即生效、无需重启服务,适合快速添加实时审计规则,监控关键系统调用、文件访问或用户行为。
确认 auditd 服务已运行
使用 auditctl 前,必须确保内核审计子系统已启用且 auditd 守护进程正在运行:
- 检查状态:
sudo systemctl status auditd(或service auditd status) - 如未运行,启动它:
sudo systemctl start auditd - 验证内核模块加载:
lsmod | grep audit(通常自动加载)
添加基础文件访问审计规则
监控敏感文件(如 /etc/passwd)的读写、属性修改等操作:
- 记录所有对
/etc/passwd的写入和属性变更:sudo auditctl -w /etc/passwd -p wa -k passwd_access - 说明:
-w指定路径;-p后跟权限标志(r读、w写、x执行、a属性变更);-k设置关键词,便于后续用ausearch -k passwd_access过滤日志 - 注意:目录监控需加
-d(递归)才生效于子项,但-w默认只监控行为触发点本身
监控特定系统调用或命令行为
例如审计所有 chmod、chown 调用,或限制某用户的特权操作:
- 监控所有
chmod系统调用:sudo auditctl -a always,exit -F arch=b64 -S chmod -k sys_chmod
(-a添加规则;always,exit表示每次系统调用退出时记录;-F arch=b64指定 64 位架构,x86_64 系统必需;-S指定系统调用名) - 审计 root 用户执行的 shell 命令:
sudo auditctl -a always,exit -F uid=0 -F exe=/bin/bash -k root_shell - 提示:可用
ausyscall --dump查看系统调用号与名称映射;多架构需分别加-F arch=b32规则
让规则持久化(重启后仍生效)
auditctl 添加的规则是临时的,系统重启或 auditd 重载后会丢失。要永久生效,需写入配置文件:
- 编辑
/etc/audit/rules.d/audit.rules(或对应发行版路径,如 RHEL/CentOS 在/etc/audit/rules.d/下新建.rules文件) - 将上面的
auditctl命令去掉sudo auditctl,直接写成规则行,例如:-w /etc/passwd -p wa -k passwd_access-a always,exit -F arch=b64 -S chmod -k sys_chmod - 重载规则:
sudo augenrules --load(Debian/Ubuntu)或sudo service auditd reload(RHEL/CentOS)
auditctl 是实时审计的核心工具,掌握基本语法和常见场景即可快速响应安全需求。规则越精准,日志噪音越少,排查越高效。


















