SELinux策略语言
SELinux架构中,对于内核资源,策略通过策略管理接口载入SELinux LSM模块安全服务器中,从而决定访问控制。
SELinux的优势是其策略规则不是静态的,用户必须按照安全目标的要求自行编写策略。使用和应用SELinux本质上就是编写和执行策略的过程。
策略在策略源文件中描述。策略源文件名称为policy.conf,其文件结构包括以下几点。
•(1)类别许可,指安全服务器的客体类别,对于内核而言,类别直接关系内核源文件,许可指针对每个客体类别的许可。通常,SELinux策略编写者不会修改客体的类别和许可定义。
•(2)类型强制声明,包括所有的类型声明和所有的TE(Type Enforcement,类型强制)规则,是SELinux策略中最重要的部分。
•(3)约束,是TE规则许可范围之外的规则,为TE规则提供必要的限制。多级安全(MLS)是一种约束规则。
•(4)资源标记说明,指对所有客体都必须添加的一个“安全上下文”标记,是SELinux实施访问控制的前提。SELinux根据资源标记说明处理文件系统标记以及标记运行时创建的临时客体规则。
SELinux策略大而复杂,由一个个小的策略模块构成。
策略模块的生成一般采用源模块法。源模块法支持单策略的开发,并通过一组shell脚本、m4宏和Makefile一起合并成为文本文件。
多个策略模块集合组成策略源文件,即policy.conf,策略源文件是文本文件,通过策略编译器checkpolicy编译为二进制文件policy.xx(xx为版本号),并通过策略装载函数security_load_policy载入内核且实施访问控制。
使用源模块构造和载入SELinux策略的全过程如图所示。
•首先,通过源模块法生成一个个策略模块,策略模块聚合形成一个大的策略源文件policy.conf;
•其次,策略源文件policy.conf通过策略编译器checkpolicy,生成可被内核读取的二进制文件policy.xx;
•最后,policy.xx通过策略装载函数security_load_policy载入内核空间并实施访问控制。
全部0条评论
快来发表一下你的评论吧 !