CentOS 7 不存在官方定义的“混合模式下安全审计库”,auditd 与 SELinux 是独立机制;auditd 负责记录系统调用等事件并写入 /var/log/audit/audit.log,SELinux 的 AVC 拒绝日志依赖 auditd 运行才能被 ausearch 查到,二者不可混淆配置。

CentOS 7 不支持所谓“混合模式下安全审计库”这个概念——auditd 和 SELinux 是两个独立机制,不存在官方定义的“混合模式”,强行混用反而容易导致策略冲突或日志丢失。
auditd 和 SELinux 审计不是一回事
很多人误以为 auditd(Linux 审计子系统)和 SELinux 共享同一套“审计库”或可统一配置成某种“混合模式”。实际上:
-
auditd负责记录系统调用、文件访问、用户登录等底层事件,日志写入/var/log/audit/audit.log,由auditctl和规则文件控制 - SELinux 的拒绝行为(AVC denials)默认也通过
auditd记录(即写进同一个audit.log),但它本身不提供独立日志服务;它的“审计”只是 AVC 消息的一种输出形式 - SELinux 没有“审计库”这个组件,也没有“混合模式”配置项;它的
permissive模式只是不阻断但照常记 AVC 日志,和auditd的开关无关
想让 auditd 记录 SELinux 拒绝事件,必须确保 auditd 正在运行
SELinux 的 AVC 日志依赖 auditd 守护进程。如果 auditd 停止或被禁用,ausearch -m avc 就查不到任何拒绝记录,即使 SELinux 处于 enforcing 模式。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 检查状态:
sudo systemctl status auditd,必须是active (running) - 若未运行,启动并设为开机自启:
sudo systemctl start auditd && sudo systemctl enable auditd - 验证是否收到 AVC:
sudo ausearch -m avc -ts recent,有输出才说明链路通 - 注意:若系统用
rsyslog转发日志,需确认auditd未被重定向到/var/log/messages——那样ausearch就查不到
修改 auditd 规则来聚焦 SELinux 相关审计
不需要改“混合模式”,而是直接在 auditd 规则中显式捕获与 SELinux 策略执行强相关的动作:
- 监控策略加载事件:
sudo auditctl -a always,exit -F arch=b64 -S setcon -S setexeccon -k selinux-context-change - 记录所有 AVC 拒绝(默认已有,但可强化):
sudo auditctl -a always,exit -F msgtype=AVC -F perm=x -k avc-exec - 持久化规则:把上面命令等效写入
/etc/audit/rules.d/10-selinux.rules,再执行sudo systemctl restart auditd - 避免重复:不要同时在
/etc/audit/rules.d/里放两份功能重叠的规则(比如既有30-stig.rules又手动加 AVC 规则),否则可能触发内核规则数限制
audit2allow 生成策略时,别跳过 -D 参数
用 audit2allow 从日志生成自定义模块前,最容易忽略的是清理旧的拒绝事件缓存:
- 错误做法:
sudo ausearch -m avc -ts recent | audit2allow -M mypol→ 可能包含已解决的老日志,生成冗余甚至冲突策略 - 正确做法:先清空近期 AVC 缓存(不删日志,只清内存缓冲):
sudo ausearch -m avc -ts recent -i | grep "avc:.*denied" && sudo ausearch -m avc -ts recent -i | audit2allow -D -M mypol -
-D参数会自动排除已被当前策略允许的事件,生成更干净的模块 - 加载后验证:
sudo semodule -l | grep mypol+ 再触发一次原问题操作,确认ausearch -m avc -ts recent不再出现同类型拒绝
真正要盯住的,是 auditd 是否存活、ausearch 是否能查到 AVC、以及 audit2allow -D 是否参与策略生成——这些点漏掉一个,后续所有“审计调整”都只是假动作。

















