一种加速防火墙过滤规则匹配的方法及装置 【技术领域】
本发明涉及网络安全技术领域,尤其涉及一种加速防火墙过滤规则匹配的方法及装置。
背景技术
数据包过滤系统是防火墙最基本、最重要、也是最核心的部分。防火墙过滤规则集是指防火墙进行访问控制时管理员配置的用来限制网络中的数据包是否可以通过的规则集合。常见的数据包过滤过程一般采用将数据包从防火墙过滤规则集的第一条规则开始顺序匹配的策略,如果某条规则匹配成功,则执行该条规则相应的动作,然后匹配下一个数据包。一个防火墙过滤规则集可能包含几十条或者更多规则,但由于规则之间存在某种关联关系,所以规则必须按照某种顺序进行排列,这就是防火墙过滤规则采用顺序匹配的原因。但是过滤规则的顺序匹配算法效率太低,从而使防火墙吞吐量急剧下降,严重影响了网络的性能。随着网络的高速发展,防火墙的数据包过滤必须不断地被优化来妥善处理网络流量的需求和防范攻击。为了缩短点到点的延迟,就要减少数据包匹配的时间。因此,高效且易于实现的过滤策略的优化主要是加快该策略中的数据包过滤规则匹配的速度。
在过滤策略里,数据包过滤的主要任务是基于一组规则描绘的过滤策略来对数据包进行分类。过滤数据包使用的信息常常包含在数据包的包头里,通常为传输协议、源IP地址、源端口号、目的IP地址和目的端口号。每一个过滤规则就是数据包包头的一个数组值。如果每一个数据包的包头匹配相应的某一个规则,那么,我们就说该数据包匹配这个规则。在防火墙中,如果一个数据包匹配一个规则的话,就要执行一些相关的动作。这些动作将指示是否去拒绝或是接受数据包到一个特定接口。如果一个数据包没有和一个过滤策略中的任何一个规则匹配成功,那么就要按照默认规则将该包丢弃,一般的默认规则(过滤策略中的最后一个规则)是拒绝。
很多学者和研究人员对防火墙过滤策略的优化问题提出了很多有用的解决方法,目前普遍使用的过滤规则匹配的方法是数据包按照过滤规则的优先级顺序进行匹配,以首次匹配到的规则为准。现有技术中使用的过滤规则匹配方式是轮循方式,例如,一个过滤策略中有1000条过滤规则时,每一个数据包的包头依次和这1000条规则进行比较直到找到一条完全匹配的规则。可以发现采用现有技术中的过滤规则匹配的方法对数据包进行过滤时,随着过滤规则的增多,防火墙中的性能下降非常明显。
【发明内容】
本发明提供一种加速防火墙过滤规则匹配的方法及装置,用以解决现有技术中防火墙对数据包进行过滤规则匹配时,若过滤规则较多,则防火墙的性能下降明显的问题。
本发明所述技术方案如下:
一种加速防火墙过滤规则匹配的方法,包括步骤:
A、将预先选定的防火墙过滤规则集的属性项的属性信息构建为线性分布的属性区间,将构建的属性区间与相应属性项的属性信息中包含该属性区间的过滤规则相关联;
B、进行数据包过滤时,查询所述数据包中所述选定属性项的属性信息,从构建地属性区间中搜索所述查询到的属性信息归属的区间,利用搜索到的区间关联的过滤规则构建与各选定属性项一一对应的规则集合;
C、获取所述构建出的与各选定属性项一一对应的规则集合的交集,将其添加到匹配规则集合中;
D、按照所述匹配规则集合中过滤规则的优先级高低依次对所述数据包进行规则匹配,直到找出完全匹配的规则。
较佳地,所述属性项为源地址或者目的地址或者源端口号或者目的端口号或者传输协议。
较佳地,所述步骤B与步骤C之间还包括将所述防火墙过滤规则集中对某一选定属性项无任何要求的过滤规则添加到构建出的与该属性项一一对应的规则集合中的步骤。
较佳地,所述步骤D中还包括按照所述找出的完全匹配的规则对应的动作对所述数据包进行相应的处理的步骤。
较佳地,所述属性项对应的线性分布的属性区间按照属性项的属性信息的大小顺序线性排列,与一个属性项对应的任意两个线性分布的属性区间之间不存在交集。
一种加速防火墙过滤规则匹配的装置,包括属性区间构建模块、数据包属性查询模块、属性区间搜索模块、属性项规则集合形成模块、匹配规则集合形成模块及规则匹配模块,其中,
属性区间构建模块,用于将预先选定的防火墙过滤规则集的属性项的属性信息构建为线性分布的属性区间,以及将构建的属性区间与相应属性项的属性信息中包含该属性区间的过滤规则相关联;
数据包属性查询模块,在进行数据包过滤时,用于查询所述数据包中所述选定属性项的属性信息;
属性区间搜索模块,用于从所述构建的属性区间中搜索所述查询到的属性信息归属的区间;
属性项规则集合形成模块,用于利用搜索到的区间关联的过滤规则构建与各选定属性项一一对应的规则集合;
匹配规则集合形成模块,用于获取所述构建出的与各选定属性项一一对应的规则集合的交集,将其添加到匹配规则集合中;
规则匹配模块,用于按照所述匹配规则集合中过滤规则的优先级高低依次对所述数据包进行规则匹配,直到找出完全匹配的规则。
较佳地,所述属性项为源地址或者目的地址或者源端口号或者目的端口号或者传输协议。
较佳地,所述属性项规则集合形成模块还用于将所述防火墙过滤规则集中对某一选定属性项无任何要求的过滤规则添加到构建出的与该属性项一一对应的规则集合中。
本发明有益效果如下:
现有技术中防火墙对数据包进行过滤时采用顺序遍历过滤规则的方式进行规则匹配,其效率很低,而当防火墙在过滤数据包时采用本发明所述的线性分布检索方式进行过滤规则匹配时,可以缩小匹配规则集合,大幅度提高规则匹配效率。
【附图说明】
图1为本发明所述加速防火墙过滤规则匹配的方法的流程图;
图2为本发明所述加速防火墙过滤规则匹配的装置的结构框图。
【具体实施方式】
下面将结合各个附图对本发明的具体实现过程予以说明。
请参阅图1,该图为本发明所述加速防火墙过滤规则匹配的方法的流程图,其主要包括步骤:
步骤10、将预先选定的防火墙过滤规则集的属性项的属性信息构建为线性分布的属性区间;
所述属性项为源地址或者目的地址或者源端口号或者目的端口号或者传输协议。
所述属性项对应的线性分布的属性区间按照属性项的属性信息的大小顺序线性排列,与一个属性项对应的任意两个线性分布的属性区间之间不存在交集。
步骤11、将构建的线性分布的属性区间与相应属性项的属性信息中包含该属性区间的过滤规则相关联;
步骤12、进行数据包过滤时,查询所述数据包中所述选定属性项的属性信息;
步骤13、从构建的线性分布的属性区间中搜索所述查询到的属性信息归属的属性区间;
步骤14、利用搜索到的区间关联的过滤规则构建与各选定属性项一一对应的规则集合;
步骤15、获取所述构建出的与各选定属性项一一对应的规则集合的交集,将其添加到匹配规则集合中;
步骤16、按照所述匹配规则集合中过滤规则的优先级高低依次对所述数据包进行规则匹配,直到找出完全匹配的规则,按照该找出的规则对应的动作对所述数据包进行相应的处理。
进一步地,对于防火墙过滤规则集中对对某一选定属性项无任何要求的过滤规则,本发明所述方法中将防火墙过滤规则集中对某一选定属性项无任何要求的过滤规则直接添加到步骤14中构建出的与该属性项一一对应的规则集合中,然后再执行步骤15,即按照所述匹配规则集合中过滤规则的优先级高低依次对所述数据包进行规则匹配。
下面通过一具体实例对本发明上述方法予以进一步详细的阐述。
用户配置的防火墙过滤规则集如下表,各条过滤规则的序号就是其优先级。
序 号 源地址 目标地址 协 议 端 口 动作 1 11.22.1.* any Tcp 80 accept 2 11.22.2.* any Tcp 80 accept 3 11.22.3.0-11.22.3.16 any Tcp 80 deny 4 11.22.3.* any Tcp 80 accept 5 any 11.22.33.16-11.22.33.24 Tcp 80 accept 6 11.22.1.0-11.22.2.255 11.22.33.0-11.22.33.16 Tcp 80 deny 7 11.22.1.* 11.22.33.* Tcp 21 accept 8 11.22.2.* 11.22.33.* Tcp 21 accept 9 11.22.2.* any Tcp 21 deny 10 11.22.3.* any Tcp 21 accept 11 11.22.1.0-11.22.3.255 11.22.33.20 Tcp 21 accept 12 11.22.33.* 11.22.44.* Tcp 21 accept 13 Any any Tcp any deny
将上述的规则集中的源地址属性项及目的地址属性项分别进行线性化处理。首先,将规则集中的源地址表示成(ip1,ip2)地址区间的形式,ip1是开始地址,ip2是结束地址,然后,根据ip1的大小进行排序,如果发现相邻地址区间有重复的部分则需要进行拆分,源地址线性化后如下表:
数组下标 Ip1 Ip2 规则序号 0 11.22.1.0 11.22.1.255 1,6,7,11 1 11.22.2.0 11.22.2.255 2,6,8,9,11
数组下标 Ip1 Ip2 规则序号 2 11.22.3.0 11.22.3.16 3,4,10,11 3 11.22.3.17 11.22.3.255 4,10,11 4 11.22.33.0 11.22.33.255 12
拆分举例:规则3和4源地址存在交集,如上表所示将规则4中的源地址11.22.3.*拆分成区间(11.22.3.0,11.22.3.16)和(11.22.3.17,11.22.3.255);规则6、10、11也都进行了相应的拆分。
然后,将规则集中的目的地址表示成(ip1,ip2)地址区间的形式,ip1是开始地址,ip2是结束地址,然后,根据ip1的大小进行排序,如果发现相邻地址区间有重复的部分则需要进行拆分,目的地址线性化后如下表:
数组下标 Ip1 Ip2 规则序号 0 11.22.33.0 11.22.33.16 6,7,8 1 11.22.33.16 11.22.33.19 5,7,8 2 11.22.33.20 11.22.33.20 5,7,8,11 3 11.22.33.21 11.22.33.24 5,7,8 4 11.22.44.0 11.22.44.255 12
对于源地址或目的地址中是any,即对源地址或目的地址没有任何限制的过滤规则,我们分别建立源地址any链表和目的地址any链表如下:
A、源地址any链表→(5,13)
B、目的地址any链表→(1,2,3,4,9,10,13)
下面举例说明如何对数据包进行过滤规则加速匹配:
一个待过滤的数据包的源地址、目的地址、协议、端口分别是11.22.3.138、11.22.33.23、tcp、80。
第一步、根据源地址11.22.3.138在源地址线性分布中快速索引到表项3,得到了匹配的规则集合4、10、11;
第二步、因为源地址any列表也一定会和此地址匹配,所以源地址匹配的规则集合变成4、10、11、5、13;
第三步、根据目的地址11.22.33.23在目的地址分布可以快速索引到表项3得到匹配的规则集合5、7、8;
第四步、合并目的地址any链表,匹配的规则集合变成5、7、8、1、2、3、4、9、10、13;
第五步,求源地址和目的地址匹配的规则的交集为4、5、10、13;
第六步、按照规则序号的顺序进行其他属性的匹配可以得到匹配的规则为4。
如果此数据包按照现有技术中顺序匹配的方式进行过滤规则匹配,那么必须和规则1、2、3依次进行匹配运算,而采用本发明所述加速防火墙过滤规则匹配的方法就可以直接和规则4进行匹配运算,而且随规则数量的增加,这种匹配性能的差异将愈加明显。
相应于本发明上述方法,本发明进而提供了一种加速防火墙过滤规则匹配的装置,请参阅图2,该图为本发明所述加速防火墙过滤规则匹配的装置的结构框图,其主要包括属性区间构建模块、数据包属性查询模块、属性区间搜索模块、属性项规则集合形成模块、匹配规则集合形成模块及规则匹配模块,其中,
属性区间构建模块,用于将预先选定的防火墙过滤规则集的属性项的属性信息构建为线性分布的属性区间,以及将构建的属性区间与相应属性项的属性信息中包含该属性区间的过滤规则相关联;所述属性项为源地址或者目的地址或者源端口号或者目的端口号或者传输协议。
数据包属性查询模块,在进行数据包过滤时,用于查询所述数据包中所述选定属性项的属性信息。
属性区间搜索模块,用于从所述构建的线性分布的属性区间中搜索数据包属性查询模块查询到的属性信息归属的属性区间,将搜索结果发送给属性项规则集合形成模块。
属性项规则集合形成模块,用于利用属性区间搜索模块搜索到的属性区间关联的过滤规则构建与各选定属性项一一对应的规则集合;还用于将所述防火墙过滤规则集中对某一选定属性项无任何要求的过滤规则添加到构建出的与该属性项一一对应的规则集合中。
匹配规则集合形成模块,用于获取属性项规则集合形成模块构建出的与各选定属性项一一对应的规则集合的交集,将其添加到匹配规则集合中。
规则匹配模块,用于按照所述匹配规则集合中过滤规则的优先级高低依次对所述数据包进行规则匹配,直到找出完全匹配的规则。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。