SELinux:高级安全访问控制详解
1. SELinux基础
SELinux(Security-Enhanced Linux)是美国政府和犹他大学设计的FLUX高级安全内核(FLASK)的重新实现。SELinux和FLASK架构提供了一个中央策略文件,用于确定访问控制决策的结果。这个中央策略采用白名单形式,意味着所有访问控制规则都必须在策略文件中明确定义。策略文件由一个名为安全服务器的软件组件进行抽象和管理。
当Linux内核需要做出访问控制决策且SELinux启用时,内核通过LSM(Linux Security Modules)钩子与安全服务器进行交互。
在运行的系统中,进程是在CPU上获取时间来执行任务的活跃实体。用户只是调用这些进程来为他们工作。例如,当我们使用文字处理器时,我们相信以我们的凭据运行的文字处理器不会打开我们的SSH密钥并将其嵌入到文档元数据中。在SELinux系统中,第一个参与者是进程,通常称为主体(subject),主体访问文件,安全服务器根据主体来做出访问决策。
主体使用内核资源,这种内核资源就是目标(target)的一个例子。主体对目标执行操作,这些操作被称为访问向量(access vectors),通常与执行的系统调用名称相关。例如,主体可以对目标执行打开操作。需要注意的是,目标也可以是进程。例如,如果系统调用是ptrace,主体可能是调试器,目标则是要调试的进程。主体通常是进程,但目标可以是进程、套接字、文件或其他东西。
2. SELinux标签
SELinux使用标签来描述与目标和主体相关的策略。标签是与对象关联的元数据,用于维护主体和目标的访问信息,关联的数据是一个字符串。例如,
超级会员免费看
订阅专栏 解锁全文
8

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



