发明内容
(一)发明目的
本发明的目的是提出一种基于模式聚类的并行网络流特征检测方法,以克服上述特征检测方法中的时间和空间性能的不足之处。
(二)发明内容
一种基于模式聚类的并行网络流特征检测方法,包括以下步骤:
S1:选定模式的匹配算法集合,包括适用于短模式的匹配算法和适用于长模式的匹配算法;
S2:根据所选定的适用于短模式和适用于长模式的匹配算法,选定模式的长度分割点,将模式集分割为短模式集和长模式集;
S3:决定所述短模式集的处理单元个数,利用模式聚类方法将长模式集分割为多个长模式子集,决定所述长模式子集的处理单元个数;
S4:复制待检测文本为多份,使其份数为所述短模式集和长模式子集总份数,并将每份待测文本分别输入各个短模式集或长模式子集对应的处理单元中;
S5:结合各个短模式集和长模式子集的处理结果判断待检测文本中是否存在攻击模式;
S6:重复步骤S4和S5,对待检测快速网络流传送的数据流进行连续检测。
其中,所述步骤S4中若一个短模式集或一个长模式子集被多个处理单元处理,那么输入的待检测文本只需送入所述多个处理单元中的一个处理单元进行处理。
其中,所述步骤S5还包括:
若存在攻击模式,执行报警或阻断操作。
一种基于模式聚类的并行网络流特征检测系统,其中包括:
选择模式匹配算法模块,用于选定模式的匹配算法集合,包括适用于短模式的匹配算法和适用于长模式的匹配算法;
分割模式集模块,用于根据所选定的适用于短模式和适用于长模式的匹配算法,选定模式的长度分割点,将模式集分割为短模式集和长模式集;
决定处理单元个数模块,包括:决定短模式处理单元个数模块、长模式分割模块和决定长模式处理单元个数模块,
所述决定短模式处理单元个数模块用于决定短模式处理单元个数;
所述长模式分割模块用于利用模式聚类方法将长模式集分割为多个长模式子集;
所述决定长模式处理单元个数模块用于决定所述长模式子集的处理单元个数;
检测文本模块,用于复制待检测文本为多份,使其份数为所述短模式集和长模式集总份数,并将每份待测文本分别输入各个短模式集或长模式子集对应的处理单元中;
判断攻击模式模块,用于结合各个短模式集和长模式子集的处理结果判断待检测文本中是否存在攻击模式;
重复执行模块,用于使检测文本模块和判断攻击模式模块重复执行,对待检测快速网络流传送的数据流进行连续检测。
其中,所述判断攻击模式模块还包括:
执行报警或阻断模块,用于若存在攻击模式时执行报警或阻断操作。
(三)有益效果
本发明中的基于模式聚类的并行网络流特征检测方法是一个可扩展的网络流特征检测整体解决方案,能够适用于各种等级性能需求以及各种规模的模式集,对于高性能内容检测、入侵检测、病毒防护和统一威胁管理、网络信息监控等系统都具有极为深远的作用。
具体实施方式
本发明提出的基于模式聚类的并行网络流特征检测方法,结合附图和实施例说明如下。
如图1所示,本发明提出的基于模式聚类的并行网络流特征检测方法。
步骤S1,选定想要采用的模式的匹配算法集合,一般包括适用于短模式的匹配算法(如AC),以及适用于长模式的匹配算法(如WM、RSI等)。
步骤S2,根据所选定的适用于短模式以及适用于长模式的匹配算法,选定模式的长度分割点,将模式集分割为短模式集和长模式集,短模式集用适用于短模式的匹配算法处理,而长模式集用适用于长模式的匹配算法处理。
步骤S3,根据短模式的经验化的性能曲线,以及整个特征检测系统的期望性能,决定用多少个处理单元来处理短模式集;并根据长模式的经验化的性能曲线,以及整个特征检测系统的期望性能,将长模式集分割为多个长模式子集,分割方法为基于代价函数的模式聚类方法,然后决定每个长模式子集用多少个处理单元来处理。
步骤S4,假设整个模式集被分割为N份,那么将输入的待检测文本复制N份,分别输入各个短模式集和长模式子集对应的处理单元中,进行并行处理,如果一个短模式集或长模式子集被多个处理单元处理,那么输入的待检测文本只需送入其中的一个处理单元进行处理,从而达到分流的目的。
步骤S5,结合N个模式子集的处理结果,判断待检测文本中是否存在攻击模式,并给出相应的操作(报警或阻断)。
步骤S6,重复S4和S5的过程,对待检测快速网络流传送的数据流进行连续检测。
实施例1
此实施例中,采用的模式集为2008年3月的Snort规则集,该模式集共包含5831条模式。
步骤S1,选定想要采用的模式匹配算法集合,选定适用于短模式的匹配算法为AC,选定适用于长模式的匹配算法为MRSI。
步骤S2,根据所选定的适用于短模式算法AC和适用于长模式的匹配算法MRSI,选定模式的长度分割点,将模式集分割为短模式集和长模式集,由于MRSI算法要求模式的长度最短为6,因此,此实施例中选定长短模式的分割点为6,在Snort规则集中长度小于6的模式的数量为1421条,其余长度均大于等于6,即长度小于6的模式划归AC算法处理(共1421条模式),而长度大于等于6的模式划归MRSI算法处理(共4410条模式)。
步骤S3,决定处理短模式集和长模式集的处理单元个数。如图2所示,为在AMD Opteron 270 CPU(64KB L1 Cache)的单核上测出的AC算法的性能曲线,其中,1421条模式下AC的处理速度大约为400Mbps,如果特征检测系统的整体性能要求为400Mbps,那么用1个处理单元(单核)来处理短模式集即可,如果整体性能要求达到800Mpbs,那么可用2个处理单元来处理短模式集。如图3所示,为在AMD Opteron 270 CPU(64KB L1 Cache)的单核上测出的MRSI算法的性能曲线,其中,4410条模式下MRSI的处理速度大约为170Mbps,而2000条模式下MRSI的处理速度可以达到300Mpbs,如果特征检测系统的整体性能要求为300Mbps,那么可以将长模式集分割为2个长模式子集,然后用2个处理单元来处理,如果特征检测系统的整体性能要求为600Mbps,那么可以将长模式集分割为2个长模式子集,然后对2个子集分别用2个(一共用4个)处理单元来处理。
一般情况下,可以假设需要将长模式集分割为m个长模式子集,那么从数学上来看,将长模式集分割为m个子集的问题可以看作是寻找一个最优的映射函数f:P→S,使得m个长模式子集的代价函数之和∑λj(1≤j≤m)最小。此处需要用到模式聚类的思想,此方法具体包含四个步骤:
(1)随机选择m个长模式,每个长模式置于一个长模式子集中,针对每个长模式子集,计算得到它的代价函数λj(1≤j≤m)。
(2)对于其余的n-m个长模式p
i,针对p
i加入每个长模式子集S
k,计算长模式子集代价函数之和∑
kλ
j。如果∑
tλ
j=min
1≤k≤m∑
kλ
j,即p
i加入长模式子集S
t得到的长模式子集代价函数之和最小,那么将p
i置于长模式子集S
t中。至此,每个长模式都得到初始子集编号,并且每个长模式子集都得到了初始代价函数值
(1≤j≤m)。
(3)开始模式聚类循环:在第1次循环中,对于每个长模式p
i,假设其子集编号为t,将其子集编号分别设置为1到m并且计算新的长模式子集代价函数之和
表示p
i加入长模式子集S
k的长模式子集代价函数之和。如果
即p
i加入长模式子集S
v的长模式子集代价函数之和最小,那么将p
i的子集编号由t更改为v。当所有长模式都完成第1次循环后,各个长模式子集得到了新的代价函数值
(1≤j≤m)。
(4)继续模式聚类循环,直到循环前后的长模式子集代价函数之和的差小于预先设定的正数ε为止,即
此时,循环停止,循环次数为r,并且各个长模式得到各自最终的子集编号。
此处需要额外指出的是,此模式聚类方法适用于各种基于跳跃的模式匹配方法,如WM、RSI、MRSI、AC_BM等,当然针对不同的算法,其代价函数也会有所不同。此处以MRSI算法为例,给出代价函数的具体定义,其它算法的代价函数可同理获得。
如图4给出了MRSI算法的数据结构,其中第一阶段的字块跳跃表格BLT#1存储了根据匹配窗口的倒数第一、第二字节组成的字块能够得到的最大跳跃值,字块跳跃表格BLT#2存储了根据匹配窗口的倒数第三、第四字节组成的字块能够得到的最大跳跃值,字块跳跃表格BLT#3存储了根据匹配窗口的倒数第五、第六字节组成的字块能够得到的最大跳跃值。第二阶段的潜在匹配表格(PMT)存储了当BLT#1中的跳跃值为0时可能匹配的模式,如果有多个可能匹配的模式,则用链表进行维护。MRSI算法的匹配过程为:
(1)利用3个双字节字块(匹配窗口的倒数第一第二字节,第三第四字节,第五第六字节)来分别索引3张BLT表格,得到3个跳跃值;
(2)将3个跳跃值中的最大值记为Lmax,如果Lmax>0,那么将文本的匹配窗口移动Lmax个字节;
(3)如果Lmax=0,那么利用匹配窗口的倒数第一第二字节构成的双字节字块来索引PMT表格,然后将逐一扫描链表中可能匹配的模式,最终确定真正匹配的模式。
根据MRSI算法的匹配过程,可以看到算法的匹配速度取决与三个字块跳跃表格(BLT)中的跳跃值的大小以及潜在匹配表格(PMT)中链表的长度。显然地,如果BLT表格中的跳跃值越大,PMT表格中链表的长度越短,MRSI算法的速度更快。因此,在将长模式集划分为子集的过程中,策略是让3张BLT表格中的平均跳跃值最大,并且让PMT表格中的链表平均长度最短。假设3个BLT表格中跳跃值为
(0≤i≤65535,1≤k≤3),那么可以用
来表示3张BLT表格中的平均跳跃值;假设PMT表格中的链表长度为H
i(0≤i≤65535),那么可以用
来表示PMT表格中的链表平均长度。如果文本的匹配窗口可以移动
个字节,代表每个字节位置需要
次的内存访问,而链表长度为
则表示每个字节位置平均需要
次内存访问。假设存在潜在匹配的概率为P
match(即需要访问链表的概率),那么MRSI算法的代价函数可以表示为:
利用此代价函数,根据上述的模式聚类方法,可以将长模式集优化分割为多个子集。此模式聚类方法能够达到局部最优解。
步骤S4,复制待检测文本为多份,使其份数为所述短模式集和长模式子集总份数,并将每份待测文本分别输入各个短模式集或长模式子集对应的处理单元中。为方便举例,假设一共有6个模式P1~P6,其中P1,P2为短模式,P3,P4,P5,P6为长模式,而长模式又被分割为2个长模式子集P3,P4以及P5,P6。那么模式集一共被分割为3份,这样就需要将输入的待检测文本复制3份,分别交由3个模式子集的处理单元进行处理。另外,如果短模式集合P1,P2由2个处理单元来处理,那么可以将待检测文本只需送入其中的一个处理单元进行处理,从而达到分流的目的。此模型具体可参见图5所示的并行特征检测模型。
步骤S5,结合各个短模式集和长模式子集的处理结果判断待检测文本中是否存在攻击模式。如图5所示,网络数据包Pkt1的处理结果需要根据Core#1、Core#3以及Core#4的处理结果共同决定,只要一个处理单元发现待检测文本中存在攻击模式,那么就应当给出相应的操作(报警或阻断)。
S6:重复步骤S4和S5,对待检测快速网络流传送的数据流进行连续检测。
本发明中的基于模式聚类的并行网络流特征检测方法,在时间性能方面,通过挖掘各类模式匹配算法的性能特点和优势,将模式集分割为适合于不同算法的模式子集,利用多核处理器平台的多处理器硬件特性,达到并行处理模式子集的效果;同时利用模式聚类的方法,在长模式规则子集的分割过程中,做到局部最优,从而使得整个特征检测系统的检测速度达到最大程度的优化。在空间性能方面,由于将模式集分割为多个模式子集,使得整体的空间占用比原始的模式集大幅减小,也提高了各个模式子集处理单元的缓存命中率,进一步提高了系统的整体性能。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。