一种自动处理语义冲突的SeLinux策略模块合并方法与流程

文档序号:13763324阅读:346来源:国知局
一种自动处理语义冲突的SeLinux策略模块合并方法与流程

本发明涉及一种SeLinux安全策略迭代开发过程中的新旧模块合并方法,以及在新旧模块规则语义发生冲突时的自动化处理技术。



背景技术:

由美国国家安全局NSA开发的SeLinux安全增强模型,支持TE类型增强策略、RBAC基于角色的访问控制策略以及MLS多级安全策略,其细粒度的权限控制,使SeLinux有能力提供“最小特权原则”的策略语义。

然而SeLinux的策略配置十分复杂,配置语言之间依赖性强,策略模块的开发经常需要多次迭代完成,能否有效的实现系统安全需求取决于SeLinux策略配置的正确性,这就对策略模块开发与维护工作带来巨大的困难。

在对安全管理目标增加新的安全需求时,传统的策略模块开发过程将对原策略模块中的规则语句进行深度剖析,从而分析出规则语句之间的依赖关系,根据新的安全需求语义,对涉及到的规则语句进行定位更改。一般的SeLinux策略模块具有结构复杂,规则语句之间耦合度高的共性,通过人工处理的方式极容易发生分析偏差,从而难以保证需求目标与策略规则的一致性。

本发明实现了一种针对SeLinux安全策略迭代开发过程中新旧模块的合并方法,自动处理策略模块之间定义重复、转移类规则语义歧义、访问向量规则冲突等问题。最终得到叠加了新的安全需求的一致可信的策略模块。



技术实现要素:

本发明所要解决的技术问题是实现新旧SeLinux策略模块合并,并在合并过程中自动处理策略模块规则语义发生的冲突。

为解决这个问题,本发明开发实现的新旧模块规则语义发生冲突时的自动化处理步骤如下:

1)规则信息提取阶段:

a输入新旧SeLinux策略模块源代码文件;

b锁定规则关键词;

c依据规则依赖关系多遍扫描提取规则信息;

d结束。

2)规则合并阶段:

a输入格式化的规则信息数据;

b合并元规则;

c消除转移规则语义歧义;

d处理访问向量规则冲突;

e合并安全上下文规则;

f结束。

步骤1)-a中首先将新旧SeLinux策略模块源代码文件输入系统,其中旧策略文件指既有的安全策略文件,新策略文件指完成新的安全需求的策略文件,亦可指迭代开发策略模块过程中的需求调整部分的策略文件,策略文件包括te文件、if文件和fc文件。

步骤1)-b中对策略模块源代码文件中规则语句的关键词进行锁定,这些关键词包括:

1)基本规则关键词:class、permission、common、inherit。

2)TE策略相关关键词:type、alias、attribute、allow、neverallow、auditallow、dontaudit、type_transition。

3)RBAC策略相关关键词:role、dominance、role_allow、role_transition、user。

步骤1)-c中依据SeLinux中规则之间依赖关系,对策略源代码文件进行多遍扫描提取规则信息,要求每遍扫描之间不存在定义依赖,且保证每遍扫描之内涉及的规则具有相关性,本发明采取五遍扫描的方式对策略规则信息进行完整提取,扫描完成后,针对不同的规则类型,采用相适应的数据结构来构建格式化规则信息数据。

步骤2)-a中输入由步骤1)-c中构建的格式化规则信息数据。

步骤2)-b中元规则是指对类、权限、类型、角色、用户等进行声明定义与包含、继承规定的规则。对元规则的合并处理有重复定义删除、相同名称规则所包含的属性列表合并、原名替换别名、common、attribute规则展开、继承规则的继承操作。

步骤2)-c中转移类规则是指TE策略中的类型转移规则和RBAC策略中的角色转移规则。以类型转移规则为例,由新旧策略中所有类型转移规则中的类型转移关系构建的转移关系有向图,如果发现有向图类型节点中访问相同的target type时,转移到的new type不唯一,此时发生转移规则语义歧义,应对歧义节点依照新策略语义进行消歧义处理。

步骤2)-d中首先对TE策略中访问向量规则构建主客体访问控制矩阵。新旧策略模块中对相同的一对主客体权限控制映射,可能出现新旧语义冲突的问题,依据访问向量规则类型的限定含义,提供三种冲突解决方案,分别为宽容性方案,严格性方案和默认的以新策略为语义基准的方案。

步骤2)-e中对静态标记的安全上下文规则进行合并操作。具有相同安全上下文的客体对象,对其标记规则语句进行合并处理,相同客体对象的安全标记发生矛盾时,以新策略语义为基准进行处理。

本发明的自动处理语义冲突的SeLinux策略模块合并方法,通过对策略模块之间定义重复、转移类规则语义歧义、访问向量规则冲突等问题自动处理。规避了人工分析策略模块规则的繁琐易错的工作,得到了一致可信的合并策略模块源代码文件。

附图说明

图1为本发明的流程图。

图2为SeLinux策略语言关键词依赖关系图。

图3为规则信息提取部分流程图。

图4为策略合并部分处理时序图

图5为合法转移关系有向图

图6为非法转移关系有向图

图7为转移关系有向图构建流程图

图8为基于DFS的转移关系消歧义流程图

图9为访问控制矩阵图

具体实施方式

为了更好的了解本发明的技术内容,下面结合附图对本发明进行详细说明。

图1是本发明实施自动处理语义冲突的SeLinux策略模块合并方法的流程图,包括两个阶段:规则信息提取阶段和规则合并阶段。

步骤0为本发明的起始状态;

在规则信息提取阶段(步骤1-4),步骤1是向处理系统输入待合并的新旧SeLinux策略源代码文件;

步骤2锁定SeLinux策略源代码文件中规则语句的关键词,后续扫描基于关键词搜索处理;

步骤3为对输入的策略源代码文件进行多遍扫描,提取规则信息;

步骤4为经过多遍扫描之后得到了格式化的规则信息数据;

在规则合并阶段(步骤5-8),步骤5为对SeLinux策略元规则进行合并,对元规则的合并处理有重复定义删除、相同名称规则所包含的属性列表合并、原名替换别名、common、attribute规则展开、继承规则的继承操作;

步骤6为消除转移类规则中发生语义歧义的规则语句,首先构建转移关系有向图,如果发现有向图类型节点中访问相同的target type时,转移到的new type不唯一,此时发生转移规则语义歧义,应对歧义节点依照新策略语义进行消歧义处理;

步骤7对访问向量规则冲突依照所选择的冲突解决方案进行处理,提供三种冲突解决方案,分别为宽容性方案,严格性方案和默认的以新策略为语义基准的方案;

步骤8为合并静态标记的客体安全上下文规则,具有相同安全上下文的客体对象,对其标记规则语句进行合并处理,相同客体对象的安全标记发生矛盾时,以新策略语义为基准进行处理;

步骤9为结束步骤。

图2为SeLinux策略语言关键词依赖关系有向图,从中可以看出,从源端到终端的不同路径中,步长最长距离为五,所以多遍扫描的遍数为五遍才可以将所有的规则信息放置在不同遍中,保证每遍之中的关键词都不存在依赖关系。

图3为规则信息提取部分的多遍扫描流程图,要求每遍扫描之间不存在定义依赖,且保证每遍扫描之内涉及的规则具有相关性,本发明采取五遍扫描的方式对策略规则信息进行完整提取。

步骤10为规则信息提取起始步骤;

步骤11为第一次扫描,包括公共类定义规则与类型定义规则语句,关键词有:common、inherit、type、alias、attribute;

步骤12为第二次扫描,包括类定义规则和访问向量规则语句,关键词有:class、permission、allow、neverallow、auditallow、dontaudit;

步骤13为第三次扫描,包括角色定义、用户定义规则语句,关键词有:role、dominance、user;

步骤14为第四次扫描,包括转移类规则语句,关键词有:type_transition、role_allow、role_transition;

步骤15为第五次扫描,包括安全上下文规则和Interface接口规则;

步骤16为结束步骤。

图4是规则合并模块的处理时序图,系统按序对不同的规则进行合并操作,处理顺序为元规则、转移类规则、访问向量规则、安全上下文规则、接口规则。

步骤20进入元规则合并模块,对声明、定义、继承定义类语句进行合并;

步骤21由于元规则的相似性,引入公共处理单元进行共性处理,如重复定义删除、同名定义属性合并、别名替换、集合规则展开、继承规则展开等;

步骤22公共处理单元结束;

步骤23元规则合并结束;

步骤30进入转移类规则合并模块,分别对类型转移规则和角色转移规则进行合并,对每种规则都会构建一个转移关系树,用来表示项之间的变化关系,由于转移规则语义歧义问题的存在,将对这些歧义语句进行消歧义处理;

步骤31处理类型转移类规则;

步骤32处理角色转移类规则;

步骤33转移类规则合并结束;

步骤40进入访问向量规则和并模块;

步骤41对访问向量规则构建相应的访问向量矩阵;

步骤42当发生权限规则冲突时,依据冲突处理策略,对冲突语句进行处理;

步骤43访问向量规则合并结束;

步骤50进入安全上下文规则合并模块,对静态标记的客体对象安全上下文进行合并操作;

步骤51文件系统安全上下文合并;

步骤52文件或目录安全上下文合并;

步骤53网络对象安全上下文合并;

步骤54当开启MLS多级安全策略时,依据BIBA模型提供数据审查功能,数据审查包括数据完整性审查与数据机密性审查;

步骤55安全上下文规则合并结束;

步骤60进入接口规则合并模块;

步骤61对进口规则进行合并处理;

步骤62接口规则合并结束;

在转移类规则合并处理时,区分合法转移关系与非法转移关系是消除语义歧义的关键。

图5显示了合法的转移关系有向图结构,转移类规则在从原目标转换到新目标的转移有向图中,合法的类型共分为三类,即汇聚型、尾环型和汇聚-尾环混合型,由于在类型(或角色)转移规则中,不允许出现有歧义的语义,亦即不允许出现“一对多”的情形,所以转移有向图必然呈现出向中心汇聚的形式,也就是说除了最后一个后继节点,其他节点至多存在一个后继节点。如果转移有向图中不存在最后一个后继节点,则呈现尾环型情况,任何一个转移有向图的连通子图中最多出现一个环,否则必然引出歧义语义。显然,存在单一尾环的汇聚-尾环型也属于合法的转移规则有向图。

图6显示了非法的转移关系有向图结构,如果在转移规则有向图中,某节点的后继节点不止一个,即出现“一对多”的情况,则是非法的转移规则关系,此时源类型(角色)无法决定应该转移到哪个新类型(角色)中,所以必须对此类转移关系进行消歧义操作。在对非法的转移关系进行消歧义时,由安全管理员选择应该以原策略语义为基准或是以新策略语义为基准,消歧义结束后,非法的转移规则关系,将转换为合法的转移关系中三种类型之一。

图7为转移关系有向图的构建流程图,由原策略与新策略中转移类规则语句生成。由于转移关系有向图并非只有一个开始节点,所以为了后续遍历,需要对开始节点进行记录,生成对应的开始节点集合。

步骤70转移关系有向图构建开始步骤;

步骤71为提取转移类规则数据中的类型参数;

步骤72判断此类型是否为源类型,是则转向步骤73,否则为新类型,转向步骤76;

步骤73添加源类型节点到转移关系有向图中;

步骤74判断源类型节点是否存在于非开始节点集中,如果不在其中,则需要将其添加到开始节点集中,供后续遍历使用,转至步骤75,否则转至步骤81;

步骤75添加源类型至开始节点集合;

步骤76添加新类型到转移关系有向图中;

步骤77判断新类型节点是否存在于开始节点集中,如果新类型出现在开始节点集合中,则需将其移动到非开始节点集中,转至步骤78,否则转至步骤79;

步骤78将新类型其移动到非开始节点集中;

步骤79判断新类型是否存在于非开始节点集中,如果新类型未出现在非开始节点集中,则需将其添加到非开始节点集中,转至80,否则转至81;

步骤80添加新类型到非开始节点集中;

步骤81添加转移规则中从源类型到新类型的有向边到转移关系有向图中;

步骤82判断是否对转移规则遍历完成,完成转至步骤83,未完成转至步骤71;

步骤83为结束步骤。

图8为转移关系消歧义的处理流程图,基于DFS深度优先遍历转移关系有向图中的所有的节点,遍历时对节点进行color标记,color属性为WHITE表示未经过遍历,color属性为GRAY表示正在遍历但还未遍历完成,color属性为BLACK表示已经遍历完成。在遍历过程中,找到有语义歧义的有向边,依照基准策略语义,对有向边进行剪枝剔除。从而达到消歧义的目标。

步骤90为消歧义处理流程的开始步骤;

步骤91初始化节点,所有节点标记为WHITE,先驱节点标记为NULL;

步骤92从开始节点集中选择一个节点u;

步骤93判断u的color属性是否为WHITE,如果是则说明还未遍历过此节点,转至步骤94处理,否则表示已经遍历过,转至步骤104;

步骤94为DFS递归遍历的函数入口,输入节点u;

步骤95设置u的color属性为WHITE,并初始化有向边计数变量count;

步骤96判断u是否存在下一个邻接点v,如果存在则转至步骤97,否则说明此节点已经不存在后续节点,转至步骤103;

步骤97计数变量count加一;

步骤98判断count值是否大于一,即判断是否发生语义歧义,如果判断为真,则进入消歧义处理环节,转至步骤99,否则说明未发生歧义,转至步骤100;

步骤99对发生语义歧义的节点消歧义处理,依照基准策略删除引起歧义的有向边;

步骤100判断节点v的color属性是否为WHITE,如果是,则进入递归处理阶段,转至步骤101,否则转至步骤103;

步骤101为节点v递归处理做准备,设置v的前驱节点为u;

步骤102使节点v进入下一层递归遍历;

步骤103将u的color属性标记为BLACK,表示此节点已经完成遍历;

步骤104判断是否遍历完所有开始节点集中的节点,如果完成则转至步骤105,未完成转至步骤92;

步骤105为结束步骤。

在合并原策略与新策略的访问向量规则时,首先需要明确访问向量控制矩阵的概念,访问向量控制矩阵是由源类型对目标类型具有的访问权限构成的二维矩阵列表,每个表项对应一种规则类型,如果两个类型之间没有权限控制规则语句,则对应到矩阵中为未知区域。权限列表引入客体类Class,以此区分客体类型的种类,而且权限列表并非只包含一种权限。

所以,访问向量控制矩阵其实可以视为一个四维数据表结构,四个维度分别为:源类型、目标类型、客体类和权限列表。

图9显示了访问向量控制矩阵的结构图,规则类型仅显示了allow和neverallow,实际情况还包括auditallow和dontaudit与之并列。

访问向量的四种规则类型加上未知情形,共计五种类型,当发生规则冲突时,可以根据语义采取三种合并策略方案,分别为:宽容性策略(Tolerance Strategy)、严格性策略(Strict Strategy)与基准策略(Reference Strategy)。对于基准策略,则根据合并配置时的基准选择情况进行冲突解决,而宽容性策略和严格性策略的冲突解决方式,由下表给出:

综上所述,本发明实现了一种自动化处理语义冲突的SeLinux策略合并方法,自动处理策略模块之间定义重复、转移类规则语义歧义、访问向量规则冲突等问题。最终得到叠加了新的安全需求的一致可信的策略模块。

本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1