(福建儿童发展职业学院信息中心,福建 福州350007)
将神经网络技术应用于入侵检测系统,可大大提高系统的智能性,增强系统对网络数据的分类处理能力[1]。当数据经网络进入计算机时,必须经过由神经网络训练好的入侵检测系统,该系统对所有数据进行分析,如果是正常数据则让其通过,否则将判断出该数据属于或最类似的攻击种类,然后根据系统预先设置好的每种攻击手段所对应的防范措施,采取最佳的方法对计算机进行保护[2]。这样使系统的防御就有了目标和侧重,采用的措施也更加准确、快速。下面,笔者分别运用径向基函数(RBF)神经网络和误差反向传播(BP)神经网络构建入侵检测模型并对上述方法进行比较。
试验中所用数据均来自于自美国国防高级研究计划局(DARPA)KDD CUP99数据集中的网络入侵检测数据包kddcup_data_10percent。KDD CUP99数据集是从一个模拟的美国空军局域网上采集来的9个星期的网络连接数据,该数据集总共由500万条记录构成,并将攻击类型分为4类,然后又细分为39小类,每1类代表1种攻击类型,类型名被标记在训练数据集每1行记录的最后1项。每一条记录用41个特征来描述,加上数据类型名后总共是42项。此外,还提供一个10%的训练子集和测试子集。网络入侵检测数据包kddcup_data_10percent是对KDD CUP99数据集进行10%的抽样后得到的,其数据被用来模拟网络中的数据,对基于神经网络的入侵检测系统进行训练和测试。
用相同数据集分别对BP神经网络和RBF神经网络进行训练,然后用相同数据对2个训练好的网络进行测试。
从数据集中分别随机选取97条和197条数据,组成2个数据样本集,作为神经网络的训练样本数据,再从中随机选取20条作为测试数据集。为增强网络实用性和容纳性,尽可能选取包含本数据源中所含有的各类数据特征状态。训练数据的种类包括:①Normal(正常)数据;②Back(DOS攻击)数据;③Smurf(DOS攻击)数据;④Portsweep(FROBE攻击)数据;⑤Neptune(DOS攻击)数据;⑥Warezclient(R2L攻击)数据。
因为KDD CUP99数据集中每条数据用42个特征来描述(最后一个特征为数据种类),但是Matlab工具箱在处理数据时,不能识别数据中的特征字符(如tcp,smtp,SF,normal等),因而先将每条数据最后一个特征(数据种类)删掉,然后将神经网络无法处理的符号字段转换成数值字段。
1)输入层和输出层的设计 输入层的节点数取决于输入样本数据的特征向量,即一个节点对应一个输入变量,由于输入向量有41个元素,所以网络输入层的神经元有41个。输出层有3个节点,输出为 [000]、[0 0 1]、[0 1 0]、[0 1 1]、[1 0 0]和 [1 0 1],分别代表6种数据类型,即 Normal数据、Portsweep数据、Smurf数据、Warezclient数据、Back数据和Neptune数据。
2)函数调用 调用 net=newrbe(p,t,spread)函数,并对函数中的分布常数spread(通常默认为1)进行设置来使仿真试验的效果更逼真。
3)门限判决系统 样本特征用二进制代码表示(见表1)。第1种特征状态为000,第2种特征状态为0 0 1,第3种状态为0 1 0,第4种状态为0 1 1,第5种状态为1 0 0,第6种状态为1 0 1。每个状态中的3个分量如果在-0.05~0.5(包括0.5)之间则认为是0,如果在0.5~1.05之间则认为是1。
表1 样本特征的二进制表示代码
1)输入层和输出层的设计 输入层的节点数取决于输入样本数据的特征向量,因为2个试验采用的数据相同,所以输入向量有41个元素,网络输入层的神经元也就有41个。输出层与RBF神经网络输出层相同,也有3个节点。
2)隐含层的设计 隐层的节点数目设计十分复杂,到目前为止,仍然没有一个准确的方法能够确定隐层节点的数目。一般根据前人设计所得的经验和研究者进行试验来确定。根据Kolmogorov经验定理可知,3层神经网络中输入层节点数与隐含层节点数之间的近似关系如下[3]:
式中,K为隐含层节点数;M为输入层节点数。
由式(1)计算可以得到隐含层节点个数要小于或等于83左右,具体数目应在研究中反复试验,才能得到较理性的值。
3)传输函数设计 经过对比,输入层与中间层间的传递函数采用正切函数特性的Sigmoid函数(tansig),中间层与输出层间的传递函数使用对数特性的Sigmoid函数(logsig)。
4)训练函数设计 直接调用net=train(net,p,t)函数对网络进行训练。
5)门限判决系统 与RBF网络输出特征一样,通过查表1可判断攻击的种类。
设置2组试验,其中1组针对BP神经网络,另1组针对RBF神经网络。每组包括2个试验。试验采用对比法,从横向和纵向2个方向进行比较。横向比较即BP神经网络与RBF神经网络性能的比较,纵向比较即对同一种网络,采用不同数量的训练样本数据,比较其试验结果。其中误报率=误报的数据个数/测试数据总数;漏报率=漏报的数据个数/测试数据总数。
进行仿真试验时使用2个训练样本数据集,第1个数据集含97条样本数据,第2个数据集含197条样本数据。用随机选取的20条数据作为测试数据,数据中包含了几种主要的攻击类型。
试验输出数据结果有20列,每1列都是由1个测试数据经过已训练好的RBF神经网络运算后得到的。每1列有3个分量,从上到下依次对应样本特征的3个分量。试验输出数据结果的分量值在-0.05~0.5(包括0.5)之间则认为是0,如果在0.5~1.05之间则认为是1。
第1个试验训练数据为97条,对试验输出结果进行分析,该网络除对前6条正常数据判断正确外,对后面的14条攻击数据均将其误认为是正常数据,故出现漏报情况,漏报率为70%,误报率为0,从开始训练网络系统到对测试数据做出判断用时为0.2180s。
第2个试验训练数据为197条,对试验输出结果进行分析,该网络除对前7条和第13条数据种类判断正确外,对剩余12条攻击数据均将其误认为是正常数据,误报率为0,漏报率为60%,从开始训练网络系统到对测试数据做出判断用时0.3280s。
该试验中所用到的训练样本数据和测试数据与RBF网络试验相同。网络参数设置如下:训练次数为4400;训练目标精度为0.001;2次显示的训练步数为25。
第1个试验训练数据为97条,经过2110步训练后,网络目标误差达到要求,训练曲线收敛,训练效果比较好。对试验输出结果进行分析,该网络对20条测试数据的种类判断全部正确,误报率为0,漏报率为0。从开始训练网络系统到对测试数据做出判断用时83.5000s。
第2个试验训练数据为197条,该网络经过4400步训练,但是实验精度并未达到预期的10-3级,只达到10-2级。从2000步开始,训练曲线就一直保持平直再无变化,说明该BP网络此时出现陷入局部最优点和进入假饱和状态。该试验虽未达到预期训练目标,但是从试验输出数据结果来看,测试结果比较理想,分析判断精度比较高。根据BP神经网络的门限判决系统判断得出,该网络对20条测试数据的种类判断全部正确,误报率为0,漏报率为0,用时118.7960s。
1)RBF网络的训练分析计算速度比BP网络快。在对20条测试数据进行分析处理时,RBF网络的2组试验分别用时约0.2s和0.3s,而BP网络的2组试验用时却长达1~2min。如果当数据量再大一些,则BP网络用时将会更长。这样势必会严重影响检测系统的运行速度,降低入侵检测系统对攻击数据监控的实时性。当数据量足够大时,有可能造成检测系统崩溃。
2)RBF网络在建网、设置参数方面比BP网络简单。RBF网络建网时仅需调用net=newrbe(p,t,spread)函数,且设置网络参数时只需对扩展常数spread进行设定。而BP网络在建网时则需调用net=newff(minmax(p))、tansig、logsig和trainoss等函数,且需要设置的参数种类较多。要对隐含层节点数、训练步长和训练目标等各项参数反复设置比较后才能确定较理想的值。上述参数中只要有一项参数变动,就会影响试验结果。
3)BP网络的漏报率比RBF网络低。对于相同的训练样本数据和测试数据,BP网络的漏报率均为0,而RBF网络的漏报率超过50%。漏报率过高严重影响入侵检测系统的准确性和稳定性。攻击行为不能被发现,系统得不到保护,这是入侵检测系统最致命的问题之一。
4)RBF神经网络对试验的训练样本数据适应性比BP网络差。对于相同的训练样本数据集,BP网络通过训练后,对测试数据的分类处理可以做到准确无误,而RBF网络却很难适应训练样本数据的特征,训练后的网络对测试数据的分类处理结果也不理想。在试验中,笔者尝试不断增加训练样本数据量,将各种类型的数据尽可能多地收入到训练样本中,但漏报率没有明显降低,说明试验结果不理想。
5)在增加训练样本数据量后,2个网络对数据分类处理的精度都有所提高,但RBF神经网络对所漏报的数据依然无法判断其属于哪类攻击类型。
[1]吴庆涛,邵志清 .入侵检测研究综述 [J].计算机应用研究,2005(5):11-14.
[2]杨智君,田地,马骏骁,等 .入侵检测技术研究综述 [J].计算机工程与设计,2006,27(12):2119-2123.
[3]曹元大 .入侵检测技术 [M].北京:人民邮电出版社,2010.