周丽娟
(山西财经大学 实验教学中心, 山西 太原 030006)
网络入侵是指各类对网络进行攻击的行为,这些行为可能对网络构成一定的风险,甚至有可能导致网络的崩溃[1]。传统的网络安全行为主要是通过一些网络安全技术如防火墙来控制和防范网络的攻击[2]。入侵检测技术作为防火墙后的第二个安全保护门,不仅能对网络进行入侵拦截,同时也能对各类攻击如内部攻击、外部攻击和错误操作等进行实时监护[3]。
传统的入侵检测方法[4-6]主要有统计异常检测方法、贝叶斯推理的异常检测方法和基于专家系统的检测方法,这些方法均存在一些不足。如统计异常检测方法需要大量数据集,贝叶斯推理方法需要假设先验概率,而专家系统方法对专家经验具有较大的依赖。
目前,出现了一些基于机器学习的方法来实现网络的入侵检测,如基于AdaBoost的方法、基于主成分分析的方法和基于支持向量的方法。周国雄等[7]提出了一种基于AdaBoost的网络入侵智能检测方法,在该方法中,采用AdaBoost集成学习方法对学习器进行迭代训练,生成最终的入侵检测模型,增加网络的泛化能力,最终能提高入侵检测网络对网络入侵检测事件的识别能力。黄思慧等[8]提出了一种基于主成分分析和极限学习机的网络入侵检测技术,采用主成分分析方法对提取的特征矩阵进行降维,并采用极限学习机来对攻击进行检测,采用实验证明了该方法能实现的检测率为98.337%,具有较高的检测率和精度,同时也降低了误报率和漏报率。阎巍等[9]提出了一种改进的基于支持向量机的网络入侵检测算法,利用支持向量机在小样本学习方法的学习优势和较强的泛化能力,实现对算法的改进。封化民等[10]提出了一种基于SMOTE和GBDT的网络入侵检测方法,该方法通过在预处理阶段采用SMOTE技术提高少数类别的样本数量,并对多类样本进行降采样,最后用于平衡数据集的GBDT分类器。韩红光等[11]提出了一种基于Makov链并基于链式状态转移概率矩阵的网络入侵检测方法,通过K均值聚类来定义网络状态,并构建状态概率转移矩阵和初始概率分布的马尔科夫链模型(HMM),最后通过模型对输入数据的异常度进行检测。高妮等[12]提出了一种基于自编码网络的支持向量机入侵检测模型,首先通过多层无监督的限制玻尔兹曼机对原始数据降维,建立高维空间和低维空间的双向映射网络结构,然后通过反向传播网络的自编码权值进行调整,从而达到原始数据的相应低维表示。
以上工作均基于机器学习的相关方法,为了进一步提高网络入侵检测的效率和改善检测的精度,本文提出了一种基于改进BP神经网络(Back Propogation Neural Network,BPNN)的入侵检测方法。在该方法中,先通过禁忌算法(Tabu Search Algorithm)进行初步检测,然后基于该检测再通过优化神经网络进一步诊断。
BP神经网络是一个由输入层、输出层和隐含层构成的网络,其经典形式是三层网络。如图1所示,网络的输入为x1,x2,…,xn,网络的输出为y1,y2,…,yn,输入层和隐藏层之间的连接权重为Vij,隐藏层和输出层之间的连接权重为Wjk。
BP网络的结构主要包括以下几个方面:BP网络的层数、神经元激活函数、每层的神经元个数。BP神经网络的层数选择三层的神经网络,当训练误差不能满足阈值约束时,在每层增加新的神经元。隐藏层神经元的激励函数通常采用Sigmoid函数。BP神经网络的隐藏层的作用实际上是抽取数据对应的特征。Kolrnogorov定理指明:当网络神经元的数量足够多时,可以实现任意的非线性映射,但当网络的神经元数量过多时,会使得网络结构复杂,使得网络训练的计算复杂度增加;而网络的神经元数量过少时,难以精确地表达输入数据和输出数据之间的非线性关系。因此,在实验中根据损失函数的值可以去调整每层神经元的数量。
当输出端损失过大时,增加每层神经元个数,当损失较小且连续几轮迭代不变化时,减少神经元个数,以提高训练效率。
基于BP神经网络的网络入侵检测方法是首先从网络数据中获得数据的特征向量,然后利用特征向量对网络数据进行分类。本文设计的基于神经网络的检测器的数据的维数是41维,输入数据即为u1,u2,…,u41,对应了KDDCUP’99的数据,输出为6类的检测结果,分别为Normal、Neptune、Post_sweep、Satan、Buffer_overflow和Guess_password,这6类结果作为神经网络的6类输出。
BP的反向传播训练算法是由Rumelhart和McCelland等学者在1986年提出的一种多层前馈的分布式网络。在基于BP神经网络的网络入侵检测方法中,是由网络的正向传递和网络的反向传播两部分组成。
正向传播过程:采用BP神经网络来对网络安全进行检测时,即首先需要采用有标签数据,如(x1,y1),(x2,y2),…,(xn,yn)对网络的权值Vij和Wjk进行训练,即在初始化BP网络的权值Vij和Wjk的情况下,将样本数据x1,x2,…,xn作为网络的输入,然后在输出端获取输入数据对应的输出,此过程对应了正向传播过程。
误差反向传播:根据标签值和实际输出值的差异来计算误差。利用此差异进行作为误差信号反向传播,实现网络输入权值Vij和输出权值Wjk的调整。当样本标签数据与网络实际的输出值存在较大的误差时,网络就会转入反向传播过程,不断调整网络的权值,直到输入数据对应的输出和标签值接近,满足算法要求的精度要求。
神经网络的权值更新公式为
ω(k+1)=ω(k)+α(1-η)D(k)+ηD(k-1),
(1)
其中,ω(k+1)为权值的更新值,ω(k)为权值的当前值,α≥0表示学习率,0≤η≤1为动量因子,D(k)为输出层对应的权值梯度:
,
(2)
其中E为目标函数。该方法通过在动量项中加入阻尼项目,可以减少震荡趋势并改善收敛性。
实际使用中的BP算法通常存在收敛速度慢和容易陷入局部最优,因此从学习率和动量因子两个角度来对网络的更新方式进行改进。学习率的设计对神经网络的收敛也具有较大的影响。当学习率过大时,容易导致算法修正幅度过大,致使算法震荡甚至发散;当网络设置的学习率太小时,收敛速度会太慢,导致欠拟合。因此要对算法的学习率进行改进,将公式(1)所示的权值更新公式进一步修改为
ω(k+1)=ω(k)+α(k)D(k),
(3)
其中,网络的学习率可以进一步修改为
α(k)=2sign[D(k)D(k-1)]α(k-1),
(4)
其中,sign[D(k)D(k-1)]表示变化的方向,可以表示
(5)
当学习过程的两步都是往一个方向变化时,表明学习率太低,收敛速度太慢,此时对应的D(k)=D(k-1),因此,公式(4)对应的学习率就会增大;反过来,当两者方向不一致时,即D(k)≠D(k-1),此时可能网络的误差较大,因此需要降低学习率。
图2 禁忌算法流程
禁忌搜索算法[13]是由Glover于1986年提出的一种启发式优化算法,该算法通过赦免被禁忌的状态从而实现全局最优。禁忌算法的流程如图2所示。
在运用禁忌算法对神经网络进行优化之前,需要确定禁忌算法、禁忌对象、搜索策略和邻域生成以及藐视法则,其中禁忌对象和误差函数的设置如下:
(1)禁忌对象:本文要采用禁忌算法来优化神经网络,因此,禁忌的主要对象包括待优化的神经网络的权值ω、阈值th;
(2)误差函数,在采用禁忌算法来优化神经网络时,误差函数仍然选择神经网络输出端的误差,误差函数为
(6)
其中,y′为样本的输出值,y为样本的标签值,m为样本的数量,n为输出端的神经元个数。
采用禁忌神经网络来实现网络入侵检测的总体算法如下:
输出:检测结果。
1)初始化:初始化BP神经网络的权值,输入数据x1,x2,…,xn,根据神经网络的输出得到输出结果y1,y2,…,yn;
3)误差反向传播:根据误差函数的误差E来反向调整网络,直至网络的误差小于某一预设阈值;
4)初始化禁忌解:将神经网络的权值和阈值作为禁忌算法的初始解,采用禁忌算法来寻优;
5)禁忌算法求解:在初始解的附近采用探索动作(平移、交叉或变异),并通过禁忌算法来寻求最优解,选择最优解邻域中不被禁忌的最优解,并将其与全局最优解比较,同时将当前的探索动作加入到禁忌表中,同时将最先加入禁忌表的探索动作移出;
6)判断结束条件:当禁忌算法达到指定的最大迭代次数时,输出神经网络权值和阈值的最优解;
为了对本文所提的算法进行验证,采用网络检测标准的数据集,即DARPA1999入侵检测数据集作为测试集,该数据集中主要包含5种检测类型,其中4种为入侵检测种类,最后一种为正常模式:(1)探测与描述Probe;(2)拒绝服务攻击Dos;(3)未经授权的远程访问R2L;(4)本地超级用户的非法访问U2R;(5)正常模式。样本数据共1000组,其中800组用于作为训练样本集,剩余的200组作为测试样本集。每组数据样本个数为41。
BP网络结构的选定:选择三层的BP神经网络,输入层的神经元个数为41,隐藏层的神经元个数为12,输出层的神经元个数为5。
采用检测率作为检测效果的评价标准,检测率定义为
(7)
将本文所提的算法与基于BP神经网络的方法、基于AdaBoost方法和基于Elman神经网络的方法进行比较,选择200个样本作为测试集,部分样本的检测结果如表1所示。
表1 部分样本的入侵检测结果
从表1中可以看出,4种方法在测试集上均具有较高的检测率。基于BP神经网络的检测率较低,本文所提的方法具有最高的检测率。可以发现除了R2L攻击中,文中方法的入侵检测率略微低于基于Elman神经网络的检测率0.1%,其他攻击文中方法均具有最高的检测率。
基于传统BP网络的网络入侵检测算法往往受限于训练算法,即在采用梯度下降算法进行权值调整时,容易陷入局部最优。为了解决该问题,提出了一种基于禁忌算法和BP神经网络的入侵检测算法。该算法能在神经网络训练得到的初始值的基础上,进一步通过禁忌算法进行优化,直到到达算法最大的迭代次数或者误差已低于阈值。采用禁忌算法和神经网络对测试集进行测试,结果表明该算法具有较高的检测率,就有较大的检测精度。下一步的工作是进一步对网络的结构和参数进行优化,来提高网络入侵检测的效率和精度。