温馨提示×

centos selinux功能介绍

小樊
43
2026-01-07 21:37:38
栏目: 智能运维

SELinux 在 CentOS 中的功能与定位

  • SELinux(Security-Enhanced Linux)是 Linux 内核的强制访问控制(MAC)安全子系统,工作在内核态,对进程、文件、端口等资源实施细粒度访问控制,遵循最小权限原则。即使进程以 root 身份运行,也会被策略约束,从而显著降低被攻破后的影响范围。在 CentOS/RHEL 中默认集成并启用,是保障服务器安全的基石之一。

核心机制与关键概念

  • DAC 与 MAC:传统 **DAC(自主访问控制)**基于用户/组权限;**MAC(强制访问控制)**在此基础上,由安全策略与标签决定访问,优先级更高,能限制 root 的越权行为。
  • 安全上下文(Security Context):每个主体(进程)与客体(文件、目录、端口等)都有标签,典型格式为:user:role:type:level。访问是否被允许,取决于策略中“主体域”对“客体类型”的规则匹配,其中 type 最关键。
  • 策略与类型:系统预置多种策略,CentOS 默认使用 targeted(仅对选定进程做强制限制),另有 minimum 与更严格的 mls(多级安全)。
  • 布尔值(Booleans):策略的开关项,用于在不编写模块的情况下启用/禁用某类功能(如是否允许某服务发起网络连接)。

运行模式与持久化配置

  • 三种运行模式:
    • Enforcing:强制执行策略,违规操作被拒绝并记录日志(推荐生产使用)。
    • Permissive:不拒绝操作,仅记录本应被拒绝的行为(便于排障与策略开发)。
    • Disabled:完全关闭 SELinux,不加载策略与标签(强烈不推荐)。
  • 常用命令与配置路径:
    • 查看与切换模式:getenforcesetenforce 1|0(仅对当前会话生效,重启后恢复)。
    • 持久化配置:编辑 /etc/selinux/config(常见配置项:SELINUX=enforcing|permissive|disabledSELINUXTYPE=targeted|minimum|mls),修改后需重启生效。
    • 细粒度控制:可将单个域设为宽容(如 semanage permissive -a httpd_t),便于在不影响全局的前提下调试某服务。

常用运维操作与故障排查

  • 查看与调整安全上下文:
    • 查看:ls -Z <文件/目录>ps -Z <进程>
    • 修复与定制:使用 restorecon 按默认规则恢复上下文;用 semanage fcontext 为新路径添加持久化上下文规则,再用 restorecon -R 应用。
  • 端口与网络:
    • 使用 semanage port 将非标准端口加入策略(如允许 http_port_t 使用 TCP 80)。
  • 布尔值:
    • 查看/设置:getsebool -asetsebool -P <name> on|off(加 -P 使设置永久生效)。
  • 日志与排障:
    • 拒绝日志位于 /var/log/audit/audit.log(可用 ausearch -m avc 检索),配合 audit2whysealert 获取人类可读解释与修复建议。
    • 必要时用 audit2allow 从拒绝日志生成自定义策略模块,并用 semodule -i 加载(应谨慎评估,避免过度放宽策略)。

实践建议

  • 生产环境保持 Enforcing;排障时短时切换到 Permissive 定位问题,再回到 Enforcing
  • 避免直接改为 Disabled;若必须关闭,务必了解其会停止标签与策略加载,后续再启用代价较高。
  • 变更服务目录、端口或自定义路径时,优先通过 semanage fcontext/restoreconsemanage port 正确设置上下文与端口类型,减少对业务的影响。

0