SELinux(Security-Enhanced Linux)是 CentOS 等 Linux 发行版中默认的​​强制访问控制(MAC)安全模块​​,由美国国家安全局(NSA)开发并开源。它通过细粒度的策略规则,为系统提供​​额外的安全层​​,超越传统的用户/组权限(自主访问控制,DAC)。


​核心原理与工作流程​

  1. ​标签化(Labeling)​

    • 每个进程、文件、端口等资源都被分配一个​​安全上下文​​(Security Context),格式为:用户:角色:类型:安全级别(如 system_u:object_r:httpd_sys_content_t:s0)。
    • ​类型(Type)​​ 是最关键字段,SELinux 策略主要基于类型定义访问规则。
  2. ​策略规则(Policy)​

    • 策略中定义了允许的操作,例如:“类型为 httpd_t 的进程可以读类型为 httpd_sys_content_t 的文件”。
    • 默认策略包(如 targeted)仅保护关键服务(如 Apache、MySQL),而非限制整个系统,以平衡安全性与易用性。
  3. ​访问决策​

    • 当进程访问资源时,SELinux 检查其安全上下文和策略规则,决定是否放行。
    • ​拒绝优先级高于传统权限​​:即使 DAC 允许访问,若 SELinux 策略禁止,操作仍会被阻止。
  4. ​工作流程示例​

    进程尝试读取文件 → 内核调用 SELinux → 检查进程(域)和文件(类型)的上下文 → 匹配策略规则 → 允许/拒绝访问 → 记录审计日志(/var/log/audit/audit.log)
    

​核心价值与应用场景​

  1. ​最小权限原则​

    • 限制服务权限:例如,即使 Apache 被入侵,攻击者也无法访问非 Web 相关文件(如 /etc/shadow)。
    • 防止提权攻击:即使进程以 root 身份运行,SELinux 仍限制其操作范围。
  2. ​典型应用场景​

    • ​Web 服务器​​:限制 Apache/Nginx 仅访问 Web 目录。
    • ​数据库​​:MySQL/PostgreSQL 仅能读写特定数据文件。
    • ​容器安全​​:与容器运行时(如 Docker、Podman)集成,隔离容器进程。
    • ​合规需求​​:满足 GDPR、HIPAA 等安全标准要求。

​关键操作命令​

  • ​查看上下文​

    ls -Z /var/www/html  # 查看文件上下文
    ps -eZ | grep httpd  # 查看进程上下文
    
  • ​临时修改布尔值​

    setsebool -P httpd_can_network_connect on  # 允许 Apache 访问网络
    
  • ​修复文件标签​

    restorecon -Rv /var/www/html  # 恢复默认上下文
    
  • ​分析审计日志​

    ausearch -m AVC -ts recent  # 查看最近的拒绝事件
    audit2why -av  # 解释拒绝原因并建议修复
    

​注意事项​

  • ​勿随意禁用 SELinux​​:使用 setenforce 0(宽松模式)临时调试,而非永久禁用(/etc/selinux/config)。

  • ​自定义策略​​:复杂场景可通过 audit2allow 生成自定义策略模块。

  • ​策略模式​​:

    • enforcing:强制执行策略。
    • permissive:仅记录不阻止操作。
    • disabled:完全禁用(需重启)。

通过 SELinux,CentOS 能够有效遏制恶意软件的横向移动和数据泄露,是构建安全基础设施的重要工具。理解其标签机制和策略管理,能显著提升系统防护能力。

posted on 2025-05-22 16:37  LeeHang  阅读(129)  评论(0)    收藏  举报