跨域协作防火墙中的分段冗余检测方法

文档序号:7801436阅读:436来源:国知局
跨域协作防火墙中的分段冗余检测方法
【专利摘要】本发明公开了一种应用于跨域协作防火墙中的分段冗余检测方法,跨域协作防火墙包括部署在不同的网络管理域Net1和Net2中相互协作执行安全策略的两个防火墙FW1和FW2,其中通信流量从FW1到FW2。对于FW2中的某条规则r,如果所有的数据包与FW2中的规则r匹配,但不与r之前的任一条规则匹配,且这些数据包被FW1丢弃,r相对于FW1而言是防火墙间的冗余规则。本发明所述的冗余检测方法,基于现有的跨域协作防火墙冗余检测方案,在隐私保护的前提下,对防火墙规则集发生更新时的处理过程做出改进,大大提高了冗余检测的效率,节约了冗余分析时两个网络管理域之间数据传输的通信成本。
【专利说明】跨域协作防火墙中的分段冗余检测方法
(—)【技术领域】
[0001]本发明涉及计算机网络安全领域,具体为一种跨域协作防火墙中的分段冗余检测方法。
(二)【背景技术】
[0002]防火墙作为网络安全的一种关键技术,被广泛的应用于互联网中。在防火墙策略中,防火墙规则的数量直接影响着防火墙的吞吐量,随着防火墙规则数量的增加,其吞吐量会显著降低。然而,在实际的防火墙中,防火墙规则的数目通常是成百上千条的,且随着互联网服务的爆炸式增长,防火墙策略的规模也在迅速增长。因此,为提高防火墙策略的执行速度、提升网络性能,需要通过冗余检测等技术对防火墙策略进行优化。
[0003]随着虚拟专用网络(Virtual Private Network,简称VPN)的广泛部署,出现了不同管理域间的协作防火墙技术,对防火墙策略的优化带来了如下挑战:
[0004]首先,跨域协作防火墙(Cross-DomainCooperative Firewall,简称CDCF)是指两个部署在不同管理域下的防火墙相互协作执行安全策略。防火墙间的冗余规则定义如下:给定两个相邻的防火墙FW1和FW2,它们分别属于不同的管理域Net1和Net2,其中通信流量从FW1到FW2,对于FW2中的某条规则r,如果所有的数据包与FW2中的规则r匹配,但不与r之前的任一条规则匹配,且这些数据包被FW1丢弃,r相对于FW1而言是防火墙间的冗余规贝U。显然只有在两个防火墙互相知道对方的规则的情况下,才能去除它们之间的冗余。但是防火墙策略中往往包含机密信息,甚至是潜在的安全漏洞,这些都可能被攻击者利用,所以CDCF策略优化的前提是做好隐私保护,其优化过程必须是在不公布任何一方的防火墙策略的情况下,对两个防火墙进行计算与比较,最终识别出防火墙间的冗余规则。
[0005]其次,防火墙的规则集可能会因为网络安全管理员的需求而频繁更新,比如添加、删除或改变某些规则,若规则集发生更新,则需要重新检测防火墙间冗余。防火墙如同网络中的路由器,也是不能停机的,所以所有更新都是实时更新,更新后的冗余检测操作也是实时进行的,并且要尽快完成,以便将更新的安全策略应用其中。
[0006]因此,针对CDCF,我们既要从隐私保护的角度考虑其策略优化的问题,也要考虑策略优化方案能否满足CDCF的实时更新需求。
[0007]2011年有学者首次提出“基于隐私保护的⑶CF冗余检测方案”(为便于描述,后文将该方案简称为CDPP),该方案可以在隐私保护的前提下,完整的检测出协作网络中两个相邻的防火墙间的冗余策略。但运行一次该方案的计算成本和通信成本都比较大,而且如果防火墙频繁更新,多次运行该方案会带来显著的计算成本及通信成本。所以,此方案对于频繁更新的防火墙可能不适用。
[0008]目前CDCF技术是比较新的技术,对于这类防火墙的策略优化除上述方案外少见报道。本发明主要针对上述方案不适用于频繁更新的⑶CF的问题,来改进⑶PP,并在其基础上提出一种高效的分段冗余检测方法(Sectioned Process for Redundancy Removal,简称SPRR),基于分段处理的思想来检测CDCF中的防火墙间冗余规则。(三)
【发明内容】

[0009]本发明要解决的问题是,针对现有的协作防火墙间冗余检测方案计算成本和通信成本过高,不适用于频繁更新的⑶CF的问题,提出SPRR——一种高效的⑶CF分段去冗余方法。我们知道,在一个访问控制列表(access control list,简称ACL)中,一个防火墙策略通常指定为一个规则序列,其中的每一条规则包含五个字段(即,源IP,目的IP,源端口,目的端口,协议)和一条决策(即,接受和丢弃)。一般情况下,在一个ACL中,对于某一个指定字段而言,某些规则在该字段的取值的交集不是空集,我们称这些规则为关联规则。本发明考虑ACL中的第一个字段(即源IP)为指定字段,提出了一种“关联规则查找算法”来识别这些关联规则。本发明的基本思想是:在ACL更新后,根据关联规则查找算法检测出与更新规则相关的所有的关联规则;基于分段处理的思想,只针对这些关联规则执行基于隐私保护的防火墙间冗 余检测方案,通过缩减冗余检测过程中需处理的数据规模,来达到降低冗余检测的处理时间、比较时间与通信成本的目的。
[0010]本发明的主要解决方案具体包括如下五个步骤。
[0011]步骤1:对于不同的管理域NetjP Net2中的防火墙FWjP FW2,若FWjP FW2在构成CDCF后,从未进行过防火墙间的冗余检测,则执行首次防火墙间的冗余检测方案,分别进行步骤2和步骤3 ;若Fff1和FW2在构成CDCF后,已完成首次防火墙间的冗余检测,则分析FWi和FW2的更新情况,并将其划分为以下三类更新场景:【场景UFW1更新,FW2保持不变;【场景2】FW2更新,FW1保持不变;【场景3】FWi和FW2同时更新。对于【场景1】,进行步骤2 ;对于【场景2】,进行步骤3 ;对于【场景3】,则将FW1和FW2视为两个新的防火墙,按照首次防火墙间的冗余检测方案,分别进行步骤2和步骤3。
[0012]步骤2:本步骤的目的是转化FW1, Fff1的转化过程包含以下9个子步骤:
[0013](I)运行“关联规则查找算法”,查找FW1中与更新规则相关联的规则子集Sp注意,对于首次防火墙间的冗余检测,其S1为FW1的整个规则集。
[0014](2)根据 S1 构造防火墙决策图子图(subgraph of firewall decisiondiagram,简称SFDD),并通过合并同构子图来进一步简化SFDD的规模。对于首次防火墙间的冗余检测,此时需记录SFDD的第一个节点F1所有的输出边界上边界值的
并集: U.c£fn)/(e);对于更新场景下的【场景!】,此时需记录SFDD的第一个节
点F1所有的输出边界的边界值漏D: Uee£(n)/(e),并将其与FW1: Uecli"'/(e)中未更新的范围子集做并集运算,求出新的节点F1所有的输出边界上边界值的并集FW::Ve£E(Vi)l(e)B
[0015]注意,防火墙决策图(firewall decision diagram,简称FDD)是一个非循环的有向图,用于分析防火墙FW在字段F1, K, Fd上的一系列规则<r1,L, rn>,FDD包含以下5个属性:
a)恰好存在一个没有输入边界的节点,记为根节点,没有输出边界的节点记为终端节点;
b)每个节点V都有一个标签,记为F(V),如果V是一个非终端节点,那么F (V) e (F1, L, FdI,如果V是一个终端节点,则F (V)代表一条决策;c)节点u指向节点的V的每条边e,是一个非空整数区间,记为I (e),I (e)是u的域D (F (u))的子集,即I (e) C: D(F(u)) , D (F (u))是一个预定义的非负整数区间;d)节点V的所有输出边界的集合,记为E(v),满足两个条件:①一致性:对于E(V)中任意两条不同的边e和e',有/(e)M/(V) = 0,②完整性:
Uec/.:(r)/(e)cD(F(w));e)从一个根节点到一个终端节点的定向路径称为一条决策路
径,FDD中的每条路径对应一条非重叠规则。SFDD是本发明基于FDD提出的一种用来描述防火墙关联规则的非循环的有向图,SFDD与FDD的区别仅仅在于SFDD描述是ACL中的关联规则,而FDD描述的是ACL中的所有规则。
[0016](S)Net1从SFDD中抽取所有的非重叠丢弃规则。
[0017](4) Net1将抽取到的每条非重叠丢弃规则中每一个字段Fk的取值范围[a',b']转化为一个等价的最小前缀集,用T([a',b'])表示。例如,T([5,15])={0101,011*,I***}。
[0018](5)Net1计算所有非重叠丢弃规则中得到的最小前缀集的并集。注意,在计算结果中不重复列写相同的前缀。
[0019](6)Net1数值化每个前缀并用K1加密,然后将K1加密后的前缀发送给Net2。此处采用的数值化方法是,给定w位的前缀I^b2LbdL*,我们首先在bk后插入位元I。位元I代表1^b2Lbk和*L*之间的分隔符。然后我们用O替换每一个*。例如11**被转化为11100。如果前缀不包含*的,我们在最后的位置放置I。例如1000被转化为10001。
[0020](7) Net2用K2进一步加密这些前缀然后将K^K2双重加密后的前缀发送回Net^
[0021](8)因为Net1知道前缀与非重叠规则中字段的对应关系,所以Net1根据这些双重加密前缀重建非重叠规则。
[0022](9) Net1给每一条重建的非重叠规则分配一个独一无二的随机索引,该索引将被用于后期的冗余检测过程。
[0023]Fff1转化完成后,Net1从FW1获得一系列“双重加密非重叠规则”,用(F1 e T1) Λ L Λ (Fd e Td) — discard表示双重加密规则,其中Fi (I ^ i ^ d)表示字段,Ti表示一组双重加密数值。然后,进行步骤4。
[0024]步骤3:本步骤的目的是转化FW2, Fff2的转化过程包含以下7个子步骤:
[0025](I)对于更新场景下 的【场景2】,此时需根据上一次防火墙间的冗余检测的结果,记录更新后的规则集中上一次被判定为冗余的那些规则的序列号,用Urm表示,其中rm(l ^ m ^ η)且FW2:〈r” L, rn>。注意,对于首次防火墙间的冗余检测,贝U跳过此环节,直接进入FW2R化过程中的第(2)步。
[0026](2)运行“关联规则查找算法”,查找FW2中与更新规则相关联的规则子集S2。注意,对于首次防火墙间的冗余检测,其S2为FW2的整个规则集。
[0027](3)根据S2构造全匹配的防火墙决策图子图(all-match subgraph of firewalldecision diagram,简称all-match SFDD)。对于首次防火墙间的冗余检测,此时需记录
all-match SFDD的第一个节点F1所有的输出边界上边界值的并集FW2: Ue6£{n)/(e);
对于更新场景下的【场景2】,此时需记录all-match SFDD的第一个节点F1所有的输出边界的边界值(e)*并将其与Fff2:Uec/r()u/(e)中未更新的范围
子集做并集运算,求出新的节点F1所有的输出边界上边界值的并集i7,/: UecE(Vi)I (e),
注意,all-match SFDD与SFDD的区别在于其终端节点。在一个SFDD中,每一个终端节点用一条决策标注,而在一个all-match SFDD中,每个终端节点用一系列非空的规则序列号标注,对于规则η),我们称i是&的序列号。标注在某个终端节点上的一系列的规则序列号包含了与这条决策路径重叠的所有规则的序列号(该决策路径指以此终端节点结束的路径)。
[0028](4)Net2从all-match SFDD中抽取所有的非重叠规则,并将每一条非重叠规则中每一个字段Fk的取值范围[a,b]用前缀族格式F(a)和F(b)表示。
[0029](5)他丨2计算每一个字段Fk下在所有非重叠规则中得到的前缀族的并集。注意,在计算结果中不重复列写相同的前缀族。然后,将这些前缀族用多个前缀表示,表示方法是:用k表示a的二进制位长,则前缀族F(a)由k+Ι个前缀组成,将a中的最后i_l位用*替换可获得第 i个前缀。例如:10的二进制表示为1010,于是我们有F(IO)={1010,101*,10**,1***,****}。
[0030](6) Net2数值化每个前缀并用K2加密,然后将K2加密后的前缀发送给Net2。注意,此处采用的数值化方法参照步骤3。
[0031 ] (7) Net1用K1进一步加密这些前缀。
[0032]Fff2转化完成后,Net1从FW2获得d组双重加密数值。用T山T d表示FW2中的d组双重加密数值集。然后,进行步骤4。
[0033]步骤4:覆盖冗余检测。对于FW1的每一个字段Fi (I≤i≤d)以及FW2的双重加密数值集Ti中的每一个数值a,Net1检测是否存在一条双重加密规则(F1 e T1) Λ L Λ (Fd e Td) — discard满足a e Ti0如果规则满足条件,那么Net1将a和规则索引i关联起来。由于可能存在多个满足该条件的规则,最终Net1可能将a和一个规则索引集关联起来。如果条件不满足,Net1则将a与空集关联。最终,Net1用与T1LTd中的每个数值相对应的规则索引集替换这些数值,并将其发送到Net2。Net2根据其接收结果,找出与每一个前缀族重叠的规则索引。对于从FW2的all-match SFDD中抽取的某条非重叠规则nr,如果它所有的前缀族都与FW1的SFDD中抽取的同一条丢失规则nW重叠,则nr被nr'覆盖,那么nr是冗余的。接下来,进入步骤5。
[0034]步骤5:鉴于前面的步骤,Net2可识别出FW2中冗余的非重叠规则。那么,接下来Net2需要识别出哪些原始规则是防火墙间的冗余规则。因为FW2的all-match SFDD中的每条路径都对应一条非重叠规则,我们称那些和冗余的非重叠规则对应的路径为冗余路径,剩下的路径称为有效路径。我们根据以下定义来识别防火墙间冗余规则:给定无防火墙内部冗余的防火墙FW2Kr1, L, rn>和它的all-match SFDD,当且仅当满足以下两个条件时,FW2中的规则&相对于FW1来说是防火墙间的冗余规则:(I)存在一条冗余路径,其终端节点包含序列号i ; (2)不存在终端节点包含i为最小元素的有效路径。至此,Net2可以识别出FW2中相对于FW1的防火墙间冗余规则集R_。请注意,对于更新场景下的【场景2】,此时还需要利用此时得到的Rmw、步骤3中得到的Urm以及S2,使用“比较与合并冗余规则算法”,得到最终的完整的FW2中相对于FW1的防火墙间冗余规则集。[0035]步骤2和步骤3中的“关联规则查找算法”详细过程如下:
[0036]获得更新规则r的第一个字段域的值,记为UR(该值是一个数值区间),遍历步骤
2或步骤3记录的/7K:或/5W2: Uecffh/00所有值(每个值也是区间数
值),将其中与UR相交的值提取出来组成一个临时集合St ;遍历防火墙FW1或FW2原始规则集,将每条规则的第一个字段域的值提取出来,记为OR⑴(其中i表示规则序列号),如果临时集合St中的任一个值与OR (i)相交,把第i号规则加入集合S ;原始规则集遍历完成之后,最后得到的集合S就包含所有要查找的关联规则。
[0037]步骤5中的比较与合并冗余规则算法详细过程如下:
[0038]遍历步骤3中获取的Urm,如果Urm中某条规则r也在步骤3求得的关联规则集S2中,则从Urm中剔除规则r ;遍历完成之后,将剔除了部分规则的U' rm与步骤5得到的新的冗余规则集Rnrat做并集运算,最后得到的集合即为最终所求的更新后的完整的冗余规则集。
[0039]本发明提供的分段去冗余方法,能够快速响应CDCF的各类更新情况,并且在隐私保护的前提下高效的识别并去除防火墙间的冗余规则。
(四)【专利附图】

【附图说明】
[0040]图1为本发明所述的跨域协作防火墙的系统模型
[0041]图2为实例中防火墙FW1和FW2的规则示意图
[0042]图3为首次防火墙间冗余检测时FW1的转化过程
[0043]图4为首次防火墙间冗余检测时FW2的转化过程
[0044]图5为首次防火墙间冗余检测时all-match SFDD的有效路径与冗余路径
[0045]图6为实例中防火墙FW1的规则更新示意图
[0046]图7为实例中防火墙FW1更新、FW2保持不变时,Fff1的转化过程
[0047]图8为实例中防火墙FW2的规则更新示意图
[0048]图9为实例中防火墙FW2更新、FW1保持不变时,Fff2的转化过程
[0049]图10为实例中防火墙FW2更新、FW1保持不变时,FW2的all-match SFDD的有效路径与冗余路径
[0050]图11为实例中防火墙FW1更新,Fff2不变的场景下,⑶PP方案和SPRR方案在加密时间上的统计图
[0051]图12为实例中防火墙FW1更新,Fff2不变的场景下,⑶PP方案和SPRR方案在冗余检测比较时间上的统计图
[0052]图13为实例中防火墙FW2更新,Fff1不变的场景下,⑶PP方案和SPRR方案在加密时间上的统计图
[0053]图14为实例中防火墙FW2更新,Fff1不变的场景下,⑶PP方案和SPRR方案在冗余检测比较时间上的统计图
[0054]图15为实例中防火墙FW1更新,Fff2不变的场景下,⑶PP方案和SPRR方案在通信成本上的统计图
[0055]图16为实例中防火墙FW2更新,Fff1不变的场景下,⑶PP方案和SPRR方案在通信成本上的统计图[0056]图17为⑶CF中防火墙FW1和FW2可能发生的5种更新情况
[0057]图18为⑶PP方案和SPRR方案做对比实验时所用的防火墙规则集配置情况表
[0058]图19为⑶PP方案和SPRR方案做对比实验时,在不同更新场景下计算出的冗余比
(五)具体实施方案
[0059]考虑两个不同域中的防火墙系统模型一防火墙I和防火墙2,它们分别属于两个不同的管理域Net1和Net2,数据流量从防火墙I流向防火墙2,如图1所示。用FW1表示防火墙1,称为入口防火墙策略;用FW2表示防火墙2,称为出口防火墙策略。对于FW2中的某规则r,如果所有的数据包与FW2中的规则r匹配,但不与r之前的任一条规则匹配,且这些数据包被FW1丢弃,则可以去掉规则r,因为符合规则r的数据包永远都不会到达FW2,那么,规则r即为FW2相对于FW1的防火墙间冗余规则。显然,图1中,在FW2内所有匹配r2和:T3的数据包Cr1即rulel),被FW1内的r2'丢弃。因此FW2中的r2和r3,相对于FW1中的r2'来说,属于防火墙间冗余。
[0060]接下来,本发明通过一个实例来说明SPRR的具体实施过程。为了便于展示,我们在实例中仅用两个字段和一条决策来描述防火墙中的规则。如图2所示,FW1作为入口防火墙,属于Net1网络管理域;FW2作为出口防火墙,属于Net2网络管理域。首先,我们对其进行首次防火墙间的冗余检测。
[0061]首次防火墙间冗余检测的具体实施过程如下:
[0062]步骤1:转化 FW115
[0063](I)运行“关联规则查找算法”,对于首次防火墙间的冗余检测,其输出S1为 FW1 的整个规则集,如图 3 (a)所示,S1 = Ir1 ' , r2 ; , r3 ;,r4 ' , r5 ; }。(2)根据S1构造SFDD,记录SFDD的第一个节点F1所有的输出边界上边界值的并集
FW1: Utxiw/ (e) = {[0,3]?[4,7]48'15]},并通过合并同构子图来进一步简化SFDD的
规模,如图3(b)所示。^Net1WSFDD中抽取所有的非重叠丢弃规则,如图3(c)所示。(4)Net1将抽取到的每条非重叠丢弃规则中每一个字段Fk的取值范围[a' ,h']转化为一个等价的最小前缀集,如图3(d)所示。(5)Netd+算所有非重叠丢弃规则中得到的最小前缀集的并集,如图3(e)所示。(G)Net1数值化每个前缀并用K1加密,然后将加密后的前缀发送给Net2,如图3(f)所示。(70的2用K2进一步加密这些前缀然后将结果发送回Net1,如图3(g)所示。(8) Net1根据双重加密前缀重建非重叠规则,并给每一条重建的非重叠规则分配一个独一无二的随机索引13、27、17和45,如图3(h)所示。
[0064]步骤2:转化FW2。
[0065](I)运行“关联规则查找算法”,对于首次防火墙间的冗余检测,其输出S2为FW2的整个规则集,如图4 (a)所示,S2 = Ir1, r2, r3, r4}。(2)根据S2构造all-matchSFDD,记录all-match SFDD的第一个节点F1所有的输出边界上边界值的并集
FW,=如图 4(b)所示。(3)Net2 从 all-match SFDD中抽取所有的非重叠规则,并将每一条非重叠规则中每一个字段Fk的取值范围[a, b]用前缀族格式F(a)和F(b)表示,如图4(c)所示。(4)Net2计算每一个字段Fk下在所有非重叠规则中得到的前缀族的并集,如图4(d)所示。(5)Net2数值化每个前缀并用K2加密,然后将K2加密后的前缀发送给Net2,如图4(e)所示。(6)Net1用K1进一步加密这些前缀,如图4(f)所示。
[0066] 步骤3:覆盖冗余检测。Net1将“双重加密非重叠规则”的每一个字段Fi (i = 1,2)下的双重加密数值与FW2的双重加密数值集Ti中的每一个双重加密数值a进行比较,使得T1, T2中的每个数值与双重加密非重叠规则的索引或者空集对应,然后Net1将此结果发送至Net2, Net2根据其接收结果,找出与每一个前缀族重叠的规则索引。在本实例中,Net2最终可以检测出从all-match SFDD中抽取的非重叠规则中nr2, nr4和nr6是冗余的。
[0067]步骤4:根据步骤3的检测结果,因为nr2,nr4和nr6是冗余的非重叠规则,所以在all-match SFDD中第2、4和6条路径是冗余路径,剩下的第1、3、5条路径是有效路径。如图5所示,冗余路径2的终端节点包含规则序列号1、2和4 ;冗余路径4的终端节点包含规则序列号2和4 ;冗余路径6的终端节点包含规则序列号4 ;因为有效路径1、3、5的终端节点中也包含规则序列号4,但不包含规则序列号I和2,所以FW2中相对于FW1的防火墙间冗余规则集为Rmw = Ir1, r2}。
[0068]至此,SPRR完成了首次防火墙间的冗余检测。
[0069]下面,我们分析⑶CF的更新情况。如图17所示,⑶CF中FW1和FW2可能发生以下5种情况的更新:1.Fff2中某些规则的决策发生了改变;2.Fff1中某些规则的决策由丢弃改为了接受;3.Fff1中某些规则的决策由接受改为了丢弃;4.Fff1中添加或删除某些规则;5.Fff2中添加或删除的某些规则。对于已完成首次防火墙间冗余检测的CDCF,我们将上述的5种更新情况划分为3类更新场景:【场景I】FW1更新,Fff2保持不变;【场景2】FW2更新,Fff1保持不变;【场景3 JFW1和FW2同时更新。
[0070]接下来,我们分别分析这3类更新场景下SPRR的具体实施过程。
[0071]【场景UFW1更新,Fff2保持不变。
[0072]基于图17中FWdPFW2可能发生的5种更新情况,在该场景下,可能发生的更新是:a)仅发生情况2中的更新;b)仅发生情况3中的更新;c)仅发生情况4中的更新;d)发生了情况2、情况3或情况4中任意两种情况的更新;e)同时发生情况2、情况3和情况4中的更新。
[0073]下面,基于首次防火墙间冗余检测时FW1和FW2的实例,对FW1中的规则作出如图6所示的更新(改变原规则&'和r2'的决策,在原规则r/和iV之间添加一条新规则,即r5',),然后执行防火墙间的冗余检测。
[0074]SPRR在【场景I】下的具体实施过程如下:
[0075]步骤1:转化FW1。【场景I】下FW1的转化过程如图7所示。
[0076](I)因为在防火墙此次更新前的上一次去冗余过程中记录的
FW1: Uee£(n丨/ (e) = {[0,3],[4,7],[8,15]},而FW1更新后,其更新规则的第一个字段F1
落在FW1的范围子集{[0,3],[8,15]}上,所以运行“关联规则查找算法”
可得到FW1中与更新规则相关联的规则子集S1= Ir/ ' ,T2' ' ,T5' ',r6''丨,如图7 (a)所示。(2)根据S1构造SFDD (注意SFDD的F1限定于范围子集{[O, 3], [8,15]}),并通过合并同构子图来进一步简化SFDD的规模,记录SFDD的第一个节点F1所有的输出边界的边
界值汾7DD=[8,11],[12,15]},并将其与 /W1: Ut,c咖/(e)
中未更新的范围子集{[4,7]}做并集运算,求出新的节点F1所有的输出边界上边界值的并
集 fW: =Ui,却0/(e) = {[0,3],[4,7],[8,11],[12,15]卜如图 7(b)所示。(S)Net1^
SFDD中抽取所有的非重叠丢弃规则,如图7(c)所示。(4)Net1将抽取到的每条非重叠丢弃规则中每一个字段Fk的取值范围[a',b']转化为一个等价的最小前缀集,如图7(d)所示。^Net1计算所有非重叠丢弃规则中得到的最小前缀集的并集,如图7(e)所示。(B)Net1数值化每个前缀并用K1加密,然后将1加密后的前缀发送给Net2,如图7(f)所示。(7)Net2用K2进一步加密这些前缀然后将结果发送回Net1,如图7(g)所示。(S)Net1根据双重加密前缀重建非重叠规则,并给每一条重建的非重叠规则分配一个独一无二的随机索引12、19和21,如图7(h)所示。
[0077]步骤2:覆盖冗余检测。【场景I】下覆盖冗余检测的过程与“首次防火墙间冗余检测的具体实施过程的步骤3”类似,将步骤I中得到的“双重加密非重叠规则”的每一个字段FiQ = I, 2)下的双重加密数值与更新前的上一次去冗余过程中记录的“FW2的双重加密数值集Ti中的每一个双重加密数值a”进行比对处理。在本实例中,Net2在FW2的非重叠规则中没有检测出冗余规则。
[0078]步骤3:【场景I】识别FW2的原始规则中的防火墙间冗余的过程与“首次防火墙间冗余检测的具体实施过程的步骤4”类似。但在本实例中,由于步骤2中没有检测出冗余的非重叠规则,所以可 直接判定:相对于此次更新后的FW1而言,最初的FW2中的没有冗余规贝U,所以我们需要将在上一次去冗余时检测出的A和r2重新添加回FW2中。
[0079]至此,SPRR完成了【场景I】下防火墙间的冗余检测。
[0080]【场景2】FW2更新,Fff1保持不变。
[0081]基于图17中FW1和FW2可能发生的5种更新情况,在该场景下,可能发生的更新是:a)仅发生情况I中的更新;b)仅发生情况5中的更新;c)同时发生情况I和情况5中的更新。
[0082]对于a),我们不需要对防火墙做任何处理。因为防火墙间的冗余检测,不需要考虑Fff2中规则的决策。
[0083]对于b)和c),执行SPRR方案。
[0084]下面,基于首次防火墙间冗余检测时FWjP FW2的实例,对FW2中的规则作出如图8所示的更新(在原规则^和1*2之间添加一条新规则,即IV ),然后执行防火墙间的冗余检测。
[0085]SPRR在【场景2】下的具体实施过程如下:
[0086]步骤1:转化FW2。【场景2】下FW2的转化过程如图9所示。
[0087](I)根据上一次防火墙间的冗余检测的结果,记录更新后的规则集中上一次被判定为冗余的那些规则的序列号Urm= Ir1,,r3, }。(2)因为在防火墙此次更新前的上
一次去冗余过程中记录的厂H,,: UoZ(C)=丨[O, 2] ,[3,5], [6,1 5]丨,而FW2更新后,其更新规则的第一个字段F1落在Fir2的范围子集{[3,5]}上,所以运行
“关联规则查找算法”可得到FW2中与更新规则相关联的规则子集S2= {r2,,1V ,r5, },如图9(a)所示。(3)根据S2构造all-match SFOD(注意all-match SFOD的F1限定于范围子集{[3,5]}),记录all-match SH)D的第一个节点F1所有的输出边界上边界值
allmatchSFDD: U 病,、)/ (e) = {[3,3] ’ [4,5]},并将其与 FW2: Ucf(V|)/中未更
新的范围子集{[O,2],[6,15]}做并集运算,求出新的节点F1所有的输出边界上边界值的并集掃V:U.c/,{v)/(c) = {[O, 2], [3,3], [4,5], [6,15]},如图 9(b)所示。(4)Net2 ^
all-match SFDD中抽取所有的非重叠规则,并将每一条非重叠规则中每一个字段Fk的取值范围[a,b]用前缀族格式F(a)和F(b)表示,如图9(c)所示。(5)Net2计算每一个字段Fk下在所有非重叠规则中得到的前缀族的并集,如图9(d)所示。(6)Net2数值化每个前缀并用K2加密,然后将K2加密后的前缀发送给Net2,如图9(e)所示。(7)Net1用K1进一步加密这些前缀,如图9(f)所示。
[0088]步骤2:覆盖冗余检测。【场景2】下覆盖冗余检测的过程与“首次防火墙间冗余检测的具体实施过程的步骤3”类似,将步骤I中得到的FW2的双重加密数值集Ti中的每一个双重加密数值a与更新前的上一次去冗余过程中记录的“双重加密非重叠规则”的每一个字段Fi (i = 1,2)下的双重加密数值进行比对处理。在本实例中,Net2最终可以检测出从all-match SFDD中抽取的非重叠规则中nr2和nr4是冗余的。
[0089]步骤3:根据步骤2的检测结果,因为nr2和nr4是冗余的非重叠规则,所以在all-match SFDD中第2和4条路径是冗余路径,剩下的第I和3条路径是有效路径。如图10所示,冗余路径2的终端 节点包含规则序列号3和5 ;冗余路径4的终端节点包含规则序列号2、3和5 ;因为有效路径I和3的终端节点中也包含规则序列号5,但不包含规则序列号2和3,所以FW2中相对于FW1的防火墙间冗余规则集为Rmw = {r2,,r3, }。以Rnrat、步骤I中获取的Urm以及S2作为“比较与合并冗余规则算法”的输入,最终得到FW2中相对于FW1的防火墙间冗余规则集为IiV ,r2,,ιν }。
[0090]至此,SPRR完成了【场景2】下防火墙间的冗余检测。
[0091]【场景3】!^和FW2同时更新。
[0092]当FW1和FW2中的规则都发生了改变时,为了完整的剔除防火墙间的冗余规则,我们将FW1和FW2视为两个新的防火墙,按照首次防火墙间冗余检测的具体实施过程检测FW2中相对于FW1的防火墙间冗余规则。
[0093]本发明使用真实防火墙的规则集做了 SPRR和CDPP的对比实验,防火墙规则集的形式采用思科标准的访问控制列表(ACL)。其中的每一条规则包含五个字段(即,源IP,目的IP,源端口,目的端口,协议)和一条决策(即,接受和丢弃)。在装有Ubuntull.10操作系统,硬件配置为Intel Xeon CPU和32GB内存的PC机上,分别对真实防火墙规则集进行处理。
[0094]图18显示实验使用的五组防火墙,规则数分别为100条、200条、400条、800条,1600 条。
[0095](I)处理时间的比较[0096]处理时间包括加密转化时间和冗余检测比较时间。
[0097]由于SPRR处理的关联规则只占规则集中的一小部分,因此所要处理的数据量大大减小,也就进一步减少了加密转化时间和冗余识别比较时间。
[0098]图11是在FW1更新,Fff2不变场景下,实验记录的防火墙加密转化时间,五组实验结果显示在加密转化时间上SPRR方案至少比⑶PP方案快10倍,至多快250倍。
[0099]图12是在FW1更新,Fff2不变场景下,实验记录的防火墙间的冗余检测比较时间,五组实验结果显示在冗余检测时间上SPRR方案至少比⑶PP方案降低了一个数量级。
[0100]图13是在FW2更新,Fff1不变场景下,实验记录的防火墙加密转化时间,五组实验结果显示在加密转化时间上SPRR方案至少比⑶PP方案快12倍,至多快36倍。
[0101]图14是在FW2更新,Fff1不变场景下,实验记录的防火墙间的冗余检测比较时间,五组实验结果显示在冗余检测时间上SPRR方案至少比⑶PP方案也降低了一个数量级。
[0102](2)通信成本的比较
[0103]同理,因为SPRR减少了待处理的规则数目,加密处理之后的需要进行网络传输的中间结果(即,通信成本)也会大大减少。
[0104]图15是在FW1更新,Fff2不变场景下,实验记录的实际通信成本,五组实验结果显示在通信成本上SPRR方案至少比⑶PP方案降低了 一个数量级。
[0105]图16是在FW2更新,Fff1不变场景下,实验记录的实际通信成本,五组实验结果显示在通信成本上SPRR方案至少比⑶PP方案也降低了一个数量级。
[0106](I)冗余比计算结果
[0107]根据图19的冗余计算结果,SPRR方案和CDPP方案在更新后计算出的冗余率是一致的。CDPP已被证明能够完整的检测出防火墙间的冗余规则,在本实验中,SPRR能够获取与CDPP完全一致的冗余规则,所以该实验结果表明SPRR也能够完整的检测出防火墙间的冗余规则。
[0108]以上测试结果显示,在防火墙规则集发生更新时,分段冗余检测方案无论是在处理时间和通信成本上,均优于需要完全处理所有规则的⑶PP冗余检测方案。
【权利要求】
1.一种应用于跨域协作防火墙(Cross-Domain Cooperative Firewall,简称⑶CF)中的分段冗余检测方法,所述CDCF是指部署在不同的管理域Net1和Net2中的防火墙FW1和Fff2,通信流量从FW1到FW2,所述冗余是指对于FW2中的某条规则r,如果所有的数据包与FW2中的规则r匹配,但不与r之前的任一条规则匹配,且这些数据包被FW1丢弃,r相对于FW1而言是防火墙间的冗余规则,其特征在于,所述分段冗余检测方法基于现有的防火墙间冗余检测方案,通过缩减冗余检测过程中需处理的数据规模,来降低冗余检测的处理时间、t匕较时间与通信成本,以解决动态更新的CDCF造成的冗余检测速度慢、开销大的问题,该方法包括以下步骤: 步骤1:若FW1和FW2在构成CDCF后,从未进行过防火墙间的冗余检测,则执行首次防火墙间的冗余检测方案,分别进行步骤2和步骤3 ;若FW1和FW2已完成首次防火墙间的冗余检测,则分析FW1和FW2的更新情况:【场景UFW1更新,FW2保持不变,进行步骤2 ;【场景2】FW2更新,FW1保持不变,进行步骤3 ;【场景3IFW1和FW2同时更新,则将FW1和FW2视为两个新的防火墙,按照首次防火墙间冗余检测方案,分别进行步骤2和步骤3 ; 步骤2:本步骤的目的是转化FW1, Fff1的转化过程包含以下9个子步骤:(I)运行“关联规则查找算法”,查找FWl中与更新规则相关联的规则子集S1 ; (2)根据S1构造防火墙决策图子图(subgraph of firewall decision diagram,简称SFDD),并通过合并同构子图来进一步简化SFDD的规模,对于首次防火墙间的冗余检测,此时需记录SFDD的第一个节点F1所有的输出边界上边界值的并集/7M: υ(χ/φ?)/(0;μ对于更新场景下的【场景1】,记录SFDD的第一个节点F1所有的输出边界的边界值5F£>£):(?*),并将其与FW1: U.ci,{V|)/(e)中未更新的范围子集做并集运算,求出新的节点F1所有的输出边界上边界值的并集: Uee^i,)/ (e) ; (3)Net1从SFDD中抽取所有的非重叠丢弃规则;(4)Net1将抽取到的每条非重叠丢弃规则中每一个字段Fk的取值范围[a' ,br ]转化为一个等价的最小前缀集,用T([a',b'])表示;(5) Net1计算所有非重叠丢弃规则中得到的最小前缀集的并集;(6) Net1数值化每个前缀并用K1加密,然后将K1加密后的前缀发送给Net2,此处采用的数值化方法是,给定w位的前缀I^b2L bk*L*,首先在bk后插入位元1,位元I代表1^b2Lbk和*L*之间的分隔符,然后用O替换每一个*,如果如缀不包含*的,在最后的位置放置I ; (7) Net2用K2进一步加密这些前缀然后将1、K2双重加密后的前缀发送回Net1 ; (S)Net1根据这些双重加密前缀重建非重叠规则;(9) Net1给每一条重建的非重叠规则分配一个独一无二的随机索引(该索引将被用于后期的冗余检测过程); Fff1转化完成后,Net1从FW1获得一系列“双重加密非重叠规则”,用(F1 e T1) Λ L Λ (Fd e Td) — discard表示双重加密规则,其中Fi (I ^ i ^ d)表示字段,Ti表示一组双重加密数值,然后,进行步骤4 ; 步骤3:本步骤的目的是 转化FW2, Fff2的转化过程包含以下7个子步骤:(I)对于更新场景下的【场景2】,根据上一次防火墙间的冗余检测的结果,记录更新后的规则集中上一次被判定为冗余的那些规则的序列号,用Urm表示,其中rm(l < m < η)且FW2Kr1, L, rn>,注意,对于首次防火墙间的冗余检测,则跳过此环节,直接进入FW2转化过程中的第(2)步;(2)运行“关联规则查找算法”,查找FW2中与更新规则相关联的规则子集S2 ; (3)根据S2构造全匹配的防火墙决策图子图(all-match subgraph of firewall decision diagram,简称all-match SFOD),对于首次防火墙间的冗余检测,记录all-match SFDD的第一个节点F1所有的输出边界上边界值的并集,(e),对于更新场景下的【场景2】,记录all-match SFDD 的节点 F1 所有的输出边界的边界值 dlmai1.’hSl t.:)D: U.、/φ.:1./(y),并将其与FiT2: VecE(Vi)I (e)中未更新的范围子集做并集运算,求出新的节点F1所有的输出边界上边界值的并集厂丨少'/:Ue6iJ{ri)/(e)i (4別的2从all-match SFDD中抽取所有的非重叠规则,并将每一条非重叠规则中每一个字段Fk的取值范围[a,b]用前缀族格式F(a)和F(b)表示;(5) Net2计算每一个字段Fk下在所有非重叠规则中得到的前缀族的并集,再将这些前缀族用多个前缀表示,表示方法是:用k表示a的二进制位长,则前缀族F (a)由k+1个前缀组成,将a中的最后1-Ι位用*替换可获得第i个前缀;(6)Net2数值化每个前缀并用K2加密,并将K2加密后的前缀发送给Net2 ;(7) Net1用K1进一步加密这些前缀; Fff2转化完成后,Net1从FWx获得d组双重加密数值,用T山T d表示FW2中d组双重加密数值集,然后进行步骤4; 步骤4:覆盖冗余检测:对于FW1的每一个字段Fi (I≤i≤d)以及FW2的双重加密数值集Ti中的每一个数值a,Net1检测是否存在一条双重加密规则(F1 e T1) Λ L Λ (Fd e Td) — discard满足a e Ti,如果规则r1满足条件,那么Net1将a和规则索引i关联起来,如果条件不满足,Net1则将a与空集关联;最终Net1用与T1LTd中的每个数值相对应的规则索引集替换这些数值,并将其发送到Net2 ;Net2根据接收结果,找出与每一个前缀族重叠的规则索引,对于FW2中的某条非重叠规则nr,如果它所有的前缀族都与FW1中的同一条丢失规则nr'重叠,则nr被nr'覆盖,那么nr是冗余的; 步骤5:鉴于前面的步骤,Net2可识别出FW2中冗余的非重叠规则,接下来Net2需要识别出哪些原始规则是防火墙间的冗余规则,因为FW2的all-match SFDD中的每条路径都对应一条非重叠规则,我们称那些和冗余的非重叠规则对应的路径为冗余路径,剩下的路径称为有效路径,Net2根据“防火墙间冗余规则判定标准”识别出FW2中相对于FW1的防火墙间冗余规则集Rmw,判定标准如下:给定无内部冗余的防火墙FW2Kr1, L, rn>和它的all-match SFDD,当且仅当满足以下两个条件时,Fff2中的规则&相对于FW1来说是防火墙间的冗余规则:(1)存在一条冗余路径,其终端节点包含序列号i,(2)不存在终端节点包含i为最小元素的有效路径;对于更新场景下的【场景2】,此时还需要利用此时得到的Rmw、步骤3中得到的Urm以及S2,使用“比较与合并冗余规则算法”,得到最终的完整的FW2中相对于FW1的防火墙间冗余规则集。
2.根据权利要求1所述的一种应用于跨域协作防火墙中的分段冗余检测方法,其特征在于,所述步骤2中的SFDD的定义如下: SFDD是本发明基于防火墙决策图(firewall decision diagram,简称FDD)提出的一种用来描述防火墙关联规则的非循环的有向图,FDD是一个非循环的有向图,用于分析防火墙FW在字段F1, K, Fd上的一系列规则<ri,L, rn>,FDD包含以下5个属性:a)恰好存在一个没有输入边界的节点,记为根节点,没有输出边界的节点记为终端节点;b)每个节点V都有一个标签,记为F (V),如果V是一个非终端节点,那么F (V) e仍丄匕},如果V是一个终端节点,则F (V)代表一条决策;c)节点u指向节点的V的每条边e,是一个非空整数区间,记为I (e),1(e)是u的域D (F (U))的子集,即/ (e) CZ D(F(u)),D (F (u))是一个预定义的非负整数区间;d)节点V的所有输出边界的集合,记为E(V),满足两个条件:①一致性:对于E(V)中任意两条不同的边e和e',有= ②完整性:Uee£{>)/(e) Q D(F(W))5e)从一个根节点到一个终端节点的定向路径称为一条决策路径,FDD中的每条路径对应一条非重叠规则;SFDD与FDD的区别仅仅在于SFDD描述是ACL中的关联规则,而FDD描述的是ACL中的所有规则。
3.根据权利要求1所述的一种应用于跨域协作防火墙中的分段冗余检测方法,其特征在于,所述步骤2中all-match SFDD的定义如下: all-match SFDD与SFDD的区别在于其终端节点,在一个SFDD中,每一个终端节点用一条决策标注,而在一个all-match SFDD中,每个终端节点用一系列非空的规则序列号标注,标注在某个终端节点上的一系列规则序列号包含了与这条决策路径重叠的所有规则的序列号。
4.根据权利要求1所述的一种应用于跨域协作防火墙中的分段冗余检测方法,其特征在于,所述步骤2和步骤3中使用的关联规则查找算法详细过程如下: 获得更新规则r的第一个字段域的值,记为UR (该值是一个数值区间),遍历步骤2或步骤3记录的/7K:所有值(每个值也是区间数值),将其中与UR相交的值提取出来组成一个临时集合St ;遍历防火墙FW1或FW2原始规则集,将每条规则的第一个字段域的值提取出来,记为OR(i)(其中i表示规则序列号),如果临时集合St中的任一个值与OR(i)相交,把第i号规则加入集合S ;原始规则集遍历完成之后,最后得到的集合S就包含所有要查找的关联规则。
5.根据权利要求1所述的一种应用于跨域协作防火墙中的分段冗余检测方法,其特征在于,所述步骤5中的比较与合并冗余规则算法详细过程如下: 遍历步骤3中获取的Urm,如果Urm中某条规则r也在步骤3求得的关联规则集S2中,则从Urm中剔除规则r ;遍历完成之后,将剔除了部分规则的U, rffl与步骤5得到的新的冗余规则集Rnrat做并集运算,最后得到的集合即为最终所求的更新后的完整的冗余规则集。
6.根据权利要求2所述的ACL中的关联规则,其特征在于: 在一个ACL中,一个防火墙策略通常指定为一个规则序列,一般情况下,对于ACL中的某一个指定字段而言(本发明考虑ACL中的第一个字段,即“源IP”为指定字段),某些规则在该字段的取值的交集不是空集,我们称这些规则为关联规则。
【文档编号】H04L29/06GK103973675SQ201410150528
【公开日】2014年8月6日 申请日期:2014年4月15日 优先权日:2014年4月15日
【发明者】彭思思, 秦拯, 黄星辰, 欧露, 李文杰, 刘向杨 申请人:湖南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1