必须监控/etc/selinux/config、/etc/selinux/targeted/policy/和/var/lib/selinux/active三个核心路径,通过auditctl添加-w规则并用augenrules --load加载,再用ausearch -k精准检索,结合aureport -f -i解析用户与操作行为。

要记录所有针对 SELinux 策略文件的读写操作并完成有效审计分析,关键在于精准监控核心策略路径、正确打标规则、启用 auditd 服务,并用专用工具提取和解读日志。整个过程不依赖 SELinux 模式(enforcing/permissive),只要 auditd 正常运行即可捕获底层访问行为。
确认 auditd 已安装并处于活动状态
SELinux 审计日志依赖 auditd 写入 /var/log/audit/audit.log,若服务未启动,日志为空或仅含启动失败记录:
- 检查是否安装:
rpm -q audit(RHEL/CentOS)或dpkg -l auditd(Debian/Ubuntu) - 启动并设为开机自启:
sudo systemctl start auditd && sudo systemctl enable auditd - 验证运行状态:
sudo systemctl status auditd,必须显示 active (running)
添加永久性 SELinux 策略文件监控规则
策略文件分散在多个路径,需覆盖配置、策略包与运行时激活目录。规则须存入 /etc/audit/rules.d/ 下以 .rules 结尾的文件(如 selinux-policy.rules),再重载生效:
-
-w /etc/selinux/config -p wa -k selinux_config(监控 SELinux 启用状态与模式变更) -
-w /etc/selinux/targeted/policy/ -p rwxa -k selinux_policy_dir(监控策略包目录,含 policy.* 文件) -
-w /var/lib/selinux/active/ -p rwxa -k selinux_active(监控当前加载的二进制策略及上下文文件) - 保存后执行:
sudo augenrules --load(合并规则并加载至内核;不是 restart 或 reload service) - 验证加载:
sudo auditctl -l | grep selinux应显示上述三条规则
触发操作并检索相关审计事件
SELinux 策略文件被读写时(如运行 sestatus、setenforce 0、semodule -i、修改 /etc/selinux/config),auditd 会记录带指定 key 的条目:
- 按关键字快速检索:
sudo ausearch -k selinux_config -k selinux_policy_dir -k selinux_active - 限定时间范围(如最近1小时):
sudo ausearch -k selinux_active --start recent - 查看原始日志结构:
sudo aureport -f -i --key selinux_policy_dir(-i 解析 UID/GID 为用户名)
分析日志识别真实行为与风险点
重点关注字段含义,而非逐行读取原始 audit.log:
-
comm 和 exe:判断是哪个命令发起操作(如
semanage、cp、vi) - uid/auid:区分实际用户(uid)与登录会话初始用户(auid),可追溯到 SSH 登录者
-
syscall:如
openat(读)、write(写)、chmod(改属性) -
success:值为
yes表示操作成功执行,no可能因权限不足或 SELinux AVC 拒绝(需结合ausearch -m avc进一步查) - 对
/etc/selinux/config的写入若来自非 root 用户或异常路径(如/tmp/xxx),需立即调查
auditd 不解析 SELinux 策略语义,但能精确回答“谁、何时、用什么命令、对哪个策略文件做了什么”。配合 audit2why 和 audit2allow 可进一步诊断 AVC 拒绝原因——但那是 SELinux 策略调试范畴,不属于文件访问审计本身。











