一种识别防火墙的规则冲突的方法和终端的制作方法

文档序号:7998491阅读:253来源:国知局
一种识别防火墙的规则冲突的方法和终端的制作方法
【专利摘要】本发明实施例提供一种识别防火墙的规则冲突的方法和终端,对于防火墙中的每一条规则均定义多个数据包集,每一个数据包集存放与规则之间存在不同关联关系的数据包;定义规则之间出现的规则冲突的冲突类型;为当前规则构建一棵有向无环的规则决策树,基于当前规则规则决策树识别当前规则与其余规则之间出现的规则冲突的冲突类型;根据冲突类型回溯冲突源以找出引起冲突的冲突规则,以及冲突规则中所定义的引发了规则冲突的数据包集。为每一条规则均定义的多个数据包集和对冲突类型的划分,为各条规则各自构建一棵有向无环的规则决策树,基于每条规则的多个数据包集的相互关系进行冲突类型识别,能够为多于两条的规则之间出现的冲突进行识别。
【专利说明】一种识别防火墙的规则冲突的方法和终端

【技术领域】
[0001] 本发明涉及防火墙技术,特别是指一种识别防火墙的规则冲突的方法和终端。

【背景技术】
[0002] 防火墙的规则是类似访问控制列表(ACL)的结构,包括序号、判定域和行为三部 分。判定域可以由IP、TCP、UDP、ICMP首部任意字段构成,实际应用中的判定域通常包含了 协议、源IP地址、源端口号、目的IP地址和目的端口号,行为是防火墙依据规则所应采取的 动作。防火墙采用按序匹配的原则,当数据包到达防火墙,防火墙首先从第一条规则开始依 次和数据包进行匹配,如果匹配则按照规则所定义的行为采取相应的动作:Deny表示丢弃 数据包,Accept表示接收数据包,否则,继续检测数据包是否匹配第二条规则,如此循环到 最后一条规则,最后一条规则称为默认规则,通常是丢弃所有数据包。
[0003] 当前成熟的防火墙的规则检测冲突算法是由Ehab S. Al-Shaer和Hazem H. Hamed 提出的基于状态变迁图的检测冲突算法,其定义了开始状态:start ;最终状态:shadowed、 redundant、general、correlated、none ;中间状态:redundant ?、shadow?、generalize? 等共计15个状态。任意两条规则rx、ry依次匹配协议(protocol)、源IP地址+源端口号 (src)、目的IP地址+目的端口号(dst)、行为(action),依据匹配结果遍历整个变迁图,最 后得出r x和ry是否产生冲突。
[0004] 该算法将任意2条规则冲突定义为覆盖冲突、关联冲突、泛化冲突和冗余冲突四 种类型。
[0005] 覆盖冲突(Shadowed),是指规则ry判定域定义的数据包完全被位于其前的规则r x 所覆盖,规则ry按照防火墙按序匹配的原则,不匹配任何数据包,ry失效。
[0006] 关联冲突(Correlated),是指规则ry判定域定义的数据包部分被位于其前的规 则rx所覆盖,且r x和ry所定义行为不同。若交换rx和ry的位置,会引起防火墙对两条规 则共同匹配的数据包采取不同的行为,更改防火墙策略配置。
[0007] 泛化冲突(General),是指规则;rx判定域定义的数据包完全被位于其后的规则r y 所覆盖,且rx和ry所定义的行为不同。若交换rx和ry的位置,规则r x不匹配任何数据,且 引起防火墙对rx所定义的数据包采取不同的行为,更改防火墙策略配置。
[0008] 冗余冲突(Redundant),是指规则rx判定域定义的数据包完全被位于其后的规则 ry所覆盖,且rx和ry所定义的行为相同。冗余冲突虽不会引起防火墙策略的更改,但由于 增加了防火墙规则数目,提高了防火墙匹配时间,降低了防火墙效率。
[0009] 基于状态变迁图的检测冲突算法简单、容易实现,但是存在如下问题:首先,冲突 的分类和检测冲突算法只能适用于任意两条规则之间,并不能扩展到多条规则之间的冲突 分类和冲突检测;其次,该算法虽可以提供引发冲突的规则号,但不能提供更为详尽冲突源 信息,例如依据该算法检测出规则r y被规则rx所覆盖,可以得出引发冲突的规则为rx,但不 能获取规则r x所定义的哪部分数据包引发了覆盖冲突,而这正是在防火墙管理中更为迫切 需要的息。


【发明内容】

[0010] 本发明要解决的技术问题是提供一种识别防火墙的规则冲突的方法和终端,用于 解决现有的冲突分类和检测冲突算法只能适用于任意两条规则之间,不能提供更为详尽的 冲突源信息的缺陷。
[0011] 为解决上述技术问题,本发明的实施例提供一种识别防火墙的规则冲突的方法, 包括:对于防火墙中的每一条规则均定义多个数据包集,每一个数据包集存放与规则之间 存在不同关联关系的数据包;定义规则之间出现的规则冲突的冲突类型;为一条当前规则 构建一棵有向无环的规则决策树,基于当前规则的规则决策树识别当前规则与其余规则之 间出现的规则冲突的冲突类型;根据冲突类型回溯冲突源以找出引起冲突的冲突规则,以 及冲突规则中所定义的引发了所述规则冲突的数据包集。
[0012] 所述的方法中,对于防火墙中的每一条规则均定义多个数据包集,每一个数据包 集存放与规则之间存在不同关联关系的数据包,具体包括:具有d个判定域匕,…,Fd的防 火墙包含η条规则 Γι,r2,…,rn,对于一条规则ri定义四个数据包集:匹配集氏,表示规则 ri 所定义的数据包集;判定集Ey表示规则ri按照防火墙按序匹配的原则所首次匹配的数据 包集,满足乓^ ;覆盖集,表示位于规则A前面的规则所匹配的数据包集,满足Μ = 0, Mi = Μη U Eh ;同配集Si,表示由位于规则ri之后的规则所匹配的数据包集,且和规则ri 有相同的行为。
[0013] 所述的方法中,定义规则之间出现的规则冲突的冲突类型具体包括:完全覆盖冲 突,当前规则所定义的任意数据包均匹配位于当前规则前面的规则,该当前规则被前面的 规则完全覆盖,当前规则失效;部分覆盖冲突,当前规则所定义的部分数据包匹配位于当前 规则前面的规则,该当前规则被前面的规则部分覆盖;完全覆盖冲突和部分覆盖冲突统称 为覆盖冲突;冗余冲突,当前规则不被前面的规则完全覆盖,其判定集中的任意数据包均匹 配位于当前规则之后的规则,且当前规则与之后的规则的行为一样。
[0014] 所述的方法中,依据对应的规则决策树求出当前规则的多个数据包集中的判定集 和覆盖集,具体包括:当所述当前规则是^时,前一个规则Γη的规则决策树为,将当 前规则^的第一个判定域和规则决策树tg的根节点作为当前规则^的规则决策树&的 输入,将新增加的边对应的路径计入当前规则^的判定集Ερ求解出判定集Ey其中,根节 点为当前规则A的第一条规则的第一个判定域;当前规则的覆盖集依据奸=0 , = Μη U Eh求出。
[0015] 所述的方法中,对于具有d个判定域Fi,…,Fd的防火墙,一棵规则决策树t满足: 特征1,t有且只有一个没有入边的根节点,没有出边的节点被称为叶子节点;特征2, t中任 意节点v具有一个标签F(v),如果节点v不是叶子节点,标签F(v) e Fp…,Fd,如果节点v 是叶子节点,标签F(v)接收数据包或者丢弃数据包;特征3, t中任意一条边e:u具有一个 标签I (e),I (e)是节点u的标签的值域的一个非空子集;特征4, t中从根节点到叶子节点 的路径构成一条规则;特征5, t中任意节点v的出边的数据包集E(v)满足的条件是E(v) 中任意两条不同的边e和e',有1(e) Π I(e')。
[0016] 所述的方法中,基于当前规则的规则决策树识别当前规则与其余规则之间出现的 规则冲突的冲突类型,包括:步骤1,依据对应每一条当前规则的规则决策树求出当前规 则的多个数据包集中的判定集和覆盖集,步骤2,若当前规则的判定集为空,当前规则被完 全覆盖,执行步骤5 ;步骤3,若当前规则的判定集和匹配集相等,当前规则与其余规则之间 没有产生规则冲突,执行步骤5 ;步骤4,识别部分覆盖冲突;识别冗余冲突;步骤5,退出当 前规则冲突识别。
[0017] 所述的方法中,识别部分覆盖冲突,若当前规则A满足#0并且Ei尹Ri,判定当 前规则与其余规则之间产生了部分覆盖冲突;识别冗余冲突,构造当前规则 ri的同配集Si, 若出现乓#0并且g 5;,判定当前规则与其余规则之间产生了冗余冲突。
[0018] 所述的方法中,构造当前规则A的同配集51,具体包括:初始化当前规则的同配集 为空集;从当前规则的下一条规则开始至最后一条规则依次构造各条后续规则的规则决策 树,并求出各条后续规则的判定集,将和当前规则行为相同的后续规则对应的判定集并入 到当前规则的同配集
[0019] 所述的方法中,根据冲突类型回溯冲突源以找出引起冲突的冲突规则,以及冲突 规则中所定义的引发了所述规则冲突的数据包集,具体包括:若当前规则A产生的是覆盖 冲突,冲突源为 Ri n Mi;若当前规则ri产生的是冗余冲突,冲突源为Ei n Si。
[0020] 一种识别防火墙的规则冲突的终端,包括:数据包集定义单元,用于对于防火墙中 的每一条规则均定义多个数据包集,每一个数据包集存放与规则之间存在不同关联关系的 数据包;冲突定义单元,用于定义规则之间出现的规则冲突的冲突类型;规则决策树单元, 用于为一条当前规则构建一棵有向无环的规则决策树,基于当前规则的规则决策树识别当 前规则与其余规则之间出现的规则冲突的冲突类型;冲突源回溯单元,用于根据冲突类型 回溯冲突源以找出引起冲突的冲突规则,以及冲突规则中所定义的引发了规则冲突的数据 包集。
[0021] 本发明的上述技术方案的有益效果如下:为防火墙中的每一条规则均定义的多个 数据包集和对冲突类型的划分,为各条规则各自构建一棵有向无环的规则决策树,基于每 条规则的多个数据包集的相互关系进行冲突类型识别,能够为多于两条的规则之间出现的 冲突进行识别,根据不同数据包集之间出现的交集进行冲突源回溯,找出引起冲突的冲突 规则,以及冲突规则中所定义的引发了该冲突的数据包集,因此提供了更为详尽的冲突源 信息。

【专利附图】

【附图说明】
[0022] 图1表示一种识别防火墙的规则冲突的方法的流程示意图;
[0023] 图2表示冲突识别的流程示意图。

【具体实施方式】
[0024] 为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具 体实施例进行详细描述。
[0025] 本发明中,在防火墙形式化定义、冲突类型分类、冲突类型分类和防火墙冲突源回 溯等方面进行改进。
[0026] 本发明实施例提供一种识别防火墙的规则冲突的方法,如图1所示,包括:
[0027] 步骤101,对于防火墙中的每一条规则均定义多个数据包集,每一个数据包集存放 与规则之间存在不同关联关系的数据包;
[0028] 步骤102,定义规则之间出现的规则冲突的冲突类型;
[0029] 步骤103,为一条当前规则构建一棵有向无环的规则决策树,基于当前规则的规则 决策树识别当前规则与其余规则之间出现的规则冲突的冲突类型;
[0030] 步骤104,根据冲突类型回溯冲突源以找出引起冲突的冲突规则,以及冲突规则中 所定义的引发了所述规则冲突的数据包集。
[0031] 应用所提供的技术,为防火墙中的每一条规则均定义的多个数据包集和对冲突类 型的划分,为各条规则各自构建一棵有向无环的规则决策树,基于每条规则的多个数据包 集的相互关系进行冲突类型识别,能够为多于两条的规则之间出现的冲突进行识别,根据 不同数据包集之间出现的交集进行冲突源回溯,找出引起冲突的冲突规则,以及冲突规则 中所定义的引发了该冲突的数据包集,因此提供了更为详尽的冲突源信息。
[0032] 关于防火墙形式化定义,为使得所提供的技术适应于各种防火墙,采用形式化方 法定义防火墙f。
[0033] 在一个优选实施例中,具有d个判定域?。的防火墙包含η条规则ri,r2,… ,r n,对于一条规则ri定义四个数据包集:
[0034] 匹配集(Matching Set)氏,表示规则所定义的数据包集;
[0035] 判定集(Evaluating Set) Ερ表示规则&按照防火墙按序匹配的原则所首次匹配 的数据包集,满足
[0036] 覆盖集(Masking Set)My表示位于规则巧前面的规则所匹配的数据包集,满足 风=0, = Mh U Eh ;
[0037] 同配集(Same Set)Si,表示由位于规则巧之后的规则所匹配的数据包集,且和规 则^有相同的行为。
[0038] 在一个应用场景中,数据包P具有d个判定域Fi,…,Fd,数据包P可以被定义为一 个d维的元组( Pl,…,pd),Pl e D (FJ,其中,D (Fp是判定域匕的值域,是一个非负整数段 或者数据包集。
[0039] 具有d个判定域?。…,Fd的防火墙f包含η条规则1^,r2,…,rn,记为f < 1^,r2,… ,rn >,规则 rjl 彡 i 彡 η)定义为:〈t>~ 坑 e S) ~ (Fd e Sd) -〈action〉,其中 Si (1 < i < d)是D(Fj)的非空子集,action是规则定义的行为,如:deny和accept。
[0040] 对于规则A定义以下4个数据包集:
[0041] 匹配集(Matching Set)氏,表示规则&所定义的数据包集;
[0042] 判定集(Evaluating Set)Ei,表示按照防火墙按序匹配的原则,规则巧所匹配的 数据包集,则 & C RJ:
[0043] 覆盖集(Masking Set)Mi,表示位于规则ri前面的规则所匹配的数据包集, - 0, Μ「Μη U Eh ;
[0044] 同配集(Same Set)Si,表示由位于规则ri之后所匹配的数据包集,且和规则ri有 相同的行为。
[0045] 关于冲突类型分类,对防火墙冲突进行了分类,给出了不同的冲突类型的定义,在 一个优选实施例中,定义规则之间出现的规则冲突的冲突类型具体包括:
[0046] 完全覆盖冲突,当前规则所定义的任意数据包均匹配位于当前规则前面的规则, 该当前规则被前面的规则完全覆盖,当前规则失效;
[0047] 部分覆盖冲突,当前规则所定义的部分数据包匹配位于当前规则前面的规则,该 当前规则被前面的规则部分覆盖;
[0048] 完全覆盖冲突和部分覆盖冲突统称为覆盖冲突;
[0049] 冗余冲突,当前规则不被前面的规则完全覆盖,其判定集中的任意数据包均匹配 位于当前规则之后的规则,且当前规则与之后的规则的行为一样。
[0050] 当前规则可以是任意一条规则,例如,当前规则具体是第i个规则&。
[0051] 实施例所提供的冲突分类不仅适用于任意两条规则之间,还可以扩展到任意多条 规则之间。
[0052] 在一个应用场景中,完全覆盖(Fully Masked),是指当前规则所定义的任意数据 包均匹配位于其前面的规则,该当前规则被其前面规则完全覆盖,该当前规则失效。即,当 前规则的判定集为空集,其形式化表达为:规则A被完全覆盖,如果4 = 0。
[0053] 部分覆盖(Partially Masked),是指当前规则所定义的部分(非完全)数据包 匹配位于其前面的规则,该当前规则被其前面的规则部分覆盖,即该当前规则的判定集是 其匹配集氏的非空子集,形式化表达为:当前规则A被部分覆盖,如果尽〃0,并且&尹氏。
[0054] 将完全覆盖和部分覆盖统称为覆盖冲突。
[0055] 冗余冲突(Redundant),是指当前规则不被其前面规则完全覆盖,其判定集中 的任意数据包均匹配位于当前规则之后的后续规则,且它们的行为一样,形式化表达为: 乓=0并且乓G 4,表明当前规则A被冗余。
[0056] 关于防火墙冲突识别,检测冲突算法包括两部分:冲突识别算法和冲突源回溯算 法。
[0057] 基于规则决策树(RDT,Rule Decision Tree)的冲突识别算法,针对覆盖冲突识别 和冗余冲突识别略有不同,规则决策树的定义是:
[0058] 在一个优选实施例中,依据对应的规则决策树求出当前规则的多个数据包集中的 判定集和覆盖集,具体包括:
[0059] 当所述当前规则是ri时,前一个规则的规则决策树为tg,
[0060] 将当前规则A的第一个判定域和规则决策树的根节点作为当前规则ri的规 则决策树ti的输入,将新增加的边对应的路径计入当前规则^的判定集Ei,求解出判定集 Ερ其中,根节点为当前规则^的第一条规则的第一个判定域;
[0061] 当前规则&的覆盖集依据Afi = 0,Mi = Mg U 求出。
[0062] 防火墙中的各条规则,都具有一棵有向无环的规则决策树。每条规则构建一颗树, 当前规则的决策树,是由上一条规则的规则决策树演变而来。
[0063] 在一个优选实施例中,对于具有d个判定域Fp . . .,Fd的防火墙,一棵规则决策树 t满足:
[0064] 特征1,t有且只有一个没有入边的根节点,没有出边的节点被称为叶子节点;
[0065] 特征2,t中任意节点v具有一个标签F(v),如果节点v不是叶子节点,标签 F(v) e Fp . . .,Fd,如果节点v是叶子节点,标签F(v)接收数据包或者丢弃数据包;
[0066] 特征3, t中任意一条边e:u具有一个标签I (e),I (e)是节点u的标签的值域的一 个非空子集;
[0067] 特征4, t中从根节点到叶子节点的路径构成一条规则;
[0068] 特征5, t中任意节点v的出边的数据包集E(v)满足的条件是E(v)中任意两条不 同的边e和e',有1(e) Π I(e')。
[0069] 其中,如果节点v不是叶子节点,F(v) e Fp . . .,Fd,如果节点v是叶子节点,F(v) 接收数据包或者丢弃数据包。
[0070] 设规则i-Ι的规则决策树为,将规则i的第一个判定域和ti-ι的根节点作为 输入,构造规则i所对应的规则决策树ti,在构造的过程中,将增加的新边所对应的路径计 入规则i的判定集E i,实现规则判定集的求解。
[0071] 其中,根节点为第一条规则的第一个判定域,依据决策树的特征4可知,路径即是 规则。
[0072] 规则决策树的构造算法和判定集求解如以下算法:

【权利要求】
1. 一种识别防火墙的规则冲突的方法,其特征在于,包括: 对于防火墙中的每一条规则均定义多个数据包集,每一个数据包集存放与规则之间存 在不同关联关系的数据包; 定义规则之间出现的规则冲突的冲突类型; 为一条当前规则构建一棵有向无环的规则决策树,基于当前规则的规则决策树识别当 前规则与其余规则之间出现的规则冲突的冲突类型; 根据冲突类型回溯冲突源以找出引起冲突的冲突规则,以及冲突规则中所定义的引发 了所述规则冲突的数据包集。
2. 根据权利要求1所述的方法,其特征在于,对于防火墙中的每一条规则均定义多个 数据包集,每一个数据包集存放与规则之间存在不同关联关系的数据包,具体包括: 具有d个判定域?^…,Fd的防火墙包含η条规则A, r2,…,rn,对于一条规则定义四 个数据包集: 匹配集氏,表示规则A所定义的数据包集; 判定集Ερ表示规则&按照防火墙按序匹配的原则所首次匹配的数据包集,满足 E, ^ A> . 覆盖集,表示位于规则A前面的规则所匹配的数据包集,满足批=0,Mi = Mi-i U Eh ; 同配集Sy表示由位于规则ri之后的规则所匹配的数据包集,且和规则ri有相同的行 为。
3. 根据权利要求1所述的方法,其特征在于,定义规则之间出现的规则冲突的冲突类 型具体包括: 完全覆盖冲突,当前规则所定义的任意数据包均匹配位于当前规则前面的规则,该当 前规则被前面的规则完全覆盖,当前规则失效; 部分覆盖冲突,当前规则所定义的部分数据包匹配位于当前规则前面的规则,该当前 规则被前面的规则部分覆盖; 完全覆盖冲突和部分覆盖冲突统称为覆盖冲突; 冗余冲突,当前规则不被前面的规则完全覆盖,其判定集中的任意数据包均匹配位于 当前规则之后的规则,且当前规则与之后的规则的行为一样。
4. 根据权利要求2所述的方法,其特征在于,依据对应的规则决策树求出当前规则的 多个数据包集中的判定集和覆盖集,具体包括: 当所述当前规则是^时,前一个规则1·^的规则决策树为tg, 将当前规则^的第一个判定域和规则决策树的根节点作为当前规则ri的规则决 策树h的输入,将新增加的边对应的路径计入当前规则^的判定集Ey求解出判定集Ei,其 中,根节点为当前规则^的第一条规则的第一个判定域; 当前规则A的覆盖集依据= 0,Mi = Mg U 求出。
5. 根据权利要求4所述的方法,其特征在于,对于具有d个判定域匕,…,Fd的防火墙, 一棵规则决策树t满足: 特征1,t有且只有一个没有入边的根节点,没有出边的节点被称为叶子节点; 特征2, t中任意节点v具有一个标签F (v),如果节点v不是叶子节点,标签 F(v) e Fp如果节点v是叶子节点,标签F(v)接收数据包或者丢弃数据包; 特征3, t中任意一条边e:u具有一个标签I (e),I (e)是节点u的标签的值域的一个非 空子集; 特征4, t中从根节点到叶子节点的路径构成一条规则; 特征5,t中任意节点v的出边的数据包集E(v)满足的条件是E(v)中任意两条不同的 边 e和 e',有 1(e) Π I(e')。
6. 根据权利要求5所述的方法,其特征在于,基于当前规则的规则决策树识别当前规 则与其余规则之间出现的规则冲突的冲突类型,包括: 步骤1,依据对应每一条当前规则的规则决策树求出当前规则的多个数据包集中的判 定集和覆盖集, 步骤2,若当前规则的判定集为空,当前规则被完全覆盖,执行步骤5 ; 步骤3,若当前规则的判定集和匹配集相等,当前规则与其余规则之间没有产生规则冲 突,执行步骤5 ; 步骤4,识别部分覆盖冲突;识别冗余冲突; 步骤5,退出当前规则冲突识别。
7. 根据权利要求6所述的方法,其特征在于, 识别部分覆盖冲突,若当前规则A满足乓#0并且Ei尹氏,判定当前规则与其余规则 之间产生了部分覆盖冲突; 识别冗余冲突,构造当前规则A的同配集Sp若出现并且,判定当前规则 与其余规则之间产生了冗余冲突。
8. 根据权利要求7所述的方法,其特征在于,构造当前规则ri的同配集Si,具体包括: 初始化当前规则的同配集为空集; 从当前规则的下一条规则开始至最后一条规则依次构造各条后续规则的规则决策树, 并求出各条后续规则的判定集, 将和当前规则行为相同的后续规则对应的判定集并入到当前规则的同配集
9. 根据权利要求7所述的方法,其特征在于,根据冲突类型回溯冲突源以找出引起冲 突的冲突规则,以及冲突规则中所定义的引发了所述规则冲突的数据包集,具体包括: 若当前规则A产生的是覆盖冲突,冲突源为氏Π Mi ; 若当前规则η产生的是冗余冲突,冲突源为Ei n Si。
10. -种识别防火墙的规则冲突的终端,其特征在于,包括: 数据包集定义单元,用于对于防火墙中的每一条规则均定义多个数据包集,每一个数 据包集存放与规则之间存在不同关联关系的数据包; 冲突定义单元,用于定义规则之间出现的规则冲突的冲突类型; 规则决策树单元,用于为一条当前规则构建一棵有向无环的规则决策树,基于当前规 则的规则决策树识别当前规则与其余规则之间出现的规则冲突的冲突类型; 冲突源回溯单元,用于根据冲突类型回溯冲突源以找出引起冲突的冲突规则,以及冲 突规则中所定义的引发了所述规则冲突的数据包集。
【文档编号】H04L29/06GK104113516SQ201310138626
【公开日】2014年10月22日 申请日期:2013年4月19日 优先权日:2013年4月19日
【发明者】王毅, 韩宗祥 申请人:中国移动通信集团设计院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1