SELinux监控敏感资源访问需启用强制访问控制、精准标注安全上下文,并依托审计日志构建可观测性;须配置为enforcing模式、启动auditd服务、正确打标文件上下文、分析avc拒绝日志、定制策略与布尔值规则。

利用系统安全增强模块(如 SELinux)监控进程对敏感资源的访问,核心在于启用强制访问控制、正确标注安全上下文,并结合日志与策略分析实现可观测性。它不是“开启即生效”的被动记录,而是通过策略执行过程中的拒绝/允许决策,配合审计日志形成可追溯的访问证据链。
配置SELinux为enforcing模式并启用审计
确保系统处于强制执行状态,才能真正拦截非法访问并生成审计事件:
- 检查当前模式:
getenforce—— 应返回 Enforcing;若为 Permissive 或 Disabled,需修改/etc/selinux/config中的SELINUX=enforcing并重启 - 确认 auditd 服务已启动:
systemctl status auditd,SELinux 拒绝事件默认写入/var/log/audit/audit.log - 如需更细粒度记录(如允许访问也审计),可用
auditctl -a always,exit -F class=filesystem -F perm=xwr补充规则
为敏感资源打上精准的安全上下文标签
标签是SELinux识别“什么资源属于什么类型”的依据,错误或缺失标签会导致策略失效:
- 查看现有文件上下文:
ls -Z /etc/shadow,应显示类似system_u:object_r:shadow_t:s0 - 若目录未被正确标记(如自建的数据库备份目录),用
semanage fcontext -a -t mysqld_db_t "/backup/mysql(/.*)?"定义规则,再执行restorecon -Rv /backup/mysql应用 - 避免直接用
chcon临时修改——它不持久,且可能绕过策略一致性校验
通过拒绝日志定位越权行为
SELinux 不主动“监控”访问,而是在访问发生时做策略判决;被拒绝的行为会留下清晰审计线索:
- 用
ausearch -m avc -ts recent查最近的访问控制拒绝事件 - 典型输出含:违反的域(如
httpd_t)、目标类型(如user_home_t)、被拒操作(read)、触发进程(pid=1234) - 配合
pid查进程:ps -p 1234 -o pid,comm,cmd,确认是否为异常进程或配置错误的服务
定制策略规则实现定向监控与响应
在基础拒绝基础上,可进一步细化策略以满足监控需求:
- 对高危操作(如读取
/etc/shadow)启用“拒绝+告警”双机制:用audit2why分析日志后,用sealert -a /var/log/audit/audit.log生成可读报告 - 为特定进程启用布尔值开关,例如
setsebool -P httpd_read_user_content on允许 Web 服务读用户内容,同时保留其他限制 - 结合 systemd 的
SELinuxContext=字段,在服务单元中硬编码进程域,防止被恶意替换二进制后逃逸类型约束










