温馨提示×

selinux在ubuntu中的工作原理

小樊
57
2025-08-29 18:01:33
栏目: 智能运维

SELinux在Ubuntu中的工作原理基于强制访问控制(MAC),通过为系统资源(进程、文件、端口等)打上安全上下文标签,并依据策略规则限制主体(进程)对客体(资源)的访问,即使进程拥有root权限也无法绕过策略。

核心机制

  1. 安全上下文(Security Context)
    每个进程、文件、端口等资源都会被标记唯一的上下文标签(如httpd_thttpd_sys_content_t),包含用户、角色、类型等信息,用于标识其安全级别和访问权限。

    • 查看标签:ls -Z(文件/目录)、ps -Z(进程)。
  2. 策略规则(Policy Rules)

    • 类型强制(Type Enforcement):策略中最核心的机制,通过定义“类型”的访问规则控制资源交互。例如,默认策略可能允许httpd_t进程访问httpd_sys_content_t类型的文件,但禁止访问其他类型的文件。
    • 策略类型
      • targeted(默认):仅对网络服务等关键进程应用严格策略,对本地进程限制较少。
      • strict:对所有进程实施全面严格的访问控制。
  3. 工作模式

    • Enforcing(强制模式):违反策略的行为会被立即拦截,并记录到日志(/var/log/audit/audit.log)。
    • Permissive(宽容模式):仅记录违规行为,不实际拦截,用于调试策略。
    • Disabled(禁用模式):完全关闭SELinux,系统仅依赖传统DAC(自主访问控制)。
  4. 决策流程
    当进程尝试访问资源时,内核依次检查:

    1. 标准Linux DAC权限(文件权限、用户组等);
    2. SELinux策略规则:通过策略模块判断主体与客体的上下文是否匹配允许的访问类型。若匹配失败,则拒绝访问并记录日志。

配置与管理工具

  • 安装
    sudo apt install selinux-basics selinux-policy-default  
    sudo selinux-activate  # 启用SELinux  
    
  • 模式切换
    • 临时切换:sudo setenforce 0(Permissive)/ 1(Enforcing)。
    • 永久切换:编辑/etc/selinux/config,修改SELINUX=参数后重启。
  • 策略管理
    • semanage:管理文件/端口标签、布尔值(如允许服务访问特定端口)。
    • audit2allow:根据日志生成自定义策略模块,解决策略拦截问题。

注意事项

  • 兼容性:部分Ubuntu软件可能未完全适配SELinux,需手动调整策略或谨慎启用。
  • 性能影响:策略复杂度高时可能增加系统开销,建议在测试环境优化后再部署到生产环境。

参考来源

0