需分四步闭环落实:1. 启用auditd并确认日志路径;2. 在/etc/audit/rules.d/添加SELinux配置、策略文件及命令监控规则;3. 添加AVC拒绝事件捕获规则;4. 用ausearch、audit2why等工具分析日志。

1. 确保auditd服务已启用并稳定运行
auditd默认不启动,即使装了也处于inactive (dead)状态。不启动,所有规则都无效,/var/log/audit/audit.log将为空或仅含启动失败记录。
- 检查状态:
systemctl status auditd,若显示inactive,立即执行:sudo systemctl start auditd && sudo systemctl enable auditd - 确认日志路径存在且可写:
ls -ld /var/log/audit/,权限应为drwx------. 2 root root - Ubuntu等Debian系需额外安装:
sudo apt install auditd audispd-plugins selinux-basics
2. 添加永久性SELinux策略变更监控规则
临时规则(auditctl -w …)在重启后丢失,必须写入/etc/audit/rules.d/并重载。重点监控三类对象:
-
配置文件:如
/etc/selinux/config(模式切换)、/etc/selinux/semanage.conf -
策略文件:如
/etc/selinux/targeted/policy/下的当前策略包、/var/lib/selinux/active/目录(实际生效策略) -
策略管理命令:如
semanage、setsebool、load_policy、restorecon
在/etc/audit/rules.d/selinux.rules中写入以下内容(注意文件名必须以.rules结尾):
-w /etc/selinux/config -p wa -k selinux_config -w /etc/selinux/semanage.conf -p wa -k selinux_semanage -w /var/lib/selinux/active/ -p wa -k selinux_active_policy -w /usr/sbin/semanage -p xa -k selinux_semanage_exec -w /usr/sbin/setsebool -p xa -k selinux_setsebool_exec -w /usr/sbin/load_policy -p xa -k selinux_load_policy_exec -a always,exit -F arch=b64 -S execve -F path=/usr/bin/restorecon -k selinux_restorecon
保存后执行:sudo augenrules --load(不是systemctl restart auditd),再用sudo auditctl -l | grep selinux验证是否加载成功。
3. 捕获AVC拒绝事件(真正的“违规日志”源头)
SELinux的“违规”本质是内核拒绝访问,这类事件叫AVC(Access Vector Cache)拒绝。auditd必须显式监听avc消息类型才能记录它们,否则只看到命令执行,看不到拒绝原因。
- 添加AVC专用规则(追加到同一
.rules文件):-a always,exit -F msgtype=AVC -F key=selinux_avc - 该规则会捕获所有
type=AVC的日志行,包含完整的上下文:scontext(进程安全上下文)、tcontext(目标安全上下文)、tclass(目标类型,如file、dir)、perm(被拒权限,如read、write) - 无需重启auditd,重载规则即可生效
4. 快速定位与分析违规日志
日志有了,但audit.log原始格式难读。用配套工具快速提取关键信息:
- 查所有SELinux配置修改:
sudo ausearch -k selinux_config -i(-i表示人类可读格式) - 查所有AVC拒绝事件:
sudo ausearch -m avc -ts today | aureport -f -i - 分析某次拒绝原因:
sudo audit2why (输出可读解释) - 生成修复建议规则:
sudo audit2allow -a -M mypolicy(生成mypolicy.pp模块)
提示:生产环境建议配合logrotate管理audit.log,避免单文件过大;也可用ausearch -ts yesterday -te now -m avc限定时间范围精确回溯。


















