防火墙规则间的冲突检测与消解技术的分析与探讨

时间:2022-10-07 03:25:08

防火墙规则间的冲突检测与消解技术的分析与探讨

摘要:该文对防火墙规则集中的可能存在的冲突进行了讨论,对不同类型的规则冲突作了分类定义,在此基础上编写设计了规则冲突检测算法程序;对防火墙规则间的泛化冲突,交互冲突的消解技术作了一定的分析讨论,并给出了具体解决方案。

关键词:防火墙;网络安全;规则;冲突检测;冲突消解

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)05-0913-04

Analysis and Discussion on the Conflict Detection and Resolution Technique of Firewall Rules

GONG Ding

Abstract: Discussed the conflict among the rules of firewall, made the definition of different types of conflict of rules,designed conflict detection algorithm of rules.Discussed resolution technique of generalization conflict, interactive conflict of rules ,and gived specific solutions.

Key words: firewall; network security;rule; conflict detection; conflict resolution

随着计算机网络技术的发展,数据信息安全日益引起人们的重视,防火墙是连接内外网络,保证数据信息安全的重要设备[1]。网管在对防火墙规则策略进行配置时,需要注意规则间的关系与顺序,以确保配置规则集安全语义的正确性[2]。随着局域网规模的扩大,防火墙配置规则也越来越多,增大了规则间冲突的可能性,网管对其规则集进行再编辑与管理的难度也随之增加[3]。检测防火墙规则集中存在的冲突及解决规则冲突问题成为当前研究的一个重要课题,该文对防火墙规则间冲突进行分析讨论,编写了冲突检测算法程序,并对冲突消解技术做了一定的探讨,在网络安全管理方面有着一定的应用与参考价值。

1 防火墙配置规则集的冲突检测

在对防火墙的规则集进行配置的过程中,随着规则数目的增加,会导致规则间出现冲突,这样会影响网络的安全语义[4]。该文首先分类定义了规则间可能存在的冲突类型,然后据此编写了冲突检测算法的相关程序,以及时发现规则集的冲突问题。

1.1规则冲突的类型判定

防火墙配置中有些配置规则间的冲突会导致严重的错误,这些规则必须作修改,排除错误;有些规则间的冲突不是严重的错误,只需警告引起注意就可以了[5],对防火墙规则间存在的冲突进行的归类定义如下所示:

定义1:若前面规则的各个域与这条规则相应的域都是包含关系,且这两条规则的动作域是不同的,那么就该规则被前条规则覆盖,配置规则之间发生了覆盖冲突。

规则间的覆盖冲突会导致一些规则起不到作用,影响防火墙策略的安全语义,这是比较严重的错误。这样可能会使防火墙对合法的网络数据包的进出执行不当的操作,如果发现规则间存在覆盖冲突,必须进行修正。

定义2:若前一条规则的部分域能够匹配后条规则相对应的域,后条配置规则的部分域也可以匹配前一条规则相对应的域,且这两条规则动作域的值不同,那么规则间发生了交互冲突。

交互冲突中也会存在一部分因为操作动作相反,使得该规则不能被执行的状况,可将这两条配置规则换下顺序,那么这些数据包又是被允许通过的,由此看出交互冲突存在部分配置规则安全语义的二义性,但由于出现错误的概率不多,该文将这种冲突的级别设为警告,以引起管理员的注意。

定义3:若前面规则的各个域与后条规则相应的域都是包含关系,并且规则的动作域的值相同,那么后条规则是冗余的,规则间发生了冗余冲突。

后条配置规则对防火墙系统并不产生作用,添加与删除该规则都不会对配置规则集的安全语义产生影响。但是系统中若这样的规则大量存在,会使得防火墙的过滤效率显著降低。因此管理员需及时地发现冗余规则,将这些错误从规则集中删除,以提高防火墙系统的性能。

定义4:若前一条规则可以匹配后一条规则的所有数据包,但后条规则不能匹配前一条所有的数据包,并且此两条规则的执行域的值不相同,该文将前一条配置规则称为后条配置规则的泛化,这两条规则间发生了泛化冲突。

规则间的泛化冲突并不能称作出错,但如果这种冲突规则次序改变,会引起影响网络策略的安全语义。因此当网管添加一条配置规则到防火墙系统中时,需要对是否会引起泛化冲突进行提示。

1.2 规则冲突检测的算法

检测防火墙规则间是否存在冲突的核心思想是判断两条规则在策略树中的路径是否一致[6]。若路径一致,那么这两条规则很可能存在冲突,否则它们是完全不相关的,不存在冲突。检测新插入的规则和之前插入的规则是否存在冲突,需要添加一些参数来跟踪状态的变化[7]。该文编写的防火墙规则间的冲突检测算法程序如图1所示。

Function DiscoverAbnormalRules (rule , field , node , abnormal_condition)

for each node in branch.rules_list do

if rule.field.value = branch.value then

valuefound = TRUE /*规则集中有规则域值相同*/

if abnormal_condition = NOABNORMAL then

DiscoverAbnormalRules (rule , field.next , branch.node , REDUNDANT)

else

discoverAbnormalRules (rule , field.next , branch.node , abnormal_condition)

end if

else if rule.field.value branch.value then

if abnormal_condition = GENERALIZATION then

discoverAbnormalRules (rule , field.next , branch.node,CORRELATION)

else if abnormal_stat = REDUNDANT then

DiscoverAbnormalRules (rule,field.next,branch.node,SHADOW)

End if

Else if rule.field.value branch.value then

If abnormal_condition = SHADOW then

Abnormal_condition = CORRELATION

DiscoverAbnormalRules ( rule , field.next , branch.node , CORRELATION )

Else if abnormal_condition = REDUNDANT then

Abnormal_condition = GENERALIZATION

DiscoverAbnormalRules ( rule,field.next,braneh.node,GENERALIZATION)

End if

else

DiscoverAbnormalRules (rule , field.next , branch.node,DISJOINT)

End if

End for

If field = ACTION then /*规则域值等于动作域时结束递归调用*/

New_branch = newBranch ( rule , rule.field , rule.field.value )

for each node in branch.rules_list do

If rule.field.value = branch.value then

branch.rules_list.add(new_branch)

end if

end for

call Decide Abnormal( rule, field , node , abnormal_condition)

end if

end Function

图1 算法1.1 规则冲突检测算法

本文对规则冲突检测算法的解释如下:在设计的规则冲突检测函数中,依次比较新规则中的各个域值顺次与已有的策略树的各分支域值,递归调用该函数,遍历该规则策略树的所有分支,若程序执行到该规则的动作域时,那么就调用冲突判定函数来以判定此规则与现有规则是否存在冲突及冲突的类型。

1.3实验结果及分析

在原始的规则集中存在着各种冲突关系,经控制台的冲突检测模块对其进行检测发现,规则间的冲突关系如图2所示。

图2 冲突检测结果

可根据规则冲突检测结果对防火墙的规则集进行编辑处理,以保证防火墙安全语义的正确性,方便网络管理员对防火墙的管理。

2 对防火墙冲突消解技术的讨论

在对防火墙的实际管理与应用中,其规则间是存在各种类型的关系的,在对配置规则进行优化排序时,很有可能会影响规则集的语义的正确性,因此需要尽可能消除规则间的相互影响[8]。根据前面的讨论,规则间主要有四种冲突,其中的冗余冲突与覆盖冲突对配置规则的安全语义有严重的影响,管理规则集时需对该类冲突的规则作删除处理;而泛化冲突与交互冲突不是严重的错误,但使得规则间存在了一定的联系,这样在修改规则集时,需要使得这些规则的顺序相对不变。该文对规则间的交互冲突和泛化冲突的消除化解方法做了一定的探讨如下:

2.1关于消解规则间泛化冲突的分析讨论

本文先举一个防火墙配置规则集中发生泛化冲突的较简单的实例,例如防火墙规则集中的两个规则(规则1,规则2)各域的值如表1所示:

表1 泛化冲突的防火墙规则集1

[order\&protocol\&src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d1,d2\&dd1\&DROP\&2\&P1\&s1,s2,s3\&sp1\&d1,d2\&dd1\&ACCEPT\&]

这两条发生泛化冲突的规则,可以通过对规则2的重写,使得规则2的源IP域与规则1相应域无关,重写表2所示:

表2 预处理后的防火墙规则集1

[order\&protocol\&Src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d1,d2\&dd1\&DROP\&2\&P1\&s1,s2\&sp1\&d1,d2\&dd1\&ACCEPT\&3\&P1\&s3\&sp1\&d1,d2\&dd1\&ACCEPT\&]

规则1与规则2五元组相同做消除处理以解决泛化冲突,最终结果表3所示:

表3 消除处理后的防火墙规则集1

[Order\&protocol\&src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d1,d2\&dd1\&DROP\&2\&P1\&s3\&sp1\&d1,d2\&dd1\&ACCEPT\&]

这种方法将两个规则的源IP域的集合作减法,以消除对应域间的包含关系,从而消解规则间的泛化冲突。下边的表4是一个较复杂的例子:

表4 泛化冲突的防火墙规则集2

[order\&protocol\&src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d1,d2\&dd1\&DROP\&2\&P1\&s1,s2,s3\&sp1\&d1,d2,d3\&dd1\&ACCEPT\&]

该例中规则2的源IP域和目的IP域分别是规则1相应域的超集。将源IP和目的IP域各分为子集与非子集两个部分进行处理以消除泛化冲突,重写如表5所示:

表5 消除处理的防火墙规则集2

[order\&protocol\&src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d1,d2\&dd1\&DROP\&2\&P1\&s1,s2\&sp1\&d3\&dd1\&ACCEPT\&3\&P1\&s3\&sp1\&d1,d2\&dd1\&ACCEPT\&4\&P1\&s3\&sp1\&d3\&dd1\&ACCEPT\&]

产生泛化冲突的原因是相应域之间有包含关系,所以消除泛化冲突的主要方法是对这两个规则相应域的集合作分解,以消除域间的包含关系。上述的方法,可以对规则间泛化冲突进行消解,但这样也可会导致规则集空间长度的增加,从而降低了规则匹配效率,当发生这种冲突时,需要提示管理员根据具体情况作出合理的选择。

2.2关于消解规则间交互冲突的分析讨论

规则间产生泛化冲突的条件是两个规则的一些对应域间有交集的关系,如表6所示:

表6 交互冲突的防火墙规则集3

[order\&protocol\&src_ip\&src_port\&Dst_ip\&dst_port\&action\&1\&P1\&s1,s2,s3\&sp1\&d3\&dd1\&ACCEPT\&2\&P1\&s3\&sp1\&d1,d2,d3\&dd1\&DROP\&]

此两条规则间存在交集,且地址为s3的源地址,地址为d3的目标地址在第一条规则中是允许通过,而第二条规则是禁止的,若规则顺序改变将影响策略语义。现将这两个规则相应域进行再划分,重写表7所示:

表7 预处理的防火墙规则集3

[order\&protocol\&src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d3\&dd1\&ACCEPT\&2\&P1\&s3\&sp1\&d3\&dd1\&ACCEPT\&3\&P1\&s3\&sp1\&d1,d2\&dd1\&DROP\&4\&P1\&s3\&sp1\&d3\&dd1\&DROP\&]

从表7可以看出,规则2可覆盖规则4;为了消解规则间的冲突,使得规则间的顺序对策略语义不造成影响,对规则4作删除处理,最终结果如表8所示:

表8 消除处理后防火墙规则集3

[order\&protocol\&src_ip\&src_port\&dst_ip\&dst_port\&action\&1\&P1\&s1,s2\&sp1\&d3\&dd1\&ACCEPT\&2\&P1\&s3\&sp1\&d3\&dd1\&ACCEPT\&3\&P1\&s3\&sp1\&d1,d2\&dd1\&DROP\&]

消除交互冲突可能会增加防火墙规则数,影响规则匹配效率,但若能够解除规则之间的冲突,那么规则的相对次序改变就不会影响安全语义,为更好地优化防火墙策略做必要的准备。

3 小结

本文分析研究了防火墙配置规则间可能存在的冲突,并归类定义了各种不同的冲突类型,编写了防火墙的冲突检测程序,并用实验验证了算法的有效性;为了维持防火墙规则集语义的正确性,该文还对防火墙规则间交互冲突,泛化冲突的消解技术进行了实例讨论,为设计编写智能消解规则间冲突的算法程序作了一定的准备。

参考文献:

[1] D.Wang, R.Hao, D.Lee. Fault detection in rule-based software systems[J].Information and Software Technology, 2010, 45(12): 865-871. (下转第931页)

(上接第916页)

[2] 李鑫,季振洲,刘韦辰,等.防火墙过滤规则集冲突检测算法[J].北京邮电大学学报, 2011,29(4): 90-93.

[3] L.Lu, R.Safavi-Naini, J.Horton, W.Susilo. Comparing and debugging firewall rule tables[J]. IET Information Security, vol1, no4, 2009: 145-146.

[4] Myung Kun, Yoon Shigang, Chen Zhan Zhang. Reducing the Size of Rule Set in a Firewall[C]. IEEE International Conference on Communications, 2012: 1274-1279.

[5] D.Wang, R.Hao, D.Lee. Fault detection in rule-based software systems[J].Information and Software Technology, 2012, 45(12): 865-871.

[6] 王卫平,陈文惠,朱卫未,等. 防火墙规则配置错误快速检测算法[J].计算机工程, 2010,33(11): 132-134.

[7] 庄冠夏.防火墙规则冲突检测和次序优化的研究与实现[D].上海: 华东师范大学,2011.

[8] 刘更楼,丁常福,姜建国. 基于状态检测的防火墙系统研究[J]. 航空计算技术, 2009,34(1): 122-125.

上一篇:基于云的数据库的研究 下一篇:利用ScienceWord 6.0 巧制试卷