温馨提示×

centos selinux策略生效条件

小樊
35
2025-12-07 12:34:08
栏目: 智能运维

CentOS 上要让 SELinux 策略真正起作用,需要同时满足以下关键条件


一 运行模式与策略类型配置正确

  • 运行模式必须为非 Disabled:设为 Enforcing(强制执行)或 Permissive(仅告警不阻断);若为 Disabled,内核不加载任何 SELinux 策略,策略自然不生效。临时切换可用 setenforce 0|1,永久生效需修改 /etc/selinux/configSELINUX= 并重启。注意:从 Disabled ↔ Enforcing/Permissive 的切换需要重启;而 Enforcing ↔ Permissive 可立即生效。配置文件中的 SELINUXTYPE= 选择策略模块(如 targeted/minimum/mls),需与系统所提供的策略包一致。可用 sestatus 查看“Loaded policy name”确认当前加载的策略。

二 安全上下文标签完整且正确

  • 所有主体与客体必须具备有效的 安全上下文(security context),格式通常为 user:role:type:sensitivity:category;在 targeted 策略下访问控制主要基于 type。首次从 Disabled 切到 Enforcing/Permissive 并重启后,系统会为文件与进程打上标签;此后若移动/新建文件,需确保标签正确。可用 ls -Z 查看文件、ps -Z 查看进程上下文;若标签缺失或错误,可用 restorecon(按策略默认恢复)或 chcon(按需设置)修正。

三 策略规则与布尔值允许访问

  • 访问是否被放行取决于“策略规则 + 布尔值”的组合。可通过 sestatus -bgetsebool -a 查看并调整布尔开关(如与 FTP、HTTP、NFS 等相关的开关),以打开或收紧特定功能。若默认策略过于严格,可在充分评估风险后用 audit2allow 生成定制模块并通过 semodule 加载,使策略与实际业务匹配。

四 与 DAC 权限共同满足

  • SELinux 是 MAC,位于 DAC(rwx 权限、属主/属组) 之上。即便 SELinux 允许,若 DAC 不允许(例如文件权限为 000 或属主不匹配),访问仍会被拒绝;反之亦然。因此排障时要同时检查 ls -l 的 DAC 与 ls -Z 的 SELinux 上下文。

五 常见导致“策略看似不生效”的排查要点

  • 当前为 PermissiveDisabled:用 getenforcesestatus 确认;若是 Disabled,需改为 Enforcing 并重启。
  • 配置文件与实际不一致:检查 /etc/selinux/config/etc/sysconfig/selinux(该文件通常为指向 …/selinux/config 的符号链接),确保 SELINUX=SELINUXTYPE= 正确。
  • 标签缺失/错误:对迁移或新建的路径执行 restorecon -Rv <路径>;必要时用 chconsemanage fcontext 持久化默认标签。
  • 布尔值限制功能:用 getsebool -a 检查相关服务布尔开关,必要时用 setsebool -P on/off 持久化。
  • 规则不足:分析 /var/log/audit/audit.log(或 journalctl 配合 ausearch/sealert),必要时用 audit2allow 生成并加载模块。

0