Auditd是Linux底层审计核心服务,可精准捕获系统调用级行为;需启用服务、编写聚焦“谁-何时-对何资源-做何操作”的高价值规则(如特权命令、关键文件修改、SSH登录、可疑外连),并通过augenrules加载与ausearch验证,再结合syslog/Kafka实现告警。

Auditd 是 Linux 系统底层审计框架的核心服务,能精准捕获系统调用级行为(如文件访问、命令执行、用户切换等),比日志分析更实时、更难绕过。要真正监控敏感行为,关键不是堆砌规则,而是聚焦“谁在什么时间、对什么资源、做了什么操作”,并确保规则不漏、不重、不拖慢系统。
一、确认 auditd 服务已启用并了解基础结构
先检查 auditd 是否运行:
- systemctl status auditd —— 若未启动,用 systemctl enable --now auditd 启用
- 规则默认存于 /etc/audit/rules.d/(以 .rules 结尾的文件),重启后由 augenrules 自动合并生效
- 临时规则可用 auditctl -a always,exit -F arch=b64 ... 添加,但重启即失效,仅用于测试
二、编写高价值敏感行为审计规则(推荐直接复用)
以下规则经生产环境验证,兼顾覆盖性与性能,添加到 /etc/audit/rules.d/10-sensitive.rules:
-
监控特权命令执行(如 sudo、passwd、usermod):
-a always,exit -F path=/usr/bin/sudo -F perm=x -k privileged_cmd
-a always,exit -F path=/usr/bin/passwd -F perm=x -k privileged_cmd -
监控关键配置文件修改(/etc/shadow、/etc/passwd、/etc/sudoers):
-w /etc/shadow -p wa -k identity_change
-w /etc/passwd -p wa -k identity_change
-w /etc/sudoers -p wa -k sudoers_change -
监控 SSH 登录与提权行为:
-w /var/log/secure -p wa -k ssh_login
-a always,exit -F arch=b64 -S execve -F euid!=uid -k priv_escalation -
监控可疑网络连接(外连高危端口如 4444、5555):
-a always,exit -F arch=b64 -S connect -F a2&0xFFFF=4444 -k reverse_shell
-a always,exit -F arch=b64 -S connect -F a2&0xFFFF=5555 -k reverse_shell
三、加载规则并验证是否生效
不要直接重启 auditd,用标准流程加载:
- 运行 augenrules --load(自动读取 rules.d 下所有规则并生成 /etc/audit/audit.rules)
- 检查规则是否载入:auditctl -l | grep -E "(privileged_cmd|identity_change)"
- 手动触发一次敏感操作(如 sudo ls /root),再查日志:ausearch -k privileged_cmd -i | tail -3,应看到完整上下文(用户、终端、命令行、时间)
四、日常运维与告警衔接建议
auditd 本身不告警,需配合工具落地:
- 用 audispd 插件将事件转发给 syslog 或 Kafka;或用 osquery 定时查询 auditd 日志表
- 关键规则建议加 -k 标签,方便后续用 ausearch -k 标签名 快速过滤
- 避免监控整个 /etc 目录(-w /etc -p wa),易产生海量日志;只盯具体文件,减少性能损耗
- 定期清理日志:logrotate 配置 /var/log/audit/audit.log,防止磁盘打满

















