温馨提示×

Ubuntu SELinux访问控制原理

小樊
55
2025-09-10 18:24:19
栏目: 智能运维

Ubuntu的SELinux访问控制基于**强制访问控制(MAC)**机制,通过安全上下文和策略规则限制进程对资源的访问,核心原理如下:

1. 核心组件

  • 主体(Subject):发起访问的进程(如httpdsshd),通过安全上下文标识其身份、角色和类型。
  • 客体(Object):被访问的资源(文件、目录、端口等),同样由安全上下文定义其类型和敏感级别。
  • 安全上下文(Security Context):由用户:角色:类型[:级别]组成,是访问控制的核心标签。
    • 类型(Type):最关键字段,决定主体能否访问客体(如httpd_t进程可访问httpd_sys_content_t类型文件)。
    • 级别:仅在多级安全(MLS)模式下使用,用于敏感信息分级(默认场景可忽略)。
  • 策略(Policy):预定义规则集合,规定主体类型对客体类型的访问权限(如“允许httpd_t读取httpd_sys_content_t文件”)。

2. 访问控制流程

  1. DAC预检查:先验证传统文件权限(如rwx),若拒绝则直接失败。
  2. SELinux策略匹配
    • 提取主体(进程)和客体(资源)的安全上下文。
    • 根据策略规则判断:若主体类型允许访问客体类型,则放行;否则拒绝并记录日志。
  3. 日志记录:拒绝访问时会写入审计日志(/var/log/audit/audit.log),用于排查问题。

3. 关键特点

  • 最小权限原则:即使进程以root身份运行,若不符合策略仍会被限制(如禁止访问非业务目录)。
  • 类型强制(TE):通过“域-类型”规则实现细粒度控制,例如:
    • httpd_t进程只能访问httpd_sys_content_t类型的Web文件,无法修改配置文件。
  • 模式切换:支持Enforcing(强制模式,拒绝违规并记录)、Permissive(宽容模式,仅记录违规)、Disabled(禁用)。

4. 与Ubuntu的集成

  • Ubuntu默认使用AppArmor作为MAC框架,SELinux需手动安装配置。
  • 安装后需通过/etc/selinux/config设置模式,并使用restorecon修复文件上下文。

参考来源

0