防火墙策略冗余检测方法及装置制造方法

文档序号:7817209阅读:555来源:国知局
防火墙策略冗余检测方法及装置制造方法
【专利摘要】本发明公开了一种防火墙策略冗余检测方法及装置,该防火墙策略冗余检测方法包括:将防火墙策略列表中的防火墙策略的第一对象和第二对象转化成相同形式的值;针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和第二多叉树;计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合;以及判断节点集合是否为空集,如果节点集合不为空集,则待检测防火墙策略是冗余防火墙策略。本发明解决了不能同时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测的问题,进而达到了提高防火墙策略冗余检测的效率和准确率的效果。
【专利说明】防火墙策略冗余检测方法及装置

【技术领域】
[0001]本发明涉及互联网领域,具体而言,涉及一种防火墙策略冗余检测方法及装置。

【背景技术】
[0002]在安全网关产品中防火墙策略管理是非常重要的一个功能,防火墙的安全性基本 都是通过防火墙的安全策略配置来实现的。同时防火墙策略管理的好坏会直接影响到整 个防火墙吞吐效率。在策略管理当中,策略顺序决定了每个策略的位置,策略数量越大,或 策略顺序不当,都可能会覆盖底层策略。策略的冗余检测以及策略相关对象的冗余检测就 显得非常重要。策略的冗余检测主要是指策略列表当中的策略间相似性比较,比较方法主 要是根据策略间同类属性进行比较,多个同类属性如果相同,则两个策略相同,否则两个策 略不同。同理,策略涉及的对象比较也是采用同类属性进行比较,从而得出两个对象是否相 同。在现有技术中,可实现两策略间对比(即一对一的比较),但对于一个策略同时与多个 策略间的比较(即一对多的比较)目前还没有很好的实现方法。
[0003]现有技术中防火墙策略对比主要针对两个策略的浅层对比,每个属性采用不同的 对比方法,方法通用性比较差;由于采用的只是浅层对比,对比深度有限,如遇到对象的多 级嵌套,对比难度指数增加,两束略对比比较耗时。此外,由于现有的冗余检测手段主要是 两个策略间的对比,从而确定两个策略间的冗余关系,但现实策略使用中更多的情况不仅 仅是两个策略间的对比,还有多策略间的对比。一个策略可能会被另一个策略覆盖,但更多 情况是一个策略会被很多的策略组合起来覆盖,现有的技术还无法实现这种多策略的组合 覆盖检测。这种深层次的组合覆盖产生的冗余策略对安全隐患更大,如果没有很好的手段 进行检测,会极大的威胁到防火墙的安全。
[0004]针对相关技术中不能同时将待检测防火墙策略与多个防火墙策略进行比较实现 冗余检测问题,目前尚未提出有效的解决方案。


【发明内容】

[0005]本发明的主要目的在于提供一种防火墙策略冗余检测方法及装置,以解决不能同 时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测问题。
[0006]为了实现上述目的,根据本发明的一个方面,提供了一种防火墙策略冗余检测方 法。 '
[0°07]根据本发明的防火墙策略冗余检测方法包括:将防火墙策略列表中的防火墙策略 的第一对象和第二对象转化成相同形式的值;针对第一对象对应的值和第二对象对应的值 分别创建第一多叉树和第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由 多个第二对象创建,多叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的 组合覆盖子节点;计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其;^的 防火墙束略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其他防火墙策 略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防火墙策略列表 中先于待检测防火墙策略执行的防火墙策略;以及判断节点集合是否为空集,如果节点集 合不为空集,则待检测防火墙策略是冗余防火墙策略,否则待检测防火墙策略不是冗余防 火墙策略。
[0008]进一步地,计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他 的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合包括:分别查找待检 测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,得到第一多叉树的覆盖分支和 第二多叉树的覆盖分支,其中,覆盖分支为经过待检测防火墙策略的对象对应的多叉树的 节点的路径,该路径从多叉树的根节点起始至覆盖多叉树的节点的最底层的子节点终止; 第一多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖分支中的每个覆盖分 支进行交集运算,得到分支集合;以及将分支集合进行并集运算得到节点集合。
[0009]进一步地,计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他 的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合包括:查找其他的防 火墙束略节点中同时覆盖待检测防火墙策略对应的多叉树的节点的一个或者多个节点,得 到第一多叉树节点集合和第二多叉树节点集合,其中,第一多叉树节点集合由查找第一多 叉树得到,第二多叉树节点集合由查找第二多叉树得到;以及第一多叉树节点集合中的每 一个依次和第一多叉树节点集合中的每一个进行交集运算,得到节点集合。
[0010]进一步地,将多条防火墙策略的第一对象和第二对象转化成相同形式的值包括: 根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编 码,得到第一对象对应的CIDR值和第二对象对应的 CIDR值。
[0011]进一步地,当防火墙策略的对象不为地址格式时,根据无类别域际路由选择CIDR 编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR ^和第二对象对应的CIDR值包括:将防火墙策略的第一对象和第二对象转化成数字;将数 子转化成IP地址格式的值;以及根据CIDR编码方法将IP地址格式的值转化成 CIDR值,得 到第一对象对应的CIDR值和第二对象对应的CIDR值。
[0012]进一步地,将分支集合进行并集运算得到节点集合之后,方法还包括:剔除节点集 合中被父节点覆盖的子节点。
[0013]为了实现上述目的,根据本发明的另一方面,提供了 一种防火墙策略冗余检测装 置。
[00^4]根据本发明的防火墙策略冗余检测装置包括:转化模块,用于将多条防火墙策略 的第一对象和第二对象转化成相同形式的值;创建模块,用于针对第一对象对应的值和第 二对象对应的值分别创建第一多叉树和第二多叉树,其中,第一多叉树由多个第一对象创 建,第二多叉树由多个第二对象创建,多叉树的父节点覆盖多叉树的子节点,子节点的所有 下一级子节点的组合覆盖子节点;计算模块,用于计算待检测防火墙策略对应的第一多叉 树!?第〒多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖 的节点集合,其中,其他防火墙策略为防火墙策略列表中除了待检测防火墙策略之外的所 有防火墙策略或防火墙策略列表中先于待检测防火墙策略执行的防火墙策略;判断模块, 用于判断节点集合是否为空集;以及确定模块,用于当判断出节点集合不为空集时,则确定 待检测防火墙策略是冗余防火墙策略,当判断出节点集合为空集时,则确定待检测防火墙 策略不是冗余防火墙策略。
[0015]进一步地,计算模块包括:第一查找单元,用于分别查找待检测防火墙策略的每个 对象对应的多叉树的节点的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分 支,其中,覆盖分支为经过待检测防火墙策略的对象对应的多叉树的节点的路径,路径从多 叉树的根节点起始至覆盖多叉树的节点的最底层的子节点终止;第一运算单元,用于第一 多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖分支中的每个覆盖分支进 行交集运算,得到分支集合;以及第二运算单元,用于将分支集合进行并集运算得到节点集 合。
[0016]进一步地,计算模块包括:第二查找单元,用于查找其他的防火墙策略节点中同时 覆盖待检测防火墙策略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集 合和第二多叉树节点集合,其中,第一多叉树节点集合由查找第一多叉树得到,第二多叉树 节点集合由查找第二多叉树得到;以及第三运算单元,用于第一多叉树节点集合中的每一 个依次和第二多叉树节点集合中的每一个进行交集运算,得到节点集合。
[0017]进一步地,转化模块包括:编码单元,用于根据无类别域际路由选择CIDR编码方 法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第 二对象对应的CIDR值。
[0018]进一步地,当防火墙策略的对象不为地址格式时,编码单元包括:第一转换单元, 用于将防火墙策略的第一对象和第二对象转化成数字;第二转换单元,用于将数字转化成 IP地址格式的值;以及第三转换单元,用于根据CIDR编码方法将IP地址格式的值转化成 CIDR值,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
[0019]进一步地,将分支集合进行并集运算得到节点集合之后,计算模块还包括:剔除单 元,用于剔除节点集合中被父节点覆盖的子节点。
[0020]通过本发明,采用将多个防火墙策略的对象创建对应的多叉树进行防火墙策略冗 余检测,解决了不能同时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测的 问题,进而达到了提高防火墙策略冗余检测的效率和准确率的效果。

【专利附图】

【附图说明】
[0021] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实 施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0022]图1是根据本发明第一实施例的防火墙策略冗余检测方法的流程图;
[0023]图2是根据本发明第二实施例的防火墙策略冗余检测方法的流程图;
[0024]图3是根据本发明实施例的第一多叉树的示意图;
[0025]图4是根据本发明实施例的第二多叉树的示意图;
[0026]图5是根据本发明第三实施例的防火墙策略冗余检测方法的流程图;
[0027]图6是根据本发明第一实施例的防火墙策略冗余检测装置的示意图;
[0028]图7是根据本发明第二实施例的防火墙策略冗余检测装置的示意图;以及 [0029]图8是根据本发明第三实施例的防火墙策略冗余检测装置的示意图。

【具体实施方式】
[0030] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。
[0031] 为了使本【技术领域】的人员更好地理解本申请方案,下面将结合本申请实施例中的 附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是 本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范 围。
[0032] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语"第一"、"第 二"等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用 的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或 描述的那些以外的顺序实施。此外,术语"包括"和"具有"以及他们的任何变形,意图在于 覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限 于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产 品或设备固有的其它步骤或单元。
[0033] 本发明实施例提供了一种防火墙策略冗余检测方法,图1是根据本发明第一实施 例的防火墙策略冗余检测方法的流程图。
[0034] 如图1所示,该方法包括如下的步骤S102至步骤S108 :
[0035] 步骤S102 :将防火墙策略列表中的防火墙策略的第一对象和第二对象转化成相 同形式的值。
[0036]防火墙的安全性基本都是通过防火墙的安全策略的配置实现的。防火墙策略列 表记录着所有待执行的防火墙策略的执行顺序,通常在执行防火墙安全检测时按照防火墙 策略列表从上往下依次执行每一条防火墙策略,当某一条防火墙策略匹配出被检测入侵对 象时,则在防火墙策略列表中位于该防火墙策略之后的防火墙策略将不执行。因此,应尽量 将匹配效果更好的防火墙策略置于防火墙策略列表前端,以提高防火墙安全监测的效率。 在进行防火墙策略的冗余检测过程中涉及的策略和策略相关对象较多,对象的种类较为多 样,例如IP地址,源端口,目的端口,协议等对象。上述第一对象和第二对象用于区分不同 类型的对象。通过将上述多样的对象全部转化成形同形式的值,这些值都是唯一的值,并且 可以比较大小关系,便于后续进行比较。
[0037]步骤S104 :针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和 第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由多个第二对象创建,多 叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的组合覆盖上述子节点。 [00 38]上述多个第一对象表示相同类型的一类对象,多个第二对象表示相同类型的另一 类对象。在将上述多条防火墙策略的对象都转换成相同形式的值后,查找出多条防火墙策 略中相同类型的对象所对应的值,创建一颗多叉树。例如,通过多个 IP对象对应的值创建 第一棵多叉树,通过多个协议对象对应的值创建第二棵多叉树。在创建多叉树的过程中,首 先需要判断每个对象对应的值的大小,取值大的对象对应于该多叉树的父节点,值小的对 象对应于该多叉树的子节点,多叉树的每个节点除了包括对象对应的值外,还包括该对象 对应的策略或策略列表,该策略列表是指该策略在防火墙保护过程中执行的顺序。此外,每 个策略可以对应一棵多叉树的一个或多个节点,例如,防火墙策略包含两个 IP对象IP1和 IP2,则在基于IP对象对应的值创建的多叉树中,防火墙策略包括2个节点。
[0039] 在一棵多叉树中,多叉树的父节点一定覆盖多叉树的子节点,子节点的所有下一 级子节点的组合可能覆盖上述子节点,也可能不能覆盖上述子节点。如图3所^示,一颗多叉 树包含10个节点nO?n9,从图中可以看出,nO覆盖为根节点,覆盖该多叉树所有的子节 点,而父节点覆盖子节点,例如nl为n3和n4的父节点,nl覆盖n3,同时也能覆盖 n4。子节 点的所有下一级子节点的组合可能覆盖上述子节点,例如n4包含三个子节点n6、n7和n9, 这三个子节点的组合可能覆盖父节点η4,也可能不覆盖父节点 η4,但是当父节点只有一个 子节点时,则该子节点一定不能覆盖父节点,例如η2只包含η5 -个子节点,则η5不能覆盖 η2。本发明实施例只考虑多个子节点的组合能够覆盖父节点的情况。
[0040]步骤Sl〇6 :计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其 他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其&防^ 墙策略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防火墙策略 列表中先于待检测防火墙策略执行的防火墙策略。
[0041]通过上述步骤将所有防火墙策略的每个对象都对应于多叉树的一个节点,每一棵 多叉树的TI点也就相应的对应一条防火墙策略,例如防火墙策略r的协议对象对应于一颗 多叉树的节点n,则该多叉树的节点n也相应的对应于防火墙策略 r。检测待检测防火墙策 略的冗余情况,相当于计算该待检测防火墙策略对应的所有多叉树的节点被防火墙列表中 ^他防火墙策略所对应的多叉树的节点覆盖的情况,此处,其他防火墙策略可以是防火墙 策略列表中除了待检测防火墙策略之外的所有防火墙策略,即考虑多叉树节点中除待检测 防火墙策略对应的节点之外所有的节点对待检测防火墙策略对应的节点的覆盖情况,由于 全面的考虑了防火墙策略列表中除待检测防火墙策略之外的所有防火墙策略,因此可以检 测出防火墙策略列表中所有冗余的防火墙策略。其他防火墙策略也可以是防火墙策略列表 中先于待检测防火墙策略执行的防火墙策略,即不考虑位于待检测防火墙策略之后执行的 防火墙策略对应的节点对待检测防火墙策略对应的节点的覆盖情况,由于避免了位于待检 测防火墙策略之后执行的防火墙策略或其组合对待检测防火墙策略的覆盖,因此可以提高 整个防火墙安全检测的效率,这是因为当待检测防火墙策略被检测为冗余时,则将其从防 火墙策略列表中剔除,在进行防火墙安全检测时由位于该待检测防火墙策略之后执行的防 火墙策略或防火墙策略的组合执行该待检测防火墙策略的匹配功能,需要消耗更多的时间 才能够匹配出被检测入侵对象,造成防火墙安全检测的效率降低。
[004i τ点集合为待检测防火墙策略对应的节点被其他防火墙策略对应的节点覆盖的 所有?点和或节点组合的集合,例如,待检测防火墙策略对应两棵多叉树,分别是第一多叉 f和第二多叉树,其他的防火墙策略包括第二防火墙策略,如果待检灘火墙策略对应的 t多叉树的节点被第二防火墙策略对应的第一多叉树的节点所覆盖的同时,待检賺火 ±0束略对应的第叉树的节点被第二防火墙策略对应的第二多叉树的节点所覆盖,则第 一防火墙策略覆盖待检测防火墙策略,则该第二防火墙策略对应的节卢为该节占集合的一 个元素。 ;' … 步骤S108:判断节点集合是否为空集,如果节点集合不为空集,则待检测防火墙 束略疋几余防火墙策略,否则待检测防火墙策略不是冗余防火墙策略。 ^4]自节点集合为,侧不雜·防火職略聽其他几儒火職略的组合 復盖待检测防火墙策略,则待检测防火墙策略不是冗余的防火墙策略。当节点集合不为空 集时,则说明至少存在一个其他的防火墙策略或是一个其他几个防火墙策略的组合覆盖待 检测防火墙策略,则待检测防火墙策略是冗余的防火墙策略。
[0045]本发明实施例通过将多个防火墙策略的对象转化成相同形式的值,根据相同类型 的对象对应的值创建多叉树,并计算待检测防火墙策略对应的所有多叉树的节点被其他防 火墙策略所对应的多叉树的节点覆盖的节点集合,通过判断上述节点集合是否为空集来确 定待检测防火墙策略是否冗余,当节点集合不为空集时,则待检测防火墙策略是冗余防火 墙策略,当节点集合为空集时待检测防火墙策略不是冗余防火墙策略。解决了现有技术中 不通同时将待检测防火墙策略与多个其他的防火墙策略进行比较实现冗余检测的问题。此 夕卜,由于所有类型的对象都化为相同形式的值,并创建多叉树来实现防火墙策略的冗余检 测,该方法可以对防火墙策略中的不同类型的对象进行比较,具有较好的通用性。
[0046]图2是根据本发明第二实施例的防火墙策略冗余检测方法的流程图。如图2所示, 该防火墙策略冗余检测方法包括如下的步骤S202至步骤S212 :
[0047]步骤S2〇2 :同上述步骤S102,在此不再赘述。
[0048] 步骤S204 :同上述步骤S104,在此不再赘述。
[0049]步骤S206 :分别查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖 分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,覆盖分支为经过待检测 防火墙策略的对象对应的多叉树的节点的路径,路径从多叉树的根节点起始至覆盖多叉树 的节点的最底层的子节点终止。
[0050]覆盖分支上的节点或节点组合可以覆盖待检测防火墙策略对应的节点的,如 图 4 所不,该多叉树包括 10 个节点,分别Sn〇(〇.〇.〇. 〇/〇,any,rl),nl( 1〇. 1〇〇. 7. JY24, r2) , n2 (10. 100. 0. 1/24, r3) , n3 (10. 100. 7. 1/28, r4) , n4 (10. 100. 7. 128/28, r5), n5(10. 100.8. 1/29, r4), n6(10. 100.7. 1/29,r6), n7(l〇. 100.8.9/29,r7), n8(10_ 100_7_9/3〇,r8),n9(l〇· l〇〇·7· l:3/3〇,r9)。其中每个节点包括每个对象转化后的值 和该对象所属的防火墙策略,例如节点nl,包括 10· 100_ 7· i/24^2,其中1〇· 1〇〇. 7. 1/24为 对象对应的值,r2为该对象所属的防火墙策略。假设待检测防火墙策略为r4,该多叉树的 其他节点对应的防火墙策略的执行都先于 r4,节点η3为待检测防火墙策略r4对应的节点。 该防火墙策略Η对应的节点n3的覆盖分支有如下三种情况:
[0051] 覆盖分支1 :节点(n0, nl,n6),对应于策略(rl,r2, r6);
[0052] 覆盖分支 2 :节点(n〇, ni,n7, n8),对应于策略(rl,r2, r7, r8);
[0053] 覆盖分支 3 :节点(n〇, ni,n7, n9),对应于策略(rl,r2, r7, r9)。
[0054]可以看出,上述三条覆盖分支分别都经过防火墙策略r4对应的节点n3。
[0055]以覆盖分支1查找为例,由于节点n0和节点nl分别都覆盖节点n3,节点n6和节 点η7组合覆盖节点n3,因此节点n0、节点nl和节点n6组成一条覆盖分支,但是如若节点 n3只有一个子节点n6,则节点n6不能覆盖节点n3,则覆盖分支中只包含节点n〇和节点 nl。 [0056]如果待检测防火墙策略对应于一颗多叉树的多个节点,则需要分别计算每个节点 的覆盖分支。如图4中,防火墙策略 r4对应节点n3和节点n5,则该防火墙策略Η对应的 节点的覆盖分支如下:
[0057]覆盖分支1 :节点(η0, η?,η6),对应于策略(rl,r2, r6);
[0058]覆盖分支 2 :节点(n〇, nl,n7, n8),对应于策略(rl,r2, r7, r8);
[0059]覆盖分支 3 :节点(n〇, ni,n7, n9),对应于策略(rl, r2, r7, r9);
[0060]覆盖分支4 :节点(n〇, n2),对应于策略(ri,r3)。
[0061]覆盖分支1至覆盖分支3对应于防火墙策略r4对应的节点n3,覆盖分支4对应于 防火墙策略r4对应的节点n5。
[0062]待检测防火墙策略的其他对象对应的多叉树的覆盖分支的查找同上述方法,在此 不再赘述。
[0063]要查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,需要遍历 多叉树的节点。多叉树的遍历采用深度遍历方法,根节点信息传递给子节点,叶子节点信息 传递给父节点。由于在判断策略覆盖情况时,策略列表中的每个策略都需要遍历多叉树,为 了减少遍历次数,需要将第一次遍历结果存储在Map<CIDR,节点〉。这样每次策略遍历时, 只需要从Map中根据该策略对象的每个 CIDR值可找到相应的节点。每个节点通过一定的操 作可犹取乂T 点或子点列表:例如 getParentNode,getChildrenListNode,isRootNode 等操作方法。
[0064]查找待检测防火墙策略对应的一棵多叉树的节点的覆盖分支如下:
[0065]待检测防火墙策略对应的一棵多叉树的节点集合为:N(i) = {Nx,Ny,Nz,…},其 中,i表不第i棵多叉树,Nx、Ny、Nz表示多叉树的节点。
[0066]其中Nx节点的覆盖情况S (Nx) = S1 (Nx) +S2 (Νχ) {},S1表示父节点覆盖策略列 表,S2表示子节点组合覆盖策略列表(子节点组合后的CIDR值等于Νχ节点的CIDR值)。 [0067] 则Nx的覆盖分支计算如下:
[0068] Β(Νχ) = Σ (Sl(Nx) U B2(Nx)),B表示覆盖分支,B2表示S2子节点组合产生的覆 盖分支。
[0069] B2计算如下公式所示:
[0070] Β2(Νχ) = Σ (S2' (Nx) U B2,(Nx)), S2,(Nx)表示 Nx 节点 S2 集合中离散子 节点(不包括B2'涵盖的子节点),B2' (Nx)表示S2集合中那些子节点需通过下一级子 节点组合产生的CIDR值与父节点一致的那些分支。
[0071] 同理依次递归,可以找出所有B2覆盖分支。
[0072]通过以上公式可推断出Nx节点所有的覆盖分支B(Nx)。
[0073]步骤S2〇S :第一多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖 分支中的每个覆盖分支进行交集运算,得到分支集合。
[0074]例如,B是T多叉树上待检测防火墙策略被覆盖的一个覆盖分支,同时有6棵多叉 树,分别对应于覆盖分支Bj至分支覆盖Bo。通过如下遍历算法计算该待检测防火墙策略同 时被多棵多叉树覆盖的分支。
[0075] SacBj iaftodow branches in TI|| ForBk in {sliifciirferanchcs in T2} { B|B| & Bk) = fcn break For B1 in {shadow braad?5i:ia.fl;H; _:毳:B l)=nothi〇g Ttatt:li!$ak For'Bm.::m (shadow branches in 14}( 1^^ & Bk & Bl Λ 0m)=noiliing then break For 8;n:1n; f shadow'"feanetes: in 15} | 1((?:暴通fe展 Bi &..Bm暴動)=_ffing:ttetibt6ak l?r Bo ia: pfeiifow braasiesin Ti} { Bx = Bj ^ Bk ft BI & Bm M Bn If(Bx)=aDtMng then teak .lisLadd(Bx) } )
[0076] } }
[0077] Bx就是多棵多叉树的覆盖分支求交集后获得的一个的分支,该分支所包含的策略 或策略组合在多棵多叉树中都覆盖待检测防火墙策略。
[0078] 每一个Bx分支由若干个节点组成,每个节点由一个或多个防火墙策略构成,则一 个Bx分支包括的策略集合如下:
[0079] R (X) = {Rx (1), Rx (2),Rx (3),…,RX (Π )},
[00S0]其中,R(x)表示Βχ分支对应的一组策略的集合,η表示有η个节点,Rx表示如分 支上的策略。同上方法,遍历所有多叉树的覆盖分支,得到所有符合多棵^叉树的分支集 人 1=1 〇
[0081] 步骤S210 :将分支集合进行并集运算得到节点集合。
[0082] 所有分支并集后即可得到该待检测防火墙策略的覆盖节点集合。
[0083] S(x) = Bl(x) U B2(x) U B3(x) U…U Bn(x), 、、
[0084]其中,x表示防火墙策略,S(x)表示待检测防火墙策略的覆盖节点集合犯表 示防火墙策略X在经过多棵多叉树遍历后得到的一个分支B1,同理,Bn (x)表示防火墙策略 X在经过多棵多叉树遍历后得到的一个分支Bn。
[0085] 步骤S212 :同上述步骤S108,在此不再赘述。
[0086] 本发明实施例通过查找待检测防火墙策略的每个对象对应的多叉树的节点的覆 盖分支,并将每棵多叉树的覆盖分支依次与其他多叉树的覆盖分支进行交集运算得到符合 所有多叉树的分支集合,再将分支集合进行并集运算得到节点集合,当节点集合不为空集 时则该待检测防火墙策略则为冗余防火墙策略。由于只要包含待检测防火墙策略对应的节 点的路径都为覆盖分支,因此待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分 支比较容易查找并且数量不大,减少了遍历多棵多叉树遍历的次数,使得进行多棵多叉树 遍历时效率较高,有效提高了防火墙策略冗余检测的检测效率。
[0087]图5是根据本发明第三实施例的防火墙策略冗余检测方法的流程图。如图5所示, 该防火墙策略冗余检测方法包括如下的步骤S502至步骤S510 :
[0088] 步骤S502 :同上述步骤S102,在此不再赘述。
[0089] 步骤S504 :同上述步骤S104,在此不再赘述。
[0090] 步骤S506:查找其他的防火墙策略节点中同时覆盖待检测防火墙策略对应的多 叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点集合,其中, 第一多叉树节点集合由查找第一多叉树得到,第二多叉树节点集合由查找第二多叉树得 到。
[0091] 如图4所示,防火墙策略Η对应于该多叉树两个节点n3和Π 5,令防火墙策略r4 为待检测防火墙策略。则同时覆盖节点n3和η5的其他的防火墙策略对应的节点集合为 {nO, nl+n2, η2+η6+η7, η2+η6+η8+η9},对应的防火墙策略的集合为{ri,r2+r3, r3+r6+r7, r3 +r6+r8+r9}。
[0092] 通过上述同样的方法查找该待检测防火墙策略对应的其他多叉树的节点集合。 [0093] 步骤S508 :第一多叉树节点集合中的每一个依次和第二多叉树节点集合中的每 一个进行交集运算,得到节点集合。
[0094]通过将多棵多叉树的节点集合进行交集运算,得到符合多棵多叉树的节点集合, 即交集运算得到的节点集合中的节点在多棵多叉树中都能覆盖待检测防火墙策略的节点。 [0095]当待检测防火墙对应2棵以上的多叉树时,按照上述相同的方法,将前两棵多叉 树得到的节点集合中的每一个依次和第三棵多叉树的节点集合的每一进行交集,依次类推 其他的多叉树。
[0096] 步骤S510 :同上述步骤S108,在此不再赘述。
[0097] 本发明实施例通过分别查找待检测防火墙策略对应的每颗多叉树的节点被其他 的防火墙策略对应的节点覆盖的节点集合,再将多棵多叉树的节点集合进行交集运算得到 符合多棵多叉树的节点集合。通过直接查找待检测防火墙策略对应的每一棵多叉树的节点 被其他防火墙策略对应的多叉树的节点覆盖的节点集合,实现过程更为直接便于用户易理 解。
[0098] 优选地,为了方便的实现将防火墙策略的对象转换成相同形式的值,并保证每个 防火墙策略的对象对应的值的唯一性,将多条防火墙策略的第一对象和第二对象转化成相 同形式的值包括:根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象 和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
[0099] 无类别域际路由选择CIDR是一种用于给用户分配IP地址以及在互联网上有效地 路由IP数据包的对IP地址进行归类的方法。通过采用CIDR编码方法对防火墙策略的对 象进行编码,可以得到一个唯一的CIDR值,该CIDR值为一个地址形式的值,实现过程简单 方便。
[0100] 可选地,当防火墙策略的对象不为地址格式时,根据无类别域际路由选择CIDR编 码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值 和第二对象对应的CIDR值包括:将防火墙策略的第一对象和第二对象转化成数字;将数字 转化成IP地址格式的值;以及根据CIDR编码方法将IP地址格式的值转化成CIDR值,得到 第一对象对应的CIDR值和第二对象对应的CIDR值。
[0101] 防火墙策略的对象较为多样,可以分为两大类,一类是地址相关的对象,例如IP, IP/Mask,IP Range等。IP,IP/Mask可直接转换成对应的CIDR地址块;IP Range通过转 换可得到多个CIDR地址块;复杂情况下,有些通配符掩码可通过转换成多个IP Range,再 转换成多个CIDR地址块。同类属性,如果属性值为"Any",则最大值可看成32位整形的最 大值,最小值为0,进一步可转换成一个特殊的CIDR地址块(0. 0. 0. 〇/〇)。另一类是地址无 关的对象,例如如IP包五元组:源地址(src_addr),源端口(src_port),目的地址(dst_ addr),目的端口(dst_port),协议(protocol)。对目的端口来说,可将协议(Protocol) 左移16位,然后加上目的端口号,g卩可得到一个32位整形的端口值,可将这个值转换成IP 模式,再进一步转换成CIDR地址块;同理,对源端口来说,可将协议(Protocol)左移16位, 然后加上源端口号,即可得到一个32位整形的端口值,再将这个值转换成IP模式,进一步 可转换成CIDR地址块。如果源端口或目的端口一方为空的情况下,可作为属性值"Any",也 就是最大值可看成32位整形的最大值,最小值为〇,进一步可转换成一个特殊的CIDR地址 块(0. 0· 0· 0/0)。字符串类元素可通过hashcode进行数字化,得到数字值,再将该数字值转 换成IP地址格式的值,再进一步转换成CIDR地址块。本发明实施例可以实现将不同类型 的防火墙策略的对象都转换成对应的CIDR地址值。
[0102]优选地,将分支集合进行并集运算得到节点集合之后,方法还包括:剔除节点集合 中被父节点覆盖的子节点。
[0103]多棵多叉树的覆盖分支并集组合后,将会得到待检测防火墙策略的所有覆盖组 合,根据多叉树的特点,父节点在多种组合中会重复利用,因此需要对组合后的节点集合剔 重。剔重可遵循最小组合原则,假如组合A当中包含了组合B,则A是一种冗余组合,例如, 组合A(R1,R2, R3),组合B(R2, R3),则剔重后的组合为组合B(R2, R3)。通过剔除节点集合 中被父节点覆盖的子节点,可以去除节点集合中的冗余节点。
[0104]本发明实施例的一个典型应用如下:假设防火墙策略115包括源地址addressOl, 地址范围为(107. 1· 1· 1-107· 1· 1· 1〇),服务BT*、APP_IM,防火墙策略95包括源地址 address〇2,地址范围(U4. 1· 1· K24· 1· 1. 10),服务 BT*、APPJM 和 APP-P2P,防火墙策 略 26 包括源地址 107. L 丨_ 8/255· 255· 255· 255 和 124_ 丨·丨_ 7/255· 255· 255_ 255,服务 QQ*、 BT*。由于APP-IM是一个应用组,该组包含了应用QQ*,从而从服务覆盖角度看,防火墙策略 115和防火墙策略95都覆盖了防火墙策略26。但是从源地址可以看出,防火墙策略115和 防火墙策略95 -起组合覆盖防火墙策略26。
[0105]从以上的描述中,可以看出,本发明实现了如下技术效果:
[0106]本发明实施例通过将多个防火墙策略的对象转化成相同形式的值,根据相同类型 的对象对应的值创建多叉树,并计算待检测防火墙策略对应的所有多叉树的节点被其他防 火墙策略所对应的多叉树的节点覆盖的节点集合,通过判断上述节点集合是否为空集来确 定待检测防火墙策略是否冗余,当节点集合不为空集时,则待检测防火墙策略是冗余防火 墙策略,当节点集合为空集时待检测防火墙策略不是冗余防火墙策略。解决了现有技术中 不能同时将待检测防火墙策略与多个其他的防火墙策略进行比较实现冗余检测的问题。此 夕卜,由于所有类型的对象都化为相同形式的值,并创建多叉树来实现防火墙策略的冗余检 测,该方法可以对防火墙策略中的不同类型的对象进行比较,具有较好的通用性。
[0107]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的 计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不 同于此处的顺序执行所示出或描述的步骤。
[0108]根据本发明实施例,提供了一种防火墙策略冗余检测装置。图6是根据本发明第 一实施的防火墙策略冗余检测装置的示意图。
[0109]如图6所示,该装置包括:转化模块10,创建模块20,计算模块30,判断模块40和 确定模块50。
[0110]转化模块1〇,用于将多条防火墙策略的第一对象和第二对象转化成相同形式的 值。
[0111]防火墙的安全性基本都是通过防火墙的安全策略的配置实现的。防火墙策略列 表记录着所有待执行的防火墙策略的执行顺序,通常在执行防火墙安全检测时按照防火墙 策略列表从上往下依次执行每一条防火墙策略,当某一条防火墙策略匹配出被检测入侵对 象时,则在防火墙策略列表中位于该防火墙策略之后的防火墙策略将不执行。因此,应尽量 将匹配效果更好的防火墙策略置于防火墙策略列表前端,以提高防火墙安全监测的效率。 在进行防火墙策略的冗余检测过程中涉及的策略和策略相关对象较多,对象的种类较为多 样,例如IP地址,源端口,目的端口,协议等对象。上述第一对象和第二对象用于区分不同 类型的对象。通过将上述多样的对象全部转化成形同形式的值,这些值都是唯一的倌并目 可以比较大小关系,便于后续进行比较。
[0112]创建模块2〇,用于针对第一对象对应的值和第二对象对应的值分别创建第一多 叉树和第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由多个第二对象创 建,多叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的组合覆盖子节点。 [0 113]多个第一对象表示多个相同类型的一类对象,多个第二对象表示多个相同类型的 另一类对象。在将上述多条防火墙策略的对象都转换成相同形式的值后,查找出多条防火 墙策略中相同类型的对象所对应的值,创建一颗多叉树。例如,通过多个 IP对象对应的值 创建第一棵多叉树,通过多个协议对象对应的值创建第二棵多叉树。在创建多叉树的过程 中,首先需要判断每个对象对应的值的大小,取值大的对象对应于该多叉树的父节点,值小 的对象对应于该多叉树的子节点,多叉树的每个节点除了包括对象对应的值外,还包括该 对象对应的策略或策略列表,该策略列表是指该策略在防火墙保护过程中执行的顺序。此 夕卜,每个策略可以对应一棵多叉树的一个或多个节点,例如,防火墙策略包含两个 IP对象 IP1和IP2,则在基于IP对象对应的值创建的多叉树中,防火墙策略包括2个节点。
[0114]在一棵多叉树中,多叉树的父节点一定覆盖多叉树的子节点,子节点的所有下一 级子节点的组合可能覆盖上述子节点,也可能不能覆盖上述子节点。如图3所示,一颗多叉 树包含10个节点nO?n9,从图中可以看出,nO覆盖为根节点,覆盖该多叉树所有的子节 点,而父节点覆盖子节点,例如nl为n3和n4的父节点, nl覆盖n3,同时也能覆盖n4。子节 点^所有下一级子节点的组合可能覆盖上述子节点,例如n4包含三个子节点 n6、n7和n9, 这三个子节点的组合可能覆盖父节点n4,也可能不覆盖父节点 n4,但是当父节点只有一^ 子节点时,则该子节点一定不能覆盖父节点,例如n2只包含n5 -个子节点,则n5不能覆盖 n2。本发明实施例只考虑多个子节点的组合能够覆盖父节点的情况。
[0115]计算模块30,用于计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点 被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其;^ 防火墙策略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防&墙 策略列表中先于待检测防火墙策略执行的防火墙策略。
[0116]通过上述步骤将所有防火墙策略的每个对象都对应于多叉树的一个节点,每一棵 多叉树的节点也就相应的对应一条防火墙策略,例如防火墙策略^的协议对象对应于一颗 多叉树的节点n,则该多叉树的节点n也相应的对应于防火墙策略 r。检测待检测防火墙策 略的冗余情况,相当于计算该待检测防火墙策略对应的所有多叉树的节点被防火墙列表中 $他防火墙策略所对应的多叉树的节点覆盖的情况,此处,其他防火墙策略可以是防火墙 策略列表中除了待检测防火墙策略之外的所有防火墙策略,即考虑多叉树节点中除待检测 防火墙策略对应的节点之外所有的节点对待检测防火墙策略对应的节点的覆盖情况,由于 全面的考虑了防火墙策略列表中除待检测防火墙策略之外的所有防火墙策略,因此可以检 测出防火墙策略列表中所有冗余的防火墙策略。其他防火墙策略也可以是防火墙策略列表 中先于待检测防火墙策略执行的防火墙策略,即不考虑位于待检测防火墙策略之后执行的 防火墙策略对应的节点对待检测防火墙策略对应的节点的覆盖情况,由于避免了位于待检 测防火墙魏之織行_火墙製觀组合麟侧防火職_驢,_可以提高 ^个防火墙安全翻的鮮,这細为自待检賺火職略碰测为冗細,则将其从防 火墙策略織巾戀,碰碰火墙安全翻j时由位于鱗翻_火墙獅之織行的防 ^墙策略碰火墙猶醜合执行雜翻防火墙策嶋哑功能,翻觀更多的时间 才能够匹配出被检测入侵对象,造成防火墙安全检测的效率降低。
[0117] 点集合为待检测防火墙策略对应的节点被其他防火墙策略对应的节占覆盖的 ,有,点和或节点组合的集合,例如,待检测防火墙策略对应两棵多叉树,分别是^ 一多叉 =和^二多叉树,其他的防火墙策略包括第二防火墙策略,如果待检謙火墙策略对应的 叉働节点被第 二防火墙策輯应的第-多叉麵节点臓細同时,待检测防火 策略对应的第二多叉湖节点被第二防火職略对应_ 二多叉_节点臟盖 又防火墙策輔盖待检灘火麟略,臟第二防火·略_的节点为该节点集合的- 丨兀素。
[0118]判断模块40,用于判断节点集合是否为空集。 模用于当觸出节点集合不为空集时,麵定待·火墙策略是冗 =防火±0獅,当麵出节点集合为空細,麵定待翻防火墙魏不魏余防火墙策
[0120]当T点集合为空集,说明不存在其他防火墙策略或是其他几个防火墙策略的组合 覆盖待检测防火墙策略,则确定待检测防火墙策略不是冗余的防火墙策略。当节点集合不 为空集时,则说明至少存在一个其他的防火墙策略或是一个其他几个防火墙策略的组合覆 盖待检测防火墙策略,则确定待检测防火墙策略是冗余的防火墙策略。
[0121]本发明实施例通过转化模块10将多个防火墙策略的对象转化成相同形式的值, 创建模块20根据相同类型的对象对应的值创建多叉树,计算模块3〇计算待检测防火墙策 略对应的所有多叉树的节点被其他防火墙策略所对应的多叉树的节点覆盖的节点集合,通 过判断模块40判断上述节点集合是否为空集来确定待检测防火墙策略是否冗余,当节点 集Θ不为i集时,则待检测防火墙束略是几余防火墙策略,当节点集合为空集时待检测防 火墙策略不是冗余防火墙策略。解决了现有技术中不能同时将待检测防火墙策略与多个其 他的防火墙策略进行比较实现冗余检测的问题。此外,由于所有类型的对象都化为相同形 式的值,并创建多叉树来实现防火墙策略的冗余检测,该方法可以对防火墙策略中的不同 类型的对象进行比较,具有较好的通用性。
[0122]图7是根据本发明第二实施的防火墙策略冗余检测装置的示意图。
[0123]#如图7所示,该装置包括:转化模块1〇,创建模块2〇,计算模块 3〇,判断模块4〇和 确定模块50,其中,计算模块30包括第一查找单元3〇2、第一运算单元3〇4和第二运算单元 306。
[0124]第一查找单元3〇2,用于分别查找待检测防火墙策略的每个对象对应的多叉树的 节点的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,覆盖分支为 经过待检测防火墙策略的对象对应的多叉树的节点的路径,路径从多叉树的根节点起始至 覆盖多叉树的节点的最底层的子节点终止。 …
[0125] 一覆盖分支上的节点或节点组合可以覆盖待检测防火墙策略对应的节点的,如 图4所不,该多叉树包括1〇个节点,分别是11〇(〇_〇〇〇/ 〇,£11^,;^),111(1〇. 1〇〇.7.1724, r2) , n2 (10. 100. 0. 1/24, r3) , n3 (10. 100. 7. 1/28, r4) , n4 (10. l〇〇. 7. 128/28, r5), n5(10. 100.8. 1/29,r4), n6(10. 100. 7. 1/29,r6), n7(10. 100.8.9/29,r7), n8 (10. 100. 7· 9/30'r8),n9 (10. l〇0_ 7. 13/30, r9)。其中每个节点包括每个对象转化后的值 和该对象所属的防火墙策略,例如节点nl,包括1〇. 1〇〇. 7· 1/24,r2,其中1〇· 1〇〇·7· 1/24为 对象对应的值,为该对象所属的防火墙策略。假设待检测防火墙ζ策略为r4,该多叉树的 其他TI点对应的防火墙束略的执行都先于 r4,节点η3为待检测防火墙策略r4对应的节点。 该防火墙策略r4对应的节点n3的覆盖分支有如下三种情况:
[0126] 覆盖分支1 :节点(n0, nl,n6),对应于策略(ri,r2, r6);
[0127] 覆盖分支2:节点(11〇,111,117,118),对应于策略& 1,1_277,抑);
[0128] 覆盖分支 3 :节点(n〇, nl,n7, n9),对应于策略(rl,r2, r7, r9)。
[0129]可以看出,上述二条覆盖分支分别都经过防火墙策略r4对应的节点n3。
[0130] ^盖分支1查找为例,由于节点n0和节点nl分别都覆盖节点 n3,节点他和节 点n7组合覆盖节点n3,因此节点n〇、节点nl和节点n6组成一条覆盖分支,但是如若节点 η3只有-个子节点ne,则节点ne不能覆盖节点必则覆盖分支中只包含节点^?和节点nl: [0 131 ]如果待检测防火墙策略对应于一颗多叉树的多个节点,则需要分别计算每个节点 的覆盖分支。如图4中,防火墙策略r4对应节点 n3和节点n5,则该防火墙策略r4对应的 节点的覆盖分支如下:
[0132]覆盖分支1 :节点(nO, nl,n6),对应于策略(rl, r2, r6);
[0133] 覆盖分支2:节点(11〇,111,117,118),对应于策略(1'1^237,#);
[0134] 覆盖分支3:节点(11〇,111,117,119),对应于策略(1'1^237^9);
[0135]覆盖分支4 :节点(nO, n2),对应于策略(rl, r3)。
[0136]覆盖分支1至覆盖分支3对应于防火墙策略r4对应的节点n3,覆盖分支4对应于 防火墙策略Η对应的节点n5。
[0137]待检测防火墙策略的其他对象对应的多叉树的覆盖分支的查找同上述方法,在此 不再赘述。
[0138]要查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,需要遍历 多叉树的节点。多叉树的遍历采用深度遍历方法,根节点信息传递给子节点,叶子节点信息 传递给父节点。由于在判断策略覆盖情况时,策略列表中的每个策略都需要遍历多叉树,为 了减少遍历次数,需要将第一次遍历结果存储在Map<CIDR,节点〉。这样每次策略遍历时, 只需要从Map中根据该策略对象的每个ciDR值可找到相应的节点。每个节点通过一定的操 作可获取父Tt 点或子节点列表:例如 getParentNode,getChildrenListNode,isRootNode 等操作方法。
[0139]查找待检测防火墙策略对应的一棵多叉树的节点的覆盖分支如下:
[0M0]待检测防火墙策略对应的一棵多叉树的节点集合为:Νω = {Nx,Ny,Nz,…丨,其 中,i表示第i棵多叉树,Nx、Ny、Nz表示多叉树的节点。
[0141]其中Nx节点的覆盖情况s(Nx) = Sl(Nx) {}+S2(Nx) {},S1表示父节点覆盖策略列 表,S2表示子节点组合覆盖策略列表(子节点组合后的CIDR值等于Νχ节点的CIDR值)。 [0142] 则Nx的覆盖分支计算如下:
[0143] B(Nx) = Σ (Sl(Nx) U B2(Nx)),B表示覆盖分支,B2表示S2子节点组合产生的覆 盖分支
[0144] B2计算如下公式所示:
[0145] Β2(Νχ) = Σ (S2' (Nx) U B2' (Nx)),S2' (Nx)表示 Nx 节点 S2 集合中离散子 节点(不包括B2,涵盖的子节点),B2' (Nx)表示S2集合中那些子节点需通过下一级子 节点组合产生的CIDR值与父节点一致的那些分支。
[0146] 同理依次递归,可以找出所有B2覆盖分支。
[0147]通过以上公式可推断出Nx节点所有的覆盖分支B(Nx)。
[0148]第一运算单元304,用于第一多叉树的覆盖分支中的每个覆盖分支依次与第二多 叉树的覆盖分支中的每个覆盖分支进行交集运算,得到分支集合。
[0149]第二运算单元3〇6,用于将分支集合进行并集运算得到节点集合。
[0150]所有分支并集后即可得到该待检测防火墙策略的覆盖节点集合。
[0151] S(x) = B1 (X) U B2(x) U B3(x) U …U Bn(x),
[0152]其中,x表不防火墙策略,S (x)表不待检测防火墙策略的覆盖节点集合,Bi (x)表 示防火墙策略X在经过多棵多叉树遍历后得到的一个分支B1,同理,Bn (x)表示防火墙策略 X在经过多棵多叉树遍历后得到的一个分支Bn。
[0153]本发明实施例通过第一查找单元302查找待检测防火墙策略的每个对象对应的 多叉树的节点的覆盖分支,并通过第一运算单元304将每棵多叉树的覆盖分支依次与其 他多叉树的覆盖分支进行交集运算得到符合所有多叉树的分支集合,再通过第二运算单元 3〇6 分支集合进行并集运算得到节点集合,当节点集合不为空集时该待检测防火墙策略 则为冗余防火墙策略。由于只要包含待检测防火墙策略对应的节点的路径都为覆盖分支 因此待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分'支比较容易查找并且数 量不大,减少了遍历多棵多叉树遍历的次数,使得进行多棵多叉树遍历时效率较高,有效提 尚了防火墙策略冗余检测的检测效率。
[0154]图8是根据本发明第三实施的防火墙策略冗余检测装置的示意图。
[0155]如图8所示,该装置包括:转化模块1〇,创建模块2〇,计算模块3〇,判断模块 4〇和 确定模块50,其中,计算模块3〇包括第二查找单元3〇8和第三运算单元31〇。
[0156]第二查找单元308,用于查找其他的防火墙策略节点中同时覆盖待检测防火墙策 略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节占 集合,其中,第一多叉树节点集合由查找第一多叉树得到,第二多叉树节卢集合由查找第= 多叉树得到。 --
[0157]如图4所示,防火墙策略r4对应于该多叉树两个节点"和邱,令防火墙策略r4 为待检测防火墙策略。则同时覆盖节点n3和n5的其他的防火墙策略对应的节点集合为 {n0, nl+n2, n2+n6+n7, n2+n6+n8+n9},对应的防火墙策略的集合为{rl,r2+r3, r3+r6+r7, r3 +r6+r8+r9}〇
[0158]通过上述同样的方法查找该待检测防火墙策略对应的其他多叉树的节点集合。 [0159]第三运算单元310,用于第一多叉树节点集合中的每一个依次和第二多叉树节卢 集合中的每一个进行交集运算,得到节点集合。 ^
[0160]通过将多棵多叉树的节点集合进行交集运算,得到符合多棵多叉树的节点集合, 即交集运算得到的节点集合中的节点在多棵多叉树中都能覆盖待检测防火墙策略的节点。 [0161]当待检测防火墙对应2棵以上的多叉树时,按照上述相同的方法,将前两棵多叉 树得到的节点集合中的每一个依次和第三棵多叉树的节点集合的每一进行交集,依次类推 其他的多叉树。
[0162]本发明实施例通过第二查找单元308分别查找待检测防火墙策略对应的每颗多 叉树的节点被其他的防火墙策略对应的节点覆盖的节点集合,再通过第三运算单元310将 多棵多叉树的节点集合进行交集运算得到符合多棵多叉树的节点集合。通过直接查找待检 测防火墙策略对应的每一棵多叉树的节点被其他防火墙策略对应的多叉树的节点覆盖的 节点集合,实现过程更为直接便于用户易理解。
[0163]优选地,为了方便的实现将防火墙策略的对象转换成相同形式的值,并保证每个 防火墙策略的对象对应的值的唯一性,转化模块10包括:编码单元,用于根据无类别域际 路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对 象对应的CIDR值和第二对象对应的CIDR值。
[0164]无类别域际路由选择CIDR是一种用于给用户分配IP地址以及在互联网上有效地 路由IP数据包的对IP地址进行归类的方法。通过采用CIDR编码方法对防火墙策略的对 象进行编码,可以得到一个唯一的CIDR值,该CIDR值为一个地址形式的值,实现过程简单 方便。
[0165] 可选地,编码单元包括:第一转换单元,用于将防火墙策略的第一对象和第二对象 转化成数字;第二转换单元,用于将数字转化成ip地址格式的值;以及第三转换单元,用于 根据CIDR编码方法将IP地址格式的值转化成CIDR值,得到第一对象对应的CIDR值和第 二对象对应的CIDR值。
[0166] 防火墙策略的对象较为多样,可以分为两大类,一类是地址相关的对象,例如IP, IP/Mask,IP Range等。IP,IP/Mask可直接转换成对应的CIDR地址块;IP Range通过转换 可得到多个CIDR地址块;复杂情况下,有些通配符掩码可通过转换成多个IPRange,再转换 成多个CIDR地址块。同类属性,如果属性值为"Any ",则最大值可看成32位整形的最大值, 最小值为0,进一步可转换成一个特殊的CIDR地址块(0·0·0· 0/0)。另一类是地址无关的 对象,例如如IP包五元组:源地址(src_addr),源端口(src_port),目的地址(dst_addr), 目的端口(dst_port),协议(protocol)。对目的端口来说,可将协议(Protocol)左移16 位,然后加上目的端口号,即可得到一个32位整形的端口值,可将这个值转换成IP模式, 再进一步转换成CIDR地址块;同理,对源端口来说,可将协议(Protocol)左移16位,然后 加上源端口号,即可得到一个32位整形的端口值,再将这个值转换成IP模式,进一步可转 换成CIDR地址块。如果源端口或目的端口一方为空的情况下,可作为属性值"Any",也就 是最大值可看成32位整形的最大值,最小值为0,进一步可转换成一个特殊的CIDR地址块 (0·0·0· 0/0)。字符串类元素可通过hashcode进行数字化,得到数字值,再将该数字值转换 成IP地址格式的值,再进一步转换成CIDR地址块。本发明实施例可以实现将不同类型的 防火墙策略的对象都转换成对应的CIDR地址值。
[0167] 优选地,计算模块30还包括:剔除单元,用于剔除节点集合中被父节点覆盖的子 节点。
[0168] 多棵多叉树的覆盖分支并集组合后,将会得到待检测防火墙策略的所有覆盖组 合,根据多叉树的特点,父节点在多种组合中会重复利用,因此需要对组合后的节点集合剔 重。剔重可遵循最小组合原则,假如组合A当中包含了组合B,则A是一种冗余组合,例如, 组合A(R1,R2, R3),组合B(R2, R3),则剔重后的组合为组合B(R2, R3)。通过剔除节点集合 中被父节点覆盖的子节点,可以去除节点集合中的冗余节点。
[0169] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用 的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成 的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储 在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的 硬件和软件结合。
[0170] 以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人 员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、 等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种防火墙策略冗余检测方法,其特征在于,包括: 将防火墙策略列表中的防火墙策略的第一对象和第二对象转化成相同形式的值; 针对所述第一对象对应的值和所述第二对象对应的值分别创建第一多叉树和第二多 叉树,其中,所述第一多叉树由多个所述第一对象创建,所述第二多叉树由多个所述第二对 象创建,所述多叉树的父节点覆盖所述多叉树的子节点,所述子节点的所有下一级子节点 的组合覆盖所述子节点; 计算待检测防火墙策略对应的所述第一多叉树和所述第二多叉树的节点被其他防火 墙策略对应的所述第一多叉树和所述第二多叉树的节点覆盖的节点集合,其中,所述其他 防火墙策略为所述防火墙策略列表中除了所述待检测防火墙策略之外的所有防火墙策略 或所述防火墙策略列表中先于所述待检测防火墙策略执行的防火墙策略;以及 判断所述节点集合是否为空集,如果所述节点集合不为空集,则所述待检测防火墙策 略是冗余防火墙策略,否则所述待检测防火墙策略不是冗余防火墙策略。
2. 根据权利要求1所述的防火墙策略冗余检测方法,其特征在于,计算待检测防火墙 策略对应的所述第一多叉树和所述第二多叉树的节点被其他的防火墙策略对应的所述第 一多叉树和所述第二多叉树的节点覆盖的节点集合包括: 分别查找所述待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,得到第 一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,所述覆盖分支为经过所述待检测防 火墙策略的对象对应的多叉树的节点的路径,所述路径从所述多叉树的根节点起始至覆盖 所述多叉树的节点的最底层的子节点终止; 所述第一多叉树的覆盖分支中的每个所述覆盖分支依次与所述第二多叉树的覆盖分 支中的每个所述覆盖分支进行交集运算,得到分支集合;以及 将所述分支集合进行并集运算得到所述节点集合。
3. 根据权利要求1所述的防火墙策略冗余检测方法,其特征在于,计算待检测防火墙 策略对应的所述第一多叉树和所述第二多叉树的节点被所述其他的防火墙策略对应的所 述第一多叉树和所述第二多叉树的节点覆盖的节点集合包括: 查找所述其他的防火墙策略节点中同时覆盖所述待检测防火墙策略对应的多叉树的 节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点集合,其中,所述第 一多叉树节点集合由查找所述第一多叉树得到,所述第二多叉树节点集合由查找所述第二 多叉树得到;以及 所述第一多叉树节点集合中的每一个依次和所述第二多叉树节点集合中的每一个进 行交集运算,得到所述节点集合。
4. 根据权利要求1所述的防火墙策略冗余检测方法,其特征在于,将多条防火墙策略 的第一对象和第二对象转化成相同形式的值包括: 根据无类别域际路由选择CIDR编码方法分别对所述防火墙策略的第一对象和第二对 象进行编码,得到所述第一对象对应的CIDR值和所述第二对象对应的CIDR值。
5. 根据权利要求4所述的防火墙策略冗余检测方法,其特征在于,当所述防火墙策略 的对象不为地址格式时,根据无类别域际路由选择CIDR编码方法分别对所述防火墙策略 的第一对象和第二对象进行编码,得到所述第一对象对应的CIDR值和所述第二对象对应 的CIDR值包括: 将所述防火墙策略的第一对象和第二对象转化成数字; 将所述数字转化成IP地址格式的值;以及 根据CIDR编码方法将所述IP地址格式的值转化成CIDR值,得到所述第一对象对应的 CIDR值和所述第二对象对应的CIDR值。
6. 根据权利要求2所述的防火墙策略冗余检测方法,其特征在于,将所述分支集合进 行并集运算得到所述节点集合之后,所述方法还包括: 剔除所述节点集合中被所述父节点覆盖的所述子节点。
7. -种防火墙策略冗余检测装置,其特征在于,包括: 转化模块,用于将多条防火墙策略的第一对象和第二对象转化成相同形式的值; 创建模块,用于针对所述第一对象对应的值和所述第二对象对应的值分别创建第一多 叉树和第二多叉树,其中,所述第一多叉树由多个所述第一对象创建,所述第二多叉树由多 个所述第二对象创建,所述多叉树的父节点覆盖所述多叉树的子节点,所述子节点的所有 下一级子节点的组合覆盖所述子节点; 计算模块,用于计算待检测防火墙策略对应的所述第一多叉树和所述第二多叉树的节 点被其他的防火墙策略对应的所述第一多叉树和所述第二多叉树的节点覆盖的节点集合, 其中,所述其他防火墙策略为所述防火墙策略列表中除了所述待检测防火墙策略之外的所 有防火墙策略或所述防火墙策略列表中先于所述待检测防火墙策略执行的防火墙策略; 判断模块,用于判断所述节点集合是否为空集;以及 确定模块,用于当判断出所述节点集合不为空集时,则确定所述待检测防火墙策略是 冗余防火墙策略,当判断出所述节点集合为空集时,则确定所述待检测防火墙策略不是冗 余防火墙策略。
8. 根据权利要求7所述的防火墙策略冗余检测装置,其特征在于,所述计算模块包括: 第一查找单元,用于分别查找所述待检测防火墙策略的每个对象对应的多叉树的节点 的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,所述覆盖分支为 经过所述待检测防火墙策略的对象对应的多叉树的节点的路径,所述路径从所述多叉树的 根节点起始至覆盖所述多叉树的节点的最底层的子节点终止; 第一运算单元,用于所述第一多叉树的覆盖分支中的每个所述覆盖分支依次与所述第 二多叉树的覆盖分支中的每个所述覆盖分支进行交集运算,得到分支集合;以及 第二运算单元,用于将所述分支集合进行并集运算得到所述节点集合。
9. 根据权利要求7所述的防火墙策略冗余检测装置,其特征在于,所述计算模块包括: 第二查找单元,用于查找所述其他的防火墙策略节点中同时覆盖所述待检测防火墙策 略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点 集合,其中,所述第一多叉树节点集合由查找所述第一多叉树得到,所述第二多叉树节点集 合由查找所述第二多叉树得到;以及 第三运算单元,用于所述第一多叉树节点集合中的每一个依次和所述第二多叉树节点 集合中的每一个进行交集运算,得到所述节点集合。
10. 根据权利要求7所述的防火墙策略冗余检测装置,其特征在于,所述转化模块包 括: 编码单元,用于根据无类别域际路由选择CIDR编码方法分别对所述防火墙策略的 第一对象和第二对象进行编码,得到所述第一对象对应的CIDR值和所述第二对象对应的 CIDR 值。
11. 根据权利要求10所述的防火墙策略冗余检测装置,其特征在于,所述编码单元包 括: 第一转换单元,用于当所述防火墙策略的对象不为地址格式时,将所述防火墙策略的 第一对象和第二对象转化成数字; 第二转换单元,用于将所述数字转化成IP地址格式的值;以及 第三转换单元,用于根据CIDR编码方法将所述IP地址格式的值转化成CIDR值,得到 所述第一对象对应的CIDR值和所述第二对象对应的CIDR值。
12. 根据权利要求8所述的防火墙策略冗余检测装置,其特征在于,所述计算模块还包 括: 剔除单元,用于将所述分支集合进行并集运算得到所述节点集合之后,剔除所述节点 集合中被所述父节点覆盖的所述子节点。
【文档编号】H04L29/06GK104270384SQ201410557892
【公开日】2015年1月7日 申请日期:2014年10月20日 优先权日:2014年10月20日
【发明者】潘金平, 张烨, 蒋东毅 申请人:山石网科通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1