CN104270384B - 防火墙策略冗余检测方法及装置 - Google Patents
防火墙策略冗余检测方法及装置 Download PDFInfo
- Publication number
- CN104270384B CN104270384B CN201410557892.5A CN201410557892A CN104270384B CN 104270384 B CN104270384 B CN 104270384B CN 201410557892 A CN201410557892 A CN 201410557892A CN 104270384 B CN104270384 B CN 104270384B
- Authority
- CN
- China
- Prior art keywords
- node
- firewall policy
- multiway tree
- detected
- firewall
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种防火墙策略冗余检测方法及装置,该防火墙策略冗余检测方法包括:将防火墙策略列表中的防火墙策略的第一对象和第二对象转化成相同形式的值;针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和第二多叉树;计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合;以及判断节点集合是否为空集,如果节点集合不为空集,则待检测防火墙策略是冗余防火墙策略。本发明解决了不能同时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测的问题,进而达到了提高防火墙策略冗余检测的效率和准确率的效果。
Description
技术领域
本发明涉及互联网领域,具体而言,涉及一种防火墙策略冗余检测方法及装置。
背景技术
在安全网关产品中防火墙策略管理是非常重要的一个功能,防火墙的安全性基本都是通过防火墙的安全策略配置来实现的。同时防火墙策略管理的好坏会直接影响到整个防火墙吞吐效率。在策略管理当中,策略顺序决定了每个策略的位置,策略数量越大,或策略顺序不当,都可能会覆盖底层策略。策略的冗余检测以及策略相关对象的冗余检测就显得非常重要。策略的冗余检测主要是指策略列表当中的策略间相似性比较,比较方法主要是根据策略间同类属性进行比较,多个同类属性如果相同,则两个策略相同,否则两个策略不同。同理,策略涉及的对象比较也是采用同类属性进行比较,从而得出两个对象是否相同。在现有技术中,可实现两策略间对比(即一对一的比较),但对于一个策略同时与多个策略间的比较(即一对多的比较)目前还没有很好的实现方法。
现有技术中防火墙策略对比主要针对两个策略的浅层对比,每个属性采用不同的对比方法,方法通用性比较差;由于采用的只是浅层对比,对比深度有限,如遇到对象的多级嵌套,对比难度指数增加,两策略对比比较耗时。此外,由于现有的冗余检测手段主要是两个策略间的对比,从而确定两个策略间的冗余关系,但现实策略使用中更多的情况不仅仅是两个策略间的对比,还有多策略间的对比。一个策略可能会被另一个策略覆盖,但更多情况是一个策略会被很多的策略组合起来覆盖,现有的技术还无法实现这种多策略的组合覆盖检测。这种深层次的组合覆盖产生的冗余策略对安全隐患更大,如果没有很好的手段进行检测,会极大的威胁到防火墙的安全。
针对相关技术中不能同时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种防火墙策略冗余检测方法及装置,以解决不能同时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测问题。
为了实现上述目的,根据本发明的一个方面,提供了一种防火墙策略冗余检测方法。
根据本发明的防火墙策略冗余检测方法包括:将防火墙策略列表中的防火墙策略的第一对象和第二对象转化成相同形式的值;针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由多个第二对象创建,多叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的组合覆盖子节点;计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其他防火墙策略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防火墙策略列表中先于待检测防火墙策略执行的防火墙策略;以及判断节点集合是否为空集,如果节点集合不为空集,则待检测防火墙策略是冗余防火墙策略,否则待检测防火墙策略不是冗余防火墙策略。
进一步地,计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合包括:分别查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,覆盖分支为经过待检测防火墙策略的对象对应的多叉树的节点的路径,该路径从多叉树的根节点起始至覆盖多叉树的节点的最底层的子节点终止;第一多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖分支中的每个覆盖分支进行交集运算,得到分支集合;以及将分支集合进行并集运算得到节点集合。
进一步地,计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合包括:查找其他的防火墙策略节点中同时覆盖待检测防火墙策略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点集合,其中,第一多叉树节点集合由查找第一多叉树得到,第二多叉树节点集合由查找第二多叉树得到;以及第一多叉树节点集合中的每一个依次和第二多叉树节点集合中的每一个进行交集运算,得到节点集合。
进一步地,将多条防火墙策略的第一对象和第二对象转化成相同形式的值包括:根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
进一步地,当防火墙策略的对象不为地址格式时,根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值包括:将防火墙策略的第一对象和第二对象转化成数字;将数字转化成IP地址格式的值;以及根据CIDR编码方法将IP地址格式的值转化成CIDR值,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
进一步地,将分支集合进行并集运算得到节点集合之后,方法还包括:剔除节点集合中被父节点覆盖的子节点。
为了实现上述目的,根据本发明的另一方面,提供了一种防火墙策略冗余检测装置。
根据本发明的防火墙策略冗余检测装置包括:转化模块,用于将多条防火墙策略的第一对象和第二对象转化成相同形式的值;创建模块,用于针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由多个第二对象创建,多叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的组合覆盖子节点;计算模块,用于计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其他防火墙策略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防火墙策略列表中先于待检测防火墙策略执行的防火墙策略;判断模块,用于判断节点集合是否为空集;以及确定模块,用于当判断出节点集合不为空集时,则确定待检测防火墙策略是冗余防火墙策略,当判断出节点集合为空集时,则确定待检测防火墙策略不是冗余防火墙策略。
进一步地,计算模块包括:第一查找单元,用于分别查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,覆盖分支为经过待检测防火墙策略的对象对应的多叉树的节点的路径,路径从多叉树的根节点起始至覆盖多叉树的节点的最底层的子节点终止;第一运算单元,用于第一多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖分支中的每个覆盖分支进行交集运算,得到分支集合;以及第二运算单元,用于将分支集合进行并集运算得到节点集合。
进一步地,计算模块包括:第二查找单元,用于查找其他的防火墙策略节点中同时覆盖待检测防火墙策略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点集合,其中,第一多叉树节点集合由查找第一多叉树得到,第二多叉树节点集合由查找第二多叉树得到;以及第三运算单元,用于第一多叉树节点集合中的每一个依次和第二多叉树节点集合中的每一个进行交集运算,得到节点集合。
进一步地,转化模块包括:编码单元,用于根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
进一步地,当防火墙策略的对象不为地址格式时,编码单元包括:第一转换单元,用于将防火墙策略的第一对象和第二对象转化成数字;第二转换单元,用于将数字转化成IP地址格式的值;以及第三转换单元,用于根据CIDR编码方法将IP地址格式的值转化成CIDR值,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
进一步地,将分支集合进行并集运算得到节点集合之后,计算模块还包括:剔除单元,用于剔除节点集合中被父节点覆盖的子节点。
通过本发明,采用将多个防火墙策略的对象创建对应的多叉树进行防火墙策略冗余检测,解决了不能同时将待检测防火墙策略与多个防火墙策略进行比较实现冗余检测的问题,进而达到了提高防火墙策略冗余检测的效率和准确率的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明第一实施例的防火墙策略冗余检测方法的流程图;
图2是根据本发明第二实施例的防火墙策略冗余检测方法的流程图;
图3是根据本发明实施例的第一多叉树的示意图;
图4是根据本发明实施例的第二多叉树的示意图;
图5是根据本发明第三实施例的防火墙策略冗余检测方法的流程图;
图6是根据本发明第一实施例的防火墙策略冗余检测装置的示意图;
图7是根据本发明第二实施例的防火墙策略冗余检测装置的示意图;以及
图8是根据本发明第三实施例的防火墙策略冗余检测装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种防火墙策略冗余检测方法,图1是根据本发明第一实施例的防火墙策略冗余检测方法的流程图。
如图1所示,该方法包括如下的步骤S102至步骤S108:
步骤S102:将防火墙策略列表中的防火墙策略的第一对象和第二对象转化成相同形式的值。
防火墙的安全性基本都是通过防火墙的安全策略的配置实现的。防火墙策略列表记录着所有待执行的防火墙策略的执行顺序,通常在执行防火墙安全检测时按照防火墙策略列表从上往下依次执行每一条防火墙策略,当某一条防火墙策略匹配出被检测入侵对象时,则在防火墙策略列表中位于该防火墙策略之后的防火墙策略将不执行。因此,应尽量将匹配效果更好的防火墙策略置于防火墙策略列表前端,以提高防火墙安全监测的效率。在进行防火墙策略的冗余检测过程中涉及的策略和策略相关对象较多,对象的种类较为多样,例如IP地址,源端口,目的端口,协议等对象。上述第一对象和第二对象用于区分不同类型的对象。通过将上述多样的对象全部转化成形同形式的值,这些值都是唯一的值,并且可以比较大小关系,便于后续进行比较。
步骤S104:针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由多个第二对象创建,多叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的组合覆盖上述子节点。
上述多个第一对象表示相同类型的一类对象,多个第二对象表示相同类型的另一类对象。在将上述多条防火墙策略的对象都转换成相同形式的值后,查找出多条防火墙策略中相同类型的对象所对应的值,创建一颗多叉树。例如,通过多个IP对象对应的值创建第一棵多叉树,通过多个协议对象对应的值创建第二棵多叉树。在创建多叉树的过程中,首先需要判断每个对象对应的值的大小,取值大的对象对应于该多叉树的父节点,值小的对象对应于该多叉树的子节点,多叉树的每个节点除了包括对象对应的值外,还包括该对象对应的策略或策略列表,该策略列表是指该策略在防火墙保护过程中执行的顺序。此外,每个策略可以对应一棵多叉树的一个或多个节点,例如,防火墙策略包含两个IP对象IP1和IP2,则在基于IP对象对应的值创建的多叉树中,防火墙策略包括2个节点。
在一棵多叉树中,多叉树的父节点一定覆盖多叉树的子节点,子节点的所有下一级子节点的组合可能覆盖上述子节点,也可能不能覆盖上述子节点。如图3所示,一颗多叉树包含10个节点n0~n9,从图中可以看出,n0覆盖为根节点,覆盖该多叉树所有的子节点,而父节点覆盖子节点,例如n1为n3和n4的父节点,n1覆盖n3,同时也能覆盖n4。子节点的所有下一级子节点的组合可能覆盖上述子节点,例如n4包含三个子节点n6、n7和n9,这三个子节点的组合可能覆盖父节点n4,也可能不覆盖父节点n4,但是当父节点只有一个子节点时,则该子节点一定不能覆盖父节点,例如n2只包含n5一个子节点,则n5不能覆盖n2。本发明实施例只考虑多个子节点的组合能够覆盖父节点的情况。
步骤S106:计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其他防火墙策略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防火墙策略列表中先于待检测防火墙策略执行的防火墙策略。
通过上述步骤将所有防火墙策略的每个对象都对应于多叉树的一个节点,每一棵多叉树的节点也就相应的对应一条防火墙策略,例如防火墙策略r的协议对象对应于一颗多叉树的节点n,则该多叉树的节点n也相应的对应于防火墙策略r。检测待检测防火墙策略的冗余情况,相当于计算该待检测防火墙策略对应的所有多叉树的节点被防火墙列表中其他防火墙策略所对应的多叉树的节点覆盖的情况,此处,其他防火墙策略可以是防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略,即考虑多叉树节点中除待检测防火墙策略对应的节点之外所有的节点对待检测防火墙策略对应的节点的覆盖情况,由于全面的考虑了防火墙策略列表中除待检测防火墙策略之外的所有防火墙策略,因此可以检测出防火墙策略列表中所有冗余的防火墙策略。其他防火墙策略也可以是防火墙策略列表中先于待检测防火墙策略执行的防火墙策略,即不考虑位于待检测防火墙策略之后执行的防火墙策略对应的节点对待检测防火墙策略对应的节点的覆盖情况,由于避免了位于待检测防火墙策略之后执行的防火墙策略或其组合对待检测防火墙策略的覆盖,因此可以提高整个防火墙安全检测的效率,这是因为当待检测防火墙策略被检测为冗余时,则将其从防火墙策略列表中剔除,在进行防火墙安全检测时由位于该待检测防火墙策略之后执行的防火墙策略或防火墙策略的组合执行该待检测防火墙策略的匹配功能,需要消耗更多的时间才能够匹配出被检测入侵对象,造成防火墙安全检测的效率降低。
节点集合为待检测防火墙策略对应的节点被其他防火墙策略对应的节点覆盖的所有节点和或节点组合的集合,例如,待检测防火墙策略对应两棵多叉树,分别是第一多叉树和第二多叉树,其他的防火墙策略包括第二防火墙策略,如果待检测防火墙策略对应的第一多叉树的节点被第二防火墙策略对应的第一多叉树的节点所覆盖的同时,待检测防火墙策略对应的第二多叉树的节点被第二防火墙策略对应的第二多叉树的节点所覆盖,则第二防火墙策略覆盖待检测防火墙策略,则该第二防火墙策略对应的节点为该节点集合的一个元素。
步骤S108:判断节点集合是否为空集,如果节点集合不为空集,则待检测防火墙策略是冗余防火墙策略,否则待检测防火墙策略不是冗余防火墙策略。
当节点集合为空集,说明不存在其他防火墙策略或是其他几个防火墙策略的组合覆盖待检测防火墙策略,则待检测防火墙策略不是冗余的防火墙策略。当节点集合不为空集时,则说明至少存在一个其他的防火墙策略或是一个其他几个防火墙策略的组合覆盖待检测防火墙策略,则待检测防火墙策略是冗余的防火墙策略。
本发明实施例通过将多个防火墙策略的对象转化成相同形式的值,根据相同类型的对象对应的值创建多叉树,并计算待检测防火墙策略对应的所有多叉树的节点被其他防火墙策略所对应的多叉树的节点覆盖的节点集合,通过判断上述节点集合是否为空集来确定待检测防火墙策略是否冗余,当节点集合不为空集时,则待检测防火墙策略是冗余防火墙策略,当节点集合为空集时待检测防火墙策略不是冗余防火墙策略。解决了现有技术中不能同时将待检测防火墙策略与多个其他的防火墙策略进行比较实现冗余检测的问题。此外,由于所有类型的对象都化为相同形式的值,并创建多叉树来实现防火墙策略的冗余检测,该方法可以对防火墙策略中的不同类型的对象进行比较,具有较好的通用性。
图2是根据本发明第二实施例的防火墙策略冗余检测方法的流程图。如图2所示,该防火墙策略冗余检测方法包括如下的步骤S202至步骤S212:
步骤S202:同上述步骤S102,在此不再赘述。
步骤S204:同上述步骤S104,在此不再赘述。
步骤S206:分别查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,覆盖分支为经过待检测防火墙策略的对象对应的多叉树的节点的路径,路径从多叉树的根节点起始至覆盖多叉树的节点的最底层的子节点终止。
覆盖分支上的节点或节点组合可以覆盖待检测防火墙策略对应的节点的,如图4所示,该多叉树包括10个节点,分别是n0(0.0.0.0/0,any,r1),n1(10.100.7.1/24,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(10.100.8.9/29,r7),n8(10.100.7.9/30,r8),n9(10.100.7.13/30,r9)。其中每个节点包括每个对象转化后的值和该对象所属的防火墙策略,例如节点n1,包括10.100.7.1/24,r2,其中10.100.7.1/24为对象对应的值,r2为该对象所属的防火墙策略。假设待检测防火墙策略为r4,该多叉树的其他节点对应的防火墙策略的执行都先于r4,节点n3为待检测防火墙策略r4对应的节点。该防火墙策略r4对应的节点n3的覆盖分支有如下三种情况:
覆盖分支1:节点(n0,n1,n6),对应于策略(r1,r2,r6);
覆盖分支2:节点(n0,n1,n7,n8),对应于策略(r1,r2,r7,r8);
覆盖分支3:节点(n0,n1,n7,n9),对应于策略(r1,r2,r7,r9)。
可以看出,上述三条覆盖分支分别都经过防火墙策略r4对应的节点n3。
以覆盖分支1查找为例,由于节点n0和节点n1分别都覆盖节点n3,节点n6和节点n7组合覆盖节点n3,因此节点n0、节点n1和节点n6组成一条覆盖分支,但是如若节点n3只有一个子节点n6,则节点n6不能覆盖节点n3,则覆盖分支中只包含节点n0和节点n1。
如果待检测防火墙策略对应于一颗多叉树的多个节点,则需要分别计算每个节点的覆盖分支。如图4中,防火墙策略r4对应节点n3和节点n5,则该防火墙策略r4对应的节点的覆盖分支如下:
覆盖分支1:节点(n0,n1,n6),对应于策略(r1,r2,r6);
覆盖分支2:节点(n0,n1,n7,n8),对应于策略(r1,r2,r7,r8);
覆盖分支3:节点(n0,n1,n7,n9),对应于策略(r1,r2,r7,r9);
覆盖分支4:节点(n0,n2),对应于策略(r1,r3)。
覆盖分支1至覆盖分支3对应于防火墙策略r4对应的节点n3,覆盖分支4对应于防火墙策略r4对应的节点n5。
待检测防火墙策略的其他对象对应的多叉树的覆盖分支的查找同上述方法,在此不再赘述。
要查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,需要遍历多叉树的节点。多叉树的遍历采用深度遍历方法,根节点信息传递给子节点,叶子节点信息传递给父节点。由于在判断策略覆盖情况时,策略列表中的每个策略都需要遍历多叉树,为了减少遍历次数,需要将第一次遍历结果存储在Map<CIDR,节点>。这样每次策略遍历时,只需要从Map中根据该策略对象的每个CIDR值可找到相应的节点。每个节点通过一定的操作可获取父节点或子节点列表:例如getParentNode,getChildrenListNode,isRootNode等操作方法。
查找待检测防火墙策略对应的一棵多叉树的节点的覆盖分支如下:
待检测防火墙策略对应的一棵多叉树的节点集合为:N(i)={Nx,Ny,Nz,…},其中,i表示第i棵多叉树,Nx、Ny、Nz表示多叉树的节点。
其中Nx节点的覆盖情况S(Nx)=S1(Nx){}+S2(Nx){},S1表示父节点覆盖策略列表,S2表示子节点组合覆盖策略列表(子节点组合后的CIDR值等于Nx节点的CIDR值)。
则Nx的覆盖分支计算如下:
B(Nx)=Σ(S1(Nx)∪B2(Nx)),B表示覆盖分支,B2表示S2子节点组合产生的覆盖分支。
B2计算如下公式所示:
B2(Nx)=Σ(S2′(Nx)∪B2′(Nx)),S2′(Nx)表示Nx节点S2集合中离散子节点(不包括B2′涵盖的子节点),B2′(Nx)表示S2集合中那些子节点需通过下一级子节点组合产生的CIDR值与父节点一致的那些分支。
同理依次递归,可以找出所有B2覆盖分支。
通过以上公式可推断出Nx节点所有的覆盖分支B(Nx)。
步骤S208:第一多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖分支中的每个覆盖分支进行交集运算,得到分支集合。
例如,B是T多叉树上待检测防火墙策略被覆盖的一个覆盖分支,同时有6棵多叉树,分别对应于覆盖分支Bj至分支覆盖Bo。通过如下遍历算法计算该待检测防火墙策略同时被多棵多叉树覆盖的分支。
Bx就是多棵多叉树的覆盖分支求交集后获得的一个的分支,该分支所包含的策略或策略组合在多棵多叉树中都覆盖待检测防火墙策略。
每一个Bx分支由若干个节点组成,每个节点由一个或多个防火墙策略构成,则一个Bx分支包括的策略集合如下:
R(x)={Rx(1),Rx(2),Rx(3),…,Rx(n)},
其中,R(x)表示Bx分支对应的一组策略的集合,n表示有n个节点,Rx表示Bx分支上的策略。同上方法,遍历所有多叉树的覆盖分支,得到所有符合多棵多叉树的分支集合。
步骤S210:将分支集合进行并集运算得到节点集合。
所有分支并集后即可得到该待检测防火墙策略的覆盖节点集合。
S(x)=B1(x)∪B2(x)∪B3(x)∪…∪Bn(x),
其中,x表示防火墙策略,S(x)表示待检测防火墙策略的覆盖节点集合,B1(x)表示防火墙策略x在经过多棵多叉树遍历后得到的一个分支B1,同理,Bn(x)表示防火墙策略x在经过多棵多叉树遍历后得到的一个分支Bn。
步骤S212:同上述步骤S108,在此不再赘述。
本发明实施例通过查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,并将每棵多叉树的覆盖分支依次与其他多叉树的覆盖分支进行交集运算得到符合所有多叉树的分支集合,再将分支集合进行并集运算得到节点集合,当节点集合不为空集时则该待检测防火墙策略则为冗余防火墙策略。由于只要包含待检测防火墙策略对应的节点的路径都为覆盖分支,因此待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支比较容易查找并且数量不大,减少了遍历多棵多叉树遍历的次数,使得进行多棵多叉树遍历时效率较高,有效提高了防火墙策略冗余检测的检测效率。
图5是根据本发明第三实施例的防火墙策略冗余检测方法的流程图。如图5所示,该防火墙策略冗余检测方法包括如下的步骤S502至步骤S510:
步骤S502:同上述步骤S102,在此不再赘述。
步骤S504:同上述步骤S104,在此不再赘述。
步骤S506:查找其他的防火墙策略节点中同时覆盖待检测防火墙策略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点集合,其中,第一多叉树节点集合由查找第一多叉树得到,第二多叉树节点集合由查找第二多叉树得到。
如图4所示,防火墙策略r4对应于该多叉树两个节点n3和n5,令防火墙策略r4为待检测防火墙策略。则同时覆盖节点n3和n5的其他的防火墙策略对应的节点集合为{n0,n1+n2,n2+n6+n7,n2+n6+n8+n9},对应的防火墙策略的集合为{r1,r2+r3,r3+r6+r7,r3+r6+r8+r9}。
通过上述同样的方法查找该待检测防火墙策略对应的其他多叉树的节点集合。
步骤S508:第一多叉树节点集合中的每一个依次和第二多叉树节点集合中的每一个进行交集运算,得到节点集合。
通过将多棵多叉树的节点集合进行交集运算,得到符合多棵多叉树的节点集合,即交集运算得到的节点集合中的节点在多棵多叉树中都能覆盖待检测防火墙策略的节点。
当待检测防火墙对应2棵以上的多叉树时,按照上述相同的方法,将前两棵多叉树得到的节点集合中的每一个依次和第三棵多叉树的节点集合的每一进行交集,依次类推其他的多叉树。
步骤S510:同上述步骤S108,在此不再赘述。
本发明实施例通过分别查找待检测防火墙策略对应的每颗多叉树的节点被其他的防火墙策略对应的节点覆盖的节点集合,再将多棵多叉树的节点集合进行交集运算得到符合多棵多叉树的节点集合。通过直接查找待检测防火墙策略对应的每一棵多叉树的节点被其他防火墙策略对应的多叉树的节点覆盖的节点集合,实现过程更为直接便于用户易理解。
优选地,为了方便的实现将防火墙策略的对象转换成相同形式的值,并保证每个防火墙策略的对象对应的值的唯一性,将多条防火墙策略的第一对象和第二对象转化成相同形式的值包括:根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
无类别域际路由选择CIDR是一种用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。通过采用CIDR编码方法对防火墙策略的对象进行编码,可以得到一个唯一的CIDR值,该CIDR值为一个地址形式的值,实现过程简单方便。
可选地,当防火墙策略的对象不为地址格式时,根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值包括:将防火墙策略的第一对象和第二对象转化成数字;将数字转化成IP地址格式的值;以及根据CIDR编码方法将IP地址格式的值转化成CIDR值,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
防火墙策略的对象较为多样,可以分为两大类,一类是地址相关的对象,例如IP,IP/Mask,IP Range等。IP,IP/Mask可直接转换成对应的CIDR地址块;IP Range通过转换可得到多个CIDR地址块;复杂情况下,有些通配符掩码可通过转换成多个IP Range,再转换成多个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地址值。
优选地,将分支集合进行并集运算得到节点集合之后,方法还包括:剔除节点集合中被父节点覆盖的子节点。
多棵多叉树的覆盖分支并集组合后,将会得到待检测防火墙策略的所有覆盖组合,根据多叉树的特点,父节点在多种组合中会重复利用,因此需要对组合后的节点集合剔重。剔重可遵循最小组合原则,假如组合A当中包含了组合B,则A是一种冗余组合,例如,组合A(R1,R2,R3),组合B(R2,R3),则剔重后的组合为组合B(R2,R3)。通过剔除节点集合中被父节点覆盖的子节点,可以去除节点集合中的冗余节点。
本发明实施例的一个典型应用如下:假设防火墙策略115包括源地址address01,地址范围为(107.1.1.1-107.1.1.10),服务BT*、APP_IM,防火墙策略95包括源地址address02,地址范围(124.1.1.1-124.1.1.10),服务BT*、APP_IM和APP_P2P,防火墙策略26包括源地址107.1.1.8/255.255.255.255和124.1.1.7/255.255.255.255,服务QQ*、BT*。由于APP_IM是一个应用组,该组包含了应用QQ*,从而从服务覆盖角度看,防火墙策略115和防火墙策略95都覆盖了防火墙策略26。但是从源地址可以看出,防火墙策略115和防火墙策略95一起组合覆盖防火墙策略26。
从以上的描述中,可以看出,本发明实现了如下技术效果:
本发明实施例通过将多个防火墙策略的对象转化成相同形式的值,根据相同类型的对象对应的值创建多叉树,并计算待检测防火墙策略对应的所有多叉树的节点被其他防火墙策略所对应的多叉树的节点覆盖的节点集合,通过判断上述节点集合是否为空集来确定待检测防火墙策略是否冗余,当节点集合不为空集时,则待检测防火墙策略是冗余防火墙策略,当节点集合为空集时待检测防火墙策略不是冗余防火墙策略。解决了现有技术中不能同时将待检测防火墙策略与多个其他的防火墙策略进行比较实现冗余检测的问题。此外,由于所有类型的对象都化为相同形式的值,并创建多叉树来实现防火墙策略的冗余检测,该方法可以对防火墙策略中的不同类型的对象进行比较,具有较好的通用性。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种防火墙策略冗余检测装置。图6是根据本发明第一实施的防火墙策略冗余检测装置的示意图。
如图6所示,该装置包括:转化模块10,创建模块20,计算模块30,判断模块40和确定模块50。
转化模块10,用于将多条防火墙策略的第一对象和第二对象转化成相同形式的值。
防火墙的安全性基本都是通过防火墙的安全策略的配置实现的。防火墙策略列表记录着所有待执行的防火墙策略的执行顺序,通常在执行防火墙安全检测时按照防火墙策略列表从上往下依次执行每一条防火墙策略,当某一条防火墙策略匹配出被检测入侵对象时,则在防火墙策略列表中位于该防火墙策略之后的防火墙策略将不执行。因此,应尽量将匹配效果更好的防火墙策略置于防火墙策略列表前端,以提高防火墙安全监测的效率。在进行防火墙策略的冗余检测过程中涉及的策略和策略相关对象较多,对象的种类较为多样,例如IP地址,源端口,目的端口,协议等对象。上述第一对象和第二对象用于区分不同类型的对象。通过将上述多样的对象全部转化成形同形式的值,这些值都是唯一的值,并且可以比较大小关系,便于后续进行比较。
创建模块20,用于针对第一对象对应的值和第二对象对应的值分别创建第一多叉树和第二多叉树,其中,第一多叉树由多个第一对象创建,第二多叉树由多个第二对象创建,多叉树的父节点覆盖多叉树的子节点,子节点的所有下一级子节点的组合覆盖子节点。
多个第一对象表示多个相同类型的一类对象,多个第二对象表示多个相同类型的另一类对象。在将上述多条防火墙策略的对象都转换成相同形式的值后,查找出多条防火墙策略中相同类型的对象所对应的值,创建一颗多叉树。例如,通过多个IP对象对应的值创建第一棵多叉树,通过多个协议对象对应的值创建第二棵多叉树。在创建多叉树的过程中,首先需要判断每个对象对应的值的大小,取值大的对象对应于该多叉树的父节点,值小的对象对应于该多叉树的子节点,多叉树的每个节点除了包括对象对应的值外,还包括该对象对应的策略或策略列表,该策略列表是指该策略在防火墙保护过程中执行的顺序。此外,每个策略可以对应一棵多叉树的一个或多个节点,例如,防火墙策略包含两个IP对象IP1和IP2,则在基于IP对象对应的值创建的多叉树中,防火墙策略包括2个节点。
在一棵多叉树中,多叉树的父节点一定覆盖多叉树的子节点,子节点的所有下一级子节点的组合可能覆盖上述子节点,也可能不能覆盖上述子节点。如图3所示,一颗多叉树包含10个节点n0~n9,从图中可以看出,n0覆盖为根节点,覆盖该多叉树所有的子节点,而父节点覆盖子节点,例如n1为n3和n4的父节点,n1覆盖n3,同时也能覆盖n4。子节点的所有下一级子节点的组合可能覆盖上述子节点,例如n4包含三个子节点n6、n7和n9,这三个子节点的组合可能覆盖父节点n4,也可能不覆盖父节点n4,但是当父节点只有一个子节点时,则该子节点一定不能覆盖父节点,例如n2只包含n5一个子节点,则n5不能覆盖n2。本发明实施例只考虑多个子节点的组合能够覆盖父节点的情况。
计算模块30,用于计算待检测防火墙策略对应的第一多叉树和第二多叉树的节点被其他的防火墙策略对应的第一多叉树和第二多叉树的节点覆盖的节点集合,其中,其他防火墙策略为防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略或防火墙策略列表中先于待检测防火墙策略执行的防火墙策略。
通过上述步骤将所有防火墙策略的每个对象都对应于多叉树的一个节点,每一棵多叉树的节点也就相应的对应一条防火墙策略,例如防火墙策略r的协议对象对应于一颗多叉树的节点n,则该多叉树的节点n也相应的对应于防火墙策略r。检测待检测防火墙策略的冗余情况,相当于计算该待检测防火墙策略对应的所有多叉树的节点被防火墙列表中其他防火墙策略所对应的多叉树的节点覆盖的情况,此处,其他防火墙策略可以是防火墙策略列表中除了待检测防火墙策略之外的所有防火墙策略,即考虑多叉树节点中除待检测防火墙策略对应的节点之外所有的节点对待检测防火墙策略对应的节点的覆盖情况,由于全面的考虑了防火墙策略列表中除待检测防火墙策略之外的所有防火墙策略,因此可以检测出防火墙策略列表中所有冗余的防火墙策略。其他防火墙策略也可以是防火墙策略列表中先于待检测防火墙策略执行的防火墙策略,即不考虑位于待检测防火墙策略之后执行的防火墙策略对应的节点对待检测防火墙策略对应的节点的覆盖情况,由于避免了位于待检测防火墙策略之后执行的防火墙策略或其组合对待检测防火墙策略的覆盖,因此可以提高整个防火墙安全检测的效率,这是因为当待检测防火墙策略被检测为冗余时,则将其从防火墙策略列表中剔除,在进行防火墙安全检测时由位于该待检测防火墙策略之后执行的防火墙策略或防火墙策略的组合执行该待检测防火墙策略的匹配功能,需要消耗更多的时间才能够匹配出被检测入侵对象,造成防火墙安全检测的效率降低。
节点集合为待检测防火墙策略对应的节点被其他防火墙策略对应的节点覆盖的所有节点和或节点组合的集合,例如,待检测防火墙策略对应两棵多叉树,分别是第一多叉树和第二多叉树,其他的防火墙策略包括第二防火墙策略,如果待检测防火墙策略对应的第一多叉树的节点被第二防火墙策略对应的第一多叉树的节点所覆盖的同时,待检测防火墙策略对应的第二多叉树的节点被第二防火墙策略对应的第二多叉树的节点所覆盖,则第二防火墙策略覆盖待检测防火墙策略,则该第二防火墙策略对应的节点为该节点集合的一个元素。
判断模块40,用于判断节点集合是否为空集。
确定模块50,用于当判断出节点集合不为空集时,则确定待检测防火墙策略是冗余防火墙策略,当判断出节点集合为空集时,则确定待检测防火墙策略不是冗余防火墙策略。
当节点集合为空集,说明不存在其他防火墙策略或是其他几个防火墙策略的组合覆盖待检测防火墙策略,则确定待检测防火墙策略不是冗余的防火墙策略。当节点集合不为空集时,则说明至少存在一个其他的防火墙策略或是一个其他几个防火墙策略的组合覆盖待检测防火墙策略,则确定待检测防火墙策略是冗余的防火墙策略。
本发明实施例通过转化模块10将多个防火墙策略的对象转化成相同形式的值,创建模块20根据相同类型的对象对应的值创建多叉树,计算模块30计算待检测防火墙策略对应的所有多叉树的节点被其他防火墙策略所对应的多叉树的节点覆盖的节点集合,通过判断模块40判断上述节点集合是否为空集来确定待检测防火墙策略是否冗余,当节点集合不为空集时,则待检测防火墙策略是冗余防火墙策略,当节点集合为空集时待检测防火墙策略不是冗余防火墙策略。解决了现有技术中不能同时将待检测防火墙策略与多个其他的防火墙策略进行比较实现冗余检测的问题。此外,由于所有类型的对象都化为相同形式的值,并创建多叉树来实现防火墙策略的冗余检测,该方法可以对防火墙策略中的不同类型的对象进行比较,具有较好的通用性。
图7是根据本发明第二实施的防火墙策略冗余检测装置的示意图。
如图7所示,该装置包括:转化模块10,创建模块20,计算模块30,判断模块40和确定模块50,其中,计算模块30包括第一查找单元302、第一运算单元304和第二运算单元306。
第一查找单元302,用于分别查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,得到第一多叉树的覆盖分支和第二多叉树的覆盖分支,其中,覆盖分支为经过待检测防火墙策略的对象对应的多叉树的节点的路径,路径从多叉树的根节点起始至覆盖多叉树的节点的最底层的子节点终止。
覆盖分支上的节点或节点组合可以覆盖待检测防火墙策略对应的节点的,如图4所示,该多叉树包括10个节点,分别是n0(0.0.0.0/0,any,r1),n1(10.100.7.1/24,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(10.100.8.9/29,r7),n8(10.100.7.9/30,r8),n9(10.100.7.13/30,r9)。其中每个节点包括每个对象转化后的值和该对象所属的防火墙策略,例如节点n1,包括10.100.7.1/24,r2,其中10.100.7.1/24为对象对应的值,r2为该对象所属的防火墙策略。假设待检测防火墙策略为r4,该多叉树的其他节点对应的防火墙策略的执行都先于r4,节点n3为待检测防火墙策略r4对应的节点。该防火墙策略r4对应的节点n3的覆盖分支有如下三种情况:
覆盖分支1:节点(n0,n1,n6),对应于策略(r1,r2,r6);
覆盖分支2:节点(n0,n1,n7,n8),对应于策略(r1,r2,r7,r8);
覆盖分支3:节点(n0,n1,n7,n9),对应于策略(r1,r2,r7,r9)。
可以看出,上述三条覆盖分支分别都经过防火墙策略r4对应的节点n3。
以覆盖分支1查找为例,由于节点n0和节点n1分别都覆盖节点n3,节点n6和节点n7组合覆盖节点n3,因此节点n0、节点n1和节点n6组成一条覆盖分支,但是如若节点n3只有一个子节点n6,则节点n6不能覆盖节点n3,则覆盖分支中只包含节点n0和节点n1。
如果待检测防火墙策略对应于一颗多叉树的多个节点,则需要分别计算每个节点的覆盖分支。如图4中,防火墙策略r4对应节点n3和节点n5,则该防火墙策略r4对应的节点的覆盖分支如下:
覆盖分支1:节点(n0,n1,n6),对应于策略(r1,r2,r6);
覆盖分支2:节点(n0,n1,n7,n8),对应于策略(r1,r2,r7,r8);
覆盖分支3:节点(n0,n1,n7,n9),对应于策略(r1,r2,r7,r9);
覆盖分支4:节点(n0,n2),对应于策略(r1,r3)。
覆盖分支1至覆盖分支3对应于防火墙策略r4对应的节点n3,覆盖分支4对应于防火墙策略r4对应的节点n5。
待检测防火墙策略的其他对象对应的多叉树的覆盖分支的查找同上述方法,在此不再赘述。
要查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,需要遍历多叉树的节点。多叉树的遍历采用深度遍历方法,根节点信息传递给子节点,叶子节点信息传递给父节点。由于在判断策略覆盖情况时,策略列表中的每个策略都需要遍历多叉树,为了减少遍历次数,需要将第一次遍历结果存储在Map<CIDR,节点>。这样每次策略遍历时,只需要从Map中根据该策略对象的每个CIDR值可找到相应的节点。每个节点通过一定的操作可获取父节点或子节点列表:例如getParentNode,getChildrenListNode,isRootNode等操作方法。
查找待检测防火墙策略对应的一棵多叉树的节点的覆盖分支如下:
待检测防火墙策略对应的一棵多叉树的节点集合为:N(i)={Nx,Ny,Nz,…},其中,i表示第i棵多叉树,Nx、Ny、Nz表示多叉树的节点。
其中Nx节点的覆盖情况S(Nx)=S1(Nx){}+S2(Nx){},S1表示父节点覆盖策略列表,S2表示子节点组合覆盖策略列表(子节点组合后的CIDR值等于Nx节点的CIDR值)。
则Nx的覆盖分支计算如下:
B(Nx)=Σ(S1(Nx)∪B2(Nx)),B表示覆盖分支,B2表示S2子节点组合产生的覆盖分支
B2计算如下公式所示:
B2(Nx)=Σ(S2′(Nx)∪B2′(Nx)),S2′(Nx)表示Nx节点S2集合中离散子节点(不包括B2′涵盖的子节点),B2′(Nx)表示S2集合中那些子节点需通过下一级子节点组合产生的CIDR值与父节点一致的那些分支。
同理依次递归,可以找出所有B2覆盖分支。
通过以上公式可推断出Nx节点所有的覆盖分支B(Nx)。
第一运算单元304,用于第一多叉树的覆盖分支中的每个覆盖分支依次与第二多叉树的覆盖分支中的每个覆盖分支进行交集运算,得到分支集合。
第二运算单元306,用于将分支集合进行并集运算得到节点集合。
所有分支并集后即可得到该待检测防火墙策略的覆盖节点集合。
S(x)=B1(x)∪B2(x)∪B3(x)∪…∪Bn(x),
其中,x表示防火墙策略,S(x)表示待检测防火墙策略的覆盖节点集合,B1(x)表示防火墙策略x在经过多棵多叉树遍历后得到的一个分支B1,同理,Bn(x)表示防火墙策略x在经过多棵多叉树遍历后得到的一个分支Bn。
本发明实施例通过第一查找单元302查找待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支,并通过第一运算单元304将每棵多叉树的覆盖分支依次与其他多叉树的覆盖分支进行交集运算得到符合所有多叉树的分支集合,再通过第二运算单元306将分支集合进行并集运算得到节点集合,当节点集合不为空集时该待检测防火墙策略则为冗余防火墙策略。由于只要包含待检测防火墙策略对应的节点的路径都为覆盖分支,因此待检测防火墙策略的每个对象对应的多叉树的节点的覆盖分支比较容易查找并且数量不大,减少了遍历多棵多叉树遍历的次数,使得进行多棵多叉树遍历时效率较高,有效提高了防火墙策略冗余检测的检测效率。
图8是根据本发明第三实施的防火墙策略冗余检测装置的示意图。
如图8所示,该装置包括:转化模块10,创建模块20,计算模块30,判断模块40和确定模块50,其中,计算模块30包括第二查找单元308和第三运算单元310。
第二查找单元308,用于查找其他的防火墙策略节点中同时覆盖待检测防火墙策略对应的多叉树的节点的一个或者多个节点,得到第一多叉树节点集合和第二多叉树节点集合,其中,第一多叉树节点集合由查找第一多叉树得到,第二多叉树节点集合由查找第二多叉树得到。
如图4所示,防火墙策略r4对应于该多叉树两个节点n3和n5,令防火墙策略r4为待检测防火墙策略。则同时覆盖节点n3和n5的其他的防火墙策略对应的节点集合为{n0,n1+n2,n2+n6+n7,n2+n6+n8+n9},对应的防火墙策略的集合为{r1,r2+r3,r3+r6+r7,r3+r6+r8+r9}。
通过上述同样的方法查找该待检测防火墙策略对应的其他多叉树的节点集合。
第三运算单元310,用于第一多叉树节点集合中的每一个依次和第二多叉树节点集合中的每一个进行交集运算,得到节点集合。
通过将多棵多叉树的节点集合进行交集运算,得到符合多棵多叉树的节点集合,即交集运算得到的节点集合中的节点在多棵多叉树中都能覆盖待检测防火墙策略的节点。
当待检测防火墙对应2棵以上的多叉树时,按照上述相同的方法,将前两棵多叉树得到的节点集合中的每一个依次和第三棵多叉树的节点集合的每一进行交集,依次类推其他的多叉树。
本发明实施例通过第二查找单元308分别查找待检测防火墙策略对应的每颗多叉树的节点被其他的防火墙策略对应的节点覆盖的节点集合,再通过第三运算单元310将多棵多叉树的节点集合进行交集运算得到符合多棵多叉树的节点集合。通过直接查找待检测防火墙策略对应的每一棵多叉树的节点被其他防火墙策略对应的多叉树的节点覆盖的节点集合,实现过程更为直接便于用户易理解。
优选地,为了方便的实现将防火墙策略的对象转换成相同形式的值,并保证每个防火墙策略的对象对应的值的唯一性,转化模块10包括:编码单元,用于根据无类别域际路由选择CIDR编码方法分别对防火墙策略的第一对象和第二对象进行编码,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
无类别域际路由选择CIDR是一种用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。通过采用CIDR编码方法对防火墙策略的对象进行编码,可以得到一个唯一的CIDR值,该CIDR值为一个地址形式的值,实现过程简单方便。
可选地,编码单元包括:第一转换单元,用于将防火墙策略的第一对象和第二对象转化成数字;第二转换单元,用于将数字转化成IP地址格式的值;以及第三转换单元,用于根据CIDR编码方法将IP地址格式的值转化成CIDR值,得到第一对象对应的CIDR值和第二对象对应的CIDR值。
防火墙策略的对象较为多样,可以分为两大类,一类是地址相关的对象,例如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地址值。
优选地,计算模块30还包括:剔除单元,用于剔除节点集合中被父节点覆盖的子节点。
多棵多叉树的覆盖分支并集组合后,将会得到待检测防火墙策略的所有覆盖组合,根据多叉树的特点,父节点在多种组合中会重复利用,因此需要对组合后的节点集合剔重。剔重可遵循最小组合原则,假如组合A当中包含了组合B,则A是一种冗余组合,例如,组合A(R1,R2,R3),组合B(R2,R3),则剔重后的组合为组合B(R2,R3)。通过剔除节点集合中被父节点覆盖的子节点,可以去除节点集合中的冗余节点。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
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所述的防火墙策略冗余检测装置,其特征在于,所述计算模块还包括:
剔除单元,用于将所述分支集合进行并集运算得到所述节点集合之后,剔除所述节点集合中被所述父节点覆盖的所述子节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410557892.5A CN104270384B (zh) | 2014-10-20 | 2014-10-20 | 防火墙策略冗余检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410557892.5A CN104270384B (zh) | 2014-10-20 | 2014-10-20 | 防火墙策略冗余检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104270384A CN104270384A (zh) | 2015-01-07 |
CN104270384B true CN104270384B (zh) | 2017-10-03 |
Family
ID=52161874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410557892.5A Active CN104270384B (zh) | 2014-10-20 | 2014-10-20 | 防火墙策略冗余检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104270384B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603471B (zh) * | 2015-10-16 | 2019-09-13 | 北京启明星辰信息安全技术有限公司 | 一种防火墙策略检测方法及装置 |
CN107094143B (zh) * | 2017-04-28 | 2020-08-04 | 杭州迪普科技股份有限公司 | 一种策略冗余的检测方法及装置 |
CN108170772A (zh) * | 2017-12-26 | 2018-06-15 | 泰康保险集团股份有限公司 | 一种数据处理方法及装置 |
CN110138742B (zh) * | 2019-04-17 | 2022-05-31 | 深圳中兴网信科技有限公司 | 防火墙策略优化方法、系统及计算机可读存储介质 |
CN110661811A (zh) * | 2019-10-10 | 2020-01-07 | 国网山东省电力公司信息通信公司 | 一种防火墙策略管理方法及装置 |
CN111049801B (zh) * | 2019-11-15 | 2022-02-11 | 广东电网有限责任公司 | 一种防火墙策略检测方法 |
CN111935182B (zh) * | 2020-09-25 | 2021-01-15 | 武汉思普崚技术有限公司 | 一种网络设备的防火墙策略检查方法、装置及存储介质 |
CN114338246B (zh) * | 2022-03-14 | 2022-06-07 | 章和技术(广州)有限公司 | 一种防火墙策略审计方法、装置、设备和存储介质 |
CN116866000A (zh) * | 2023-06-08 | 2023-10-10 | 北京安博通科技股份有限公司 | 一种防火墙策略冗余关系的检测方法、装置以及处理设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714997A (zh) * | 2010-01-15 | 2010-05-26 | 中国工商银行股份有限公司 | 防火墙策略生成方法、装置及系统 |
US8095677B1 (en) * | 2009-05-21 | 2012-01-10 | Sendmail, Inc. | Configuration rule generation with compressed address sets |
CN102315979A (zh) * | 2010-07-05 | 2012-01-11 | 国讯新创软件技术有限公司 | 一种网络流量监测方法和装置 |
CN103973675A (zh) * | 2014-04-15 | 2014-08-06 | 湖南大学 | 跨域协作防火墙中的分段冗余检测方法 |
-
2014
- 2014-10-20 CN CN201410557892.5A patent/CN104270384B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095677B1 (en) * | 2009-05-21 | 2012-01-10 | Sendmail, Inc. | Configuration rule generation with compressed address sets |
CN101714997A (zh) * | 2010-01-15 | 2010-05-26 | 中国工商银行股份有限公司 | 防火墙策略生成方法、装置及系统 |
CN102315979A (zh) * | 2010-07-05 | 2012-01-11 | 国讯新创软件技术有限公司 | 一种网络流量监测方法和装置 |
CN103973675A (zh) * | 2014-04-15 | 2014-08-06 | 湖南大学 | 跨域协作防火墙中的分段冗余检测方法 |
Non-Patent Citations (1)
Title |
---|
基于决策树的防火墙策略算法研究;刘军军;《《中国优秀硕士学位论文全文数据库 信息科技辑》》;20100415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104270384A (zh) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104270384B (zh) | 防火墙策略冗余检测方法及装置 | |
CN108900541B (zh) | 一种针对云数据中心sdn安全态势感知系统及方法 | |
Mechtri et al. | A scalable algorithm for the placement of service function chains | |
US10785130B2 (en) | Network infrastructure device to implement pre-filter rules | |
CN103858386B (zh) | 用于通过优化的决策树执行包分类的方法和装置 | |
Rahman et al. | Block-sdotcloud: Enhancing security of cloud storage through blockchain-based sdn in iot network | |
CN104718731B (zh) | 三重内容可寻址内存协助的包分类的方法、装置以及网络路由器 | |
CN106105115A (zh) | 网络环境中由服务节点始发的服务链 | |
CN109146447A (zh) | 区块链透明分片方法、装置及系统 | |
CN105591978A (zh) | 基于网络的服务功能链接 | |
CN106487719A (zh) | 经由分组中继使网络功能外部化的系统和方法 | |
CN106530688B (zh) | 基于Hadoop的海量交通数据处理方法 | |
CN107690776A (zh) | 用于异常检测中的将特征分组为具有选择的箱边界的箱的方法和装置 | |
CN111027743B (zh) | 基于分层路网的od最优路径搜索方法及装置 | |
CN109284296A (zh) | 一种大数据pb级分布式信息存储与检索平台 | |
CN104462352B (zh) | 数据打包方法及装置 | |
CN104243315A (zh) | 用于唯一枚举解析树中的路径的装置和方法 | |
CN103714077A (zh) | 物体检索的方法、检索校验的方法及装置 | |
CN109845223A (zh) | 使用预分类来实施网络安全策略 | |
US20150256450A1 (en) | Generating a Shape Graph for a Routing Table | |
CN106126383A (zh) | 一种日志处理方法和装置 | |
US10425343B2 (en) | Packet classification | |
US20200059491A1 (en) | Generation of security policies for microsegmented computer networks | |
CN107124365A (zh) | 一种基于机器学习的路由策略的获取系统 | |
CN106063228A (zh) | 利用准确匹配的一致性哈希在硬件负载平衡的应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215163 No. 181 Jingrun Road, Suzhou High-tech Zone, Jiangsu Province Patentee after: SHANSHI NETWORK COMMUNICATION TECHNOLOGY CO., LTD. Address before: 215163 3rd Floor, 7th Building, High-tech Software Park, 78 Keling Road, Suzhou Science and Technology City, Jiangsu Province Patentee before: HILLSTONE NETWORKS |