监控SELinux配置文件变动需用auditd添加内核级规则:对/etc/selinux/config等5个关键路径用-w -p rwxa -k selinux_*设置监控,auid自动记录登录用户ID;规则须写入/etc/audit/rules.d/并执行augenrules --load持久化;日志通过ausearch -k selinux_config -i查看,提取auid字段即可追溯真实操作者。

要监控所有针对 SELinux 配置文件的变动并记录真实 UID(特别是登录用户 ID,即 auid),不能只靠简单路径监控,必须结合 auditd 的内核级规则设计、SELinux 配置文件范围识别,以及关键字段的显式捕获逻辑。
明确监控目标:SELinux 配置文件有哪些
SELinux 的核心配置文件包括:
- /etc/selinux/config —— 主配置,控制 enforcing/permissive/disabled 模式
- /etc/selinux/targeted/active/policy.kern(或 policy.*)—— 运行时策略二进制文件(路径因策略类型而异)
- /etc/selinux/targeted/modules/active/modules/ —— 活跃模块目录(.pp 文件)
- /etc/selinux/targeted/setrans.conf —— SELinux 翻译配置
- /etc/selinux/targeted/seusers —— 用户映射配置
注意:/boot/vmlinuz-* 或 /etc/grub.conf 等间接影响 SELinux 启动参数的文件,不属于“SELinux 配置文件”范畴,不纳入本次监控范围。
用 auditctl 添加精准文件监控规则(含 auid 记录)
auditd 默认记录 auid(audit user ID),它在用户首次登录时就固定,即使后续 su 或 sudo 切换身份也不会改变,比 uid 更可靠。以下命令对每个关键路径添加读写+属性变更监控,并打上统一标签便于检索:
sudo auditctl -w /etc/selinux/config -p rwxa -k selinux_config sudo auditctl -w /etc/selinux/targeted/active/policy.kern -p rwxa -k selinux_policy sudo auditctl -w /etc/selinux/targeted/modules/active/modules/ -p rwxa -k selinux_modules sudo auditctl -w /etc/selinux/targeted/setrans.conf -p rwxa -k selinux_setrans sudo auditctl -w /etc/selinux/targeted/seusers -p rwxa -k selinux_seusers
说明:
- -w 表示路径监控;-p rwxa 覆盖读、写、执行、属性修改四类操作;
-
-k selinux_* 是自定义关键词,后续可用
ausearch -k selinux_config快速过滤; - auid 自动包含在每条日志中,无需额外参数;
- 若需确认某次修改对应哪个登录用户,查日志中的
auid=字段即可(如auid=1001),再用id -un 1001查用户名。
将规则持久化到系统启动生效
临时规则在 reboot 或 auditd 重启后丢失。须写入规则文件并重载:
- 新建规则文件:
sudo nano /etc/audit/rules.d/selinux-monitor.rules - 粘贴全部上述
auditctl -w ...行(不含sudo和命令前缀) - 保存后执行:
sudo augenrules --load - 验证是否加载成功:
sudo auditctl -l | grep selinux
⚠️ 注意:systemctl restart auditd 会清空当前规则,不可用于加载新规则;必须用 augenrules --load。
查看与验证日志(含 UID/auid 提取)
触发一次修改(例如 sudo vi /etc/selinux/config),然后执行:
sudo ausearch -k selinux_config -i | grep -E "auid=|uid=|exe=|comm="
输出示例片段:
type=SYSCALL msg=audit(1745962830.123:456): arch=c000003e syscall=2 success=yes exit=3 a0=7fff12345678 a1=2 a2=1b6 a3=0 items=1 ppid=1234 pid=5678 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="vi" exe="/usr/bin/vim.basic"关键字段解释:
- auid=1001 → 实际登录用户(如 alice)
- uid=0 → 当前进程有效 UID(root)
- comm="vi" → 执行命令名
- exe="/usr/bin/vim.basic" → 完整可执行路径
如需导出结构化结果,可用:sudo aureport -f -k selinux_config --start today --format csv。


















