一种防火墙安全策略冲突检测方法*

2018-07-09 06:45余兴华罗淑丹
通信技术 2018年6期
关键词:安全策略子集防火墙

李 镭,余兴华,罗淑丹

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引 言

近年来,随着网络的发展和壮大,网络安全问题成为现代信息安全所要解决的主要问题[1]。针对不同的网络环境,防火墙策略的配置不仅越来越复杂,而且多域间各策略之间的冲突时有发生,严重影响安全策略的执行效率。因此,如何保证不同安全域之间的防火墙策略的一致性,以及同一安全域内安全策略的一致性,成为防火墙安全策略配置的关键[2]。针对当前大部分安全策略冲突检测与消解算法缺少灵活性、扩展性等缺点[3-4],本文首先定义了不同防火墙策略之间的关系和冲突类型,并在此基础上给出了基于策略的冲突分类描述,最后给出了防火墙冲突检测算法。

1 相关工作

近年来,国内外学者对策略冲突检测与消解作了大量研究:一是基于IETF策略核心信息模型的关于管理策略的冲突检测,主要代表为美国IBM公司研究员Dinesh Verma提出的多维空间思想和意大利都灵大学提出的代数方法;二是关于安全策略的冲突检测,主要有澳大利亚Queenland大学提出的基于逻辑描述语言的冲突检测方法[3]和英国Imperial College的Lupu等人在面向对象的策略表示语言ponder[5]和基于策略的分布系统管理框架的基础上提出的基于角色的访问控制方法等。

2 防火墙策略之间的关系

通过比较防火墙安全策略之间的关系,定义两个安全策略Rx和Ry之间的关系,如图1所示。

图1 安全策略间的关系

精确匹配:如果安全策略Rx中的所有策略项都与安全策略Ry中相应策略项的值相等,那么Rx和Ry精确匹配。

包含匹配:如果安全策略Rx和安全策略Ry不是完全匹配,且Rx的每个策略项的值都是Ry对应的策略项的值的子集或者相等,那么Rx和Ry是包含匹配。

完全无关:如果安全策略Rx中的所有策略项都与安全策略Ry中相应策略项的值不相等,也不存在子集或者超集的关系,那么Rx和Ry完全无关。

部分匹配:如果安全策略Rx至少有一个策略项的值与安全策略Ry中相应策略项的值相等,或者存在子集、超级关系,且至少有一个策略项的值与安全策略Ry中相应策略项的值不相等,也不存在子集、超级关系,那么Rx和Ry部分匹配。

关联关系:如果安全策略Rx存在一些策略项的值是安全策略Ry对应策略项的子集或相等,且Rx其他策略项的值是Ry对应策略项的值超集,那么Rx和Ry是关联的。

3 防火墙安全策略的表示

使用一棵树来表示安全策略集,这棵树叫做策略树。策略树能够形象表示安全策略,而且根据安全策略在树中的分布易发现安全策略之间的关系。策略树中的每个节点表示安全策略中的一个策略项,节点上的每个分支表示这个策略项的一个值,具有相同值的安全策略共享一个分支。策略树的一条路径就表示一条安全策略。

将安全策略集合中的安全策略顺序依次插入到树中,最终可构建安全策略树。插入一条安全策略时,分别比较安全策略的各个策略项。通过策略项值的关系,决定将安全策略插入已存在的分支还是创建新的分支。在一个特定的策略项时,如果一个分支的值完全匹配安全策略的策略项值,那么就将安全策略插入这个分支;否则,就要创建一个新的分支,分支的值为安全策略的策略项值,然后将安全策略插入新的分支。此外,为了保留安全策略之间的关系,如果安全策略的策略项值与分支的值存在子集或者超集关系,也需要将安全策略插入到这个分支中。

4 域内安全策略冲突分类及检测

通过比较同一安全域内安全策略的关系和安全策略的动作,定义安全策略间存在以下几种冲突。

覆盖冲突:安全策略Rx在安全策略Ry的后面,而Rx子集包含匹配Ry或Rx精确匹配Ry,且Rx的动作与Ry不同,那么就说Rx被Ry覆盖。覆盖冲突是一个严重错误,因为被覆盖的安全策略永远不起作用。

关联冲突:安全策略Rx和安全策略Ry是关联的,且动作不同,那么Rx和Ry存在关联冲突。关联冲突不是一个错误,但是需要提示管理员注意到安全策略之间的关联关系。

冗余冲突:安全策略Rx在安全策略Ry的后面,而Rx子集包含匹配Ry或Rx精确匹配Ry,且Rx的动作和Ry相同,那么Rx就是Ry的冗余。冗余的安全策略不会起到任何作用,但是冗余安全策略的存在,会降低策略匹配效率。因此,冗余冲突是一个严重的错误,管理员需要发现冗余的安全策略,并将其删除。

泛化冲突:安全策略Rx在安全策略Ry的后面,Rx超集包含匹配Ry,且Rx和Ry的动作不同,那么Rx就是Ry的泛化。泛化冲突不是一个错误,但是不能调换具有泛化冲突的安全策略,否则会改变其语义。因此,在插入一条安全策略时,有必要将泛化冲突提示管理员,然后让管理员确认。

不相关异常:如果一条安全策略的条件永远不会产生,则该安全策略具备不相关异常。

下面将说明如何进行策略间的冲突检测。检测安全策略之间存在冲突的基本思想在于,判断两条安全策略在策略树中的路径是否一致。如果新插入的安全策略的路径和先前插入的安全策略的路径一致,那么这两条安全策略很可能存在冲突。如果这两条安全策略的路径不一致,那么它们完全不相关,也不存在冲突。可使用状态图表示冲突检测的过程,如图2所示。

图2 域内策略冲突检测过程

开始时,假设两条安全策略没有任何关系。首先比较协议策略项,有4种结果,分别为相等、子集、超集和不相等.所以,从初始状态0分别进入状态1、2、3和10。其次,比较src策略项。src的比较同样有4种结果,分别为相等、子集、超集和不相等,状态进入4、5、6、7和10。再次,比较dst策略项,状态分别进入7、8、9和10。最后,比较动作策略项,状态进入终态10、11、12、13和14。

对于安全策略Rx和Ry,Rx在Ry的后面,和Ry之间的冲突类型主要基于以下的比较结果:

(1)如果Rx中的每个策略项都是Ry相应的Rx策略项的子集或者相等(状态8),当它们的动作相同时,Rx是Ry的冗余(状态12);当它们的动作不同时,Rx被Ry覆盖(状态11)。冗余的序列有0-1-4-8-12、0-1-5-8-12和0-2-5-8-12,覆盖的序列有0-1-4-8-11、0-1-5-8-11和0-2-5-8-11。

(2)如果Rx中的每个策略项都是Ry相应的策略项的超集或者相等(状态9),当它们的动作相同时,Ry是Rx的冗余(状态12);当它们的动作不同时,Rx是Ry的泛化(状态13)。冗余的序列有0-1-4-6-9-12、0-1-6-9-12和0-3-6-9-12。泛化的序列有0-1-4-6-9-13、0-l-6-9-13和0-3-6-9-13。

(3)如果Rx有些策略项是Ry对应的策略项的子集或者相等,而其他的策略项是Ry对应的策略项的超集(状态7),那么Rx和Ry存在关联(状态17)。这样的序列有0-1-5-7-14、0-1-6-7-14、0-2-5-7-14、0-2-6-7-14、0-3-6-7-14和0-3-7-14。

(4)如果Rx中的一些策略项与Ry中对应的策略项既不相等也不存在子集或者超集关系,那么Rx和Ry是不相关的(状态10)。这样的序列有0-10、0-1-10、0-2-10、0-3-10、0-1-4-10、0-l-5-10、0-l-6-10、0-2-5-10、0-2-7-10、0-3-6-10和0-3-7-10。

5 域间安全策略冲突分类及检测

如图3所示,假设数据从安全域Dx流向安全域Dy,在这两个安全域间,部署了多个访问控制类安全设备。沿着数据流向,称前面的安全设备为上游安全设备,后面的为下游安全设备,紧临安全域Dx的安全设备为最上游安全设备,紧临安全域Dy的安全设备为最下游安全设备。从图3可以看出,当数据从安全域Dx流向安全域Dy时,满足以下条件之一时,冲突就会发生:

(1)最下游安全设备允许了被任何上游安全设备阻止的数据;

(2)最上游安全设备允许了被任何下游安全设备阻止的数据;

(3)下游安全设备拒绝了已经被上游安全设备阻止的数据。

图3 安全设备隔开的安全域Dx和Dy

图3中,假设Ru为最上游安全设备Secx的策略,Rd为最下游安全设备Secy的策略,并且假设个安全设备内部已经不存在策略冲突和冗余。通过比较安全域间安全策略的关系以及安全策略的动作,我们定义安全策略间存在以下几种冲突:

覆盖冲突:如果上游安全设备阻止了下游安全设备允许的数据,则发生了覆盖冲突。如果满足以下条件之一,则称Ru被Rd覆盖:Rd精确匹配Ru,且Ru动作为阻止,Rd动作为允许;Ru包含匹配Rd,且Ru动作为阻止,Rd动作为允许;Rd包含匹配Ru,且Ru动作为阻止,Rd动作为允许;

假性冲突:如果上游安全设备允许了下游安全设备阻止的数据,则发生了假性冲突。如果满足以下条件之一,则称Ru间Rd存在假性冲突:Rd精确匹配Ru,且Ru动作为允许,Rd动作为阻止;Rd包含匹配Ru,且Ru动作为允许,Rd动作为阻止;Ru包含匹配Rd,且Ru动作为允许,Rd动作为阻止;

冗余冲突:如果下游安全设备阻止了被上游安全设备阻止的数据,则发生了冗余冲突。如果满足以下条件之一,则称Ru间Rd存在冗余冲突:Rd精确匹配Ru,且Ru动作为阻止,Rd动作为阻止;Ru包含匹配Rd,且Ru动作为阻止,Rd动作为阻止。

关联冲突:关联冲突往往由上游安全设备和下游安全设备的两条关联规则引起。如果满足以下条件之一,则称Ru间Rd存在关联冲突:Ru与Rd关联,且Ru动作为允许,Rd动作为阻止;Ru与Rd关联,且Ru动作为阻止,Rd动作为允许。

下面说明如何进行策略间的冲突检测。使用状态图来表示冲突检测的过程,如图4所示。

开始时,假设Ru和Rd安全策略没有任何关系。按照协议、策略源、策略目的的顺序依次比较Ru和Rd的各个策略项,经过上述比较,可以确定两条策略间的关系和存在的冲突类型。例如,如果Rd包含匹配Ru(状态10),且Rd的动作为允许,则Rd被Ru部分覆盖(状态11),或当Rd的动作为阻止时,Ru和R存在假性冲突(状态12)。

6 结 语

防火墙安全策略冲突检测,直接影响分布式网络的运行效率和安全管理效率。本文在研究防火墙安全策略之间关系和冲突类型的形式化定义基础上,提出了一种防火墙安全策略冲突检测的方法,能够较好地解决防火墙安全策略的冲突检测问题。后续的工作主要有两方面,一是冲突检测算法的进一步优化实现及性能提升,二是研究防火墙安全策略冲突的消除方法。

图4 域间策略冲突检测过程

[1] 王世伟.论信息安全、网络安全、网络空间安全[J].中国图书馆学报,2015(02):72-84.WANG Shi-wei.On Information Security,Network Security and Cyberspace Security[J].Journal of Library Science in China,2015(02):72-84.

[2] 李祥军,孟洛明,焦利.网管系统策略冲突解决的结果中存在的问题及检测与解决方法[J].计算机研究与发展,2006,43(07):1297-1303.LI Xiang-jun,MENG Luo-ming,JIAO Li.Problems in Results of Policy Conflict Resolutions and Detection and Resolution Methods in Network Management Systems[J].Journal of Computer Research and Developm ent,2006,43(07):1297-1303.

[3] Dunlop N,Indulska J,Raymond K A.Dynamic Conflict Detection for Large Evolving Enterprises[C].Proceedings of the Sixth International Conference on Enterprise Distributed Object Computing,2002.

[4] Dulay N,Lupu E,Sloman M,et al.A Policy Deployment Model for the Ponder Language[C].IEEE IFIP International Symposium on Integrated Network Management,2001.

[5] Damianou N,Dulay N,Lupu E C,et al.The Ponder Policy Specification Language[C].The Workshop on Policies for Distributed Systems and Networks,2001.

[6] Lupu E,Sloman M.Conflicts in Policy-based Distributed Systems Management[J].IEEE Transactions on Software Engineering-Special Issue on Inconsistency Management,1999,25(06):852-869.

猜你喜欢
安全策略子集防火墙
拓扑空间中紧致子集的性质研究
基于可视化的安全策略链编排框架
全民总动员,筑牢防火墙
基于飞行疲劳角度探究民航飞行员飞行安全策略
Carmichael猜想的一个标注
关于奇数阶二元子集的分离序列
构建防控金融风险“防火墙”
多媒体教学服务器限制访问的一种措施
浅析涉密信息系统安全策略
在舌尖上筑牢抵御“僵尸肉”的防火墙