SELinux 安全机制深度解析与实践案例
1. SELinux 基础概述
SELinux 是由美国政府和犹他大学设计的 FLUX 高级安全内核(FLASK)的重新实现。它和 FLASK 架构提供了一个中央策略文件,用于确定访问控制决策的结果。这个中央策略采用白名单形式,意味着所有访问控制规则都必须在策略文件中明确定义。该策略文件由一个名为安全服务器的软件组件进行抽象和管理。
当 Linux 内核需要做出访问控制决策且 SELinux 启用时,内核会通过 LSM 钩子与安全服务器进行交互。在运行的系统中,进程是在 CPU 上获取时间来执行任务的活跃实体,用户只是调用这些进程来为他们完成工作。在 SELinux 系统中,进程通常被称为主体(subject),是访问文件的实体,安全服务器也会基于主体来做出访问决策。
主体会使用内核资源,这类内核资源就是目标(target)的一个示例。主体会对目标执行操作,这些操作被称为访问向量(access vectors),通常与执行的系统调用名称相关。例如,主体可以对目标执行打开操作。需要注意的是,目标也可以是进程。比如,当系统调用是 ptrace 时,主体可能是调试器,目标则是要调试的进程。主体通常是进程,但目标可以是进程、套接字、文件或其他对象。
2. SELinux 标签
SELinux 使用标签来描述与目标和主体相关的策略。标签是与对象关联的元数据,用于维护主体和目标的访问信息,关联的数据是一个字符串。例如,在调试器示例中,gdb 进程的主体标签字符串可能是 debugger,目标的标签可能是 debugee。在安全策略中,可以使用某种语义来表示具有 debugger 主体标签的进程被允许调试具
超级会员免费看
订阅专栏 解锁全文
25

被折叠的 条评论
为什么被折叠?



