首先,总的说来:整个安全性体系结构称为Flask,在 Flask 体系结构中,安全性策略的逻辑和通用接口一起封装在与操作系统独立的组件中,通用接口是用于获得安全性策略决策的。这个单独的组件称为安全性服务器,即使它只是个内核子系统而已。该服务器的 SELinux 实现定义了一种混合的安全性策略,由类型实施 (TE)、基于角色的访问控制 (RBAC) 和可选的多级别安全性 (MLS) 组成,所以广泛用于军事安全性中。
接下来是对flask体系结构的认识。
Flask有两个用于安全性标签的与策略无关的数据类型-- 安全性上下文和 安全性标识 。安全性上下文是表示安全性标签的变长字符串。安全性标识 (SID) 是由安全性服务器映射到安全性上下文的一个整数。SID 作为实际上下文的简单句柄服务于系统。它只能由安全性服务器解释。Flask 通过称为对象管理器的构造来执行实际的系统绑定。它们不透明地处理 SID 和安全性上下文,不涉及安全性上下文的属性。任何格式上的更改都不应该需要对对象管理器进行更改
安全性服务器只为包含用户、角色、类型和可选 MLS 范围合法组合的安全性上下文提供 SID。“合法性”是由安全性策略配置(将在本文的稍后部分介绍)所确定的。
一般来说,对象管理器查询安全性服务器以根据标签对(主体的和客体的)和对象的类获得访问决定。类是标识对象是哪一种类(例如,常规文件、目录、进程、UNIX 域套接字,还是 TCP 套接字)的整数。向量中的许可权通常由对象可以支持的服务和实施的安全性策略来定义。访问向量许可权基于类加以解释,因为不同种类的对象有不同的服务。例如,访问向量中使用的许可权位表示文件的 'unlink' 许可权,它也用于表示套接字的 'connect' 许可权。向量可以高速缓存在访问向量高速缓存 (AVC) 中,也可以和对象一起存储,这样,对象管理器就不必被那些已执行的决策的请求淹没。
对象管理器还必须为将标签分配给它们的对象定义一种机制。在服务流中指定管理器如何使用安全性决定的控制策略还必须由管理器定义和实现。在策略更改的情况下,对象管理器必须定义将调用的处理例程。在任何情况下,对象管理器都必须将对象的安全性上下文作为不透明的字符串处理。通过这种方式,不应该有合并到对 象管理器中的特定于策略的逻辑.
在安全性策略中进行运行时更改是有可能的。如果发生这种情况,安全性服务器通过取消不再授权的 SID 并复位 AVC 来更新 SID 映射。
文件是对象类的特殊实例。新文件继承其父目录中那些文件的相同类型。有一个与文件相关的永久整数 SID (PSID),该整数随后映射成分区表中的安全性标签。这个表(将对象/PSID 和 PSID/安全性标签映射区分开)在安装文件系统时加载到内存中。当新的安全性标签应用到文件时,它在内存(和磁盘上)进行更新。如果它是远程安装的,即使已经由文件系统重新命名了,它也可以让基于 inode 的 PSID/对象映射表跟踪文件。
最后是关于SELinux架构的一些认识:
SELinux在内核中以一个LSM模块的形式实现,SELinux使用LSM钩子控制对内核资源的访问,访问决定由SELinux安全服务器(SS: Security Server)产生,它是SELinux LSM模块的一部分,安全策略由安全服务器通过一个具有特权的用户空间接口载入内核,AVC为访问确认提供性能增强。
SELinux框架也支持通过libselinux库对用户空间客体进行管理,内核安全服务器直接提供访问确认,而程序库包括每一个进程AVC,这个方法需要内核保留策略所有用户空间管理器以及所有用户空间客体类别。
1、 LSM框架
LSM框架的思想是允许安全模块以插件形式进入内核,以便更严格地控制Linux默认 的基于身份的任意访问控制(DAC)安全性。LSM在内核系统调用逻辑中提供了一套钩子(hooks),这些钩子通常放在标准Linux访问检查后、且内 核调用访问真实资源之前,下图举例说明了LSM框架的基础。
SELinux作为一个LSM模块载入内核,在访问被允许之前进行额外的访问确认。LSM框架的一个分支是只有当标准Linux访问(DAC)检查成功后SELinux才会生效。
2、 SELinuxLSM模块
SELinux LSM模块架构如下图所示:
客体管理器负责对它们管理的资源集强制执行安全服务器的策略决定,对于内核,你可以认为客体管理器是一个内核子系统,它创建并管理内核级客体。内核客体管理器的实例包括文件系统、进程管理和System V进程间通信(IPC)。在LSM架构中,客体管理器是通过LSM钩子描绘的,这些钩子分散在内核子系统各个地方,调用SELinux LSM模块做出访问决定。然后,LSM钩子通过允许或拒绝对内核资源的访问强制执行这些决定。
SELinux架构的第三方组件是访问向量缓存(AVC),AVC缓存是安全服务器为后面的访问检查准备的,目的是为了提升访问确认的速度。AVC还为LSM钩子和内核客体管理器提供了SELinux接口。
3、 用户控件管理器
SELinux架构可以被应用到用户控件资源和内核资源。它支持用户空间客体的方法就是直接通过内核安全服务器,如下图:
参考原文:http://blog.csdn.net/huangyabin001/article/details/47404555
http://blog.csdn.net/myarrow/article/details/10063581
http://blog.sina.com.cn/s/blog_4afba8750100ctek.html