一种基于BP神经网络的异常检测系统的实1一种基于BP神经网络的异常检测系统的实现蔡坚,傅光轩,聂方彦(贵州大学计算机网络研究所,贵州贵阳550025)ImplementationofaBPNeuralNetwork-basedAnomalyDetectionSystemCAIJian,FUGuang-xuan,NIEFang-yan(InstituteofComputerNetwork,GuizhouUniversity,Guiyang550025,China)Abstract:ArtificialNeuralNetworksisoneofthecurrentresearchinghotspots,ithasastrongerfunctionoflearningandgeneralizing.Whenapplyitforintrusiondetection,itcanimprovedtheperformancesofdetectiontoolsveryeffectively.ThisarticlepresentsaBPnetwork-basedanomalydetectionsystem,andanalyzedfewkindsoftypicalscanningandattackingtechnologies.Basedonthesetechnologies,wehadchosennetworkinginputcharacters.Theresultofexperimentsshowedthedetectionrateandfalsepositiverateofthissystemisverysatisfactory.Becausethedetectingprocessismadeupofsomesimplenumericalcomputing,thissystemhascharactersoffastdetectingandwellrealtimeperformance.Keywords:networksecurity;intrusiondetection;BPNeuralNetwork;BParithmetic;anomalydetection摘要:人工神经网络是当前的研究热点之一,它具有较强的学习归纳功能,将之应用于入侵检测,能有效地提高检测工具的各项性能。本文提出了一种基于BP网络的异常检测系统,分析了几种典型的扫描和攻击技术,并由此选定了网络输入特征量,试验结果显示这种检测系统的检全率和误检率都十分令人满意。同时,由于网络的检测过程就是一些简单的数值计算,所以该系统检测速度快,实时性能好。关键词:网络安全;入侵检测;BP网络;BP算法;异常检测中图法分类号:TP393.08文献标识码:A1引言入侵检测系统(IntrusionDetectionSystem,IDS)是一种动态的网络攻击检测技术,能够在网络系统的运行过程中发现入侵者的恶行和踪迹,并作出适时的反应。其检测方法可分为两大类:误用(misuse)检测和异常(anomaly)检测。误用检测使用已知的攻击模式或系统弱点来进行攻击识别,检测的精确度取决于模式库的完整性。通常,它只能检测出模式库中已有的攻击模式,而不能发现未知的(甚至是已知的变种)攻击模式,并且添加新的攻击模式是非常困难的。这种检测方法的检测率和误检率都比较低;异常检测通过提取网络流量或日志文件中的特征数据来描述用户行为,建立典型的网络活动轮廓模型。每当检测到一个新的行为模式,就会与建立的模型进行比较,如果超过已定义的阈值,则引发报警,表示一个可能的异常行为。与误用检测正好相反,这种方法能够发现许多未知的和已经攻击的变种,它的检全率相当高。但由于先前的经验不可能预知所有的未来模式,所以它的误检率也比较高。目前,入侵检测工具最大的挑战之一就是对过去观察到的正常和异常行为进行总结归纳,并用于标识未知的攻击模式。为了解决这一问题,人们将人工神经网络引入了入侵检测系统,以期改善现有IDS的性能。2人工神经网络人工神经网络(ArtificialNeuralNetworks,ANNs),亦称为神经网络(NeuralNetworks,NNs),是由大量处理单元广泛互连而成的网络,是对人脑的抽象、简化和模拟,能够反映人脑的基本特性。它的研究始于20世纪40年代,经过三个阶段的曲折道路,其理论方法已经取得了长足的发展。近年来更是成为研究的热点,在时间序列分析、模式识别和控制等领域都得到了广泛的应用。2.1多层前向网络前向网络分为单层前向网络和多层前向网络。多层前向网络是单层前向网络的推广,但它能解决单层前向网络所不能解决的非线性可分问题。其网络结构如图1所示:X和Y是网络的输入、输出向量。每个神经元用一个节点表示。网络由输入层、隐层和输出层节点组成。其中隐含层可以为一层或多层(图中是单隐层),前层到后层节点通过权连接,即拓扑结构为有向无环图。输入层神经元的个数为输入信号的维数,隐含XY输入层隐含层输出层图1多层前向网络层个数以及隐节点的个数视具体情况而定,输出层神经元的个数为输出信号的维数。网络中每个神经元的激励函数必须是处处可导的,一般地,多数设计者都使用可微的Sigmoid函数,如:)exp(11iiIO-+=式中iI是第i个神经元的输入信号,iO是该神经元的输出信号。2.2BP学习算法20世纪80年代中期,以Rumelhart和McClelland为首,提出了多层前向网络(MultilayerFeedforwardNeuralNetworks,MFNN)的反向传播(BackPropagation,BP)学习算法,简称BP算法。它是一种有监督的学习算法,是梯度下降法在多层前向网络中的应用。BP学习算法由正向传播和反向传播组成,整个过程描述如下:(1)工作信号正向传播:输入信号从输入层经隐单元,传向输出层,在输出端产生输出信号,这是工作信号的正向传播。在信号的向前传递过程中网络的权值是固定不变的,第一层神经元的状态只影响下一层神经元的状态。如果在输出层得到期望的输出,学习结束;否则,转入误差信号的反向传播。(2)误差信号的反向传播:网络的实际输出与期望输出之间差值即为误差信号,误差信号由输出端开始逐层向前传播,这是误差信号的反向传播。在误差信号反向传播过程中,各层神经元的权值和偏差值由误差反馈进行调节,不断减小误差信号,使网络的实际输出更接近期望输出。BP算法的可描述如下:(1)初始化网络中所有权值和偏差;(2)while停止条件不满足时{(3)forsamples中的每个训练样本X{(4)for每个隐含层和输出层{(5)jIjeO-+=11;∑+=ijiijjOIθω;}(6)for每个输出层单元j(7)))(1(jjjjjOTOOErr--=;(8)for每个隐含层单元j(9)∑-=kijkkjjjErrOOErrω)1(;(10)for网络中每个权重ijω{(11)jjijOErrl)(=?ω;ijijijωωω?+=;}(12)for网络中每个偏差jθ{(13)jjErrl)(=?θ;jjjθθθ?+=;}(14)}}2.3BP算法的改进BP算法利用梯度下降法来搜索神经网络的一组权值,以使神经网络的类别预测与训练样本实际类别之间的均方差最小,从而成为相应分类问题的求解模型。由于梯度下降法本身的不足,在实际应用中存在两个重要问题:收敛速度慢和目标函数存在局部极小点。对此,人们提出了一些改善BP算法的方法:(1)加入动量项。理论上,BP算法的训练是沿着误差曲面的斜面向下逼近的,但对一个复杂的网络来说,其误差曲面是一个高维的空间曲面,是非常复杂且不规则的,分布着许多局部极小点。解决这一问题最简单的方法是加入“动量项”,即令)()()1()(nOnlErrnnijijij+-?=?ωαωα为动量项,通常10引入动量项后,降低了网络对于误差曲面的局部细节的敏感性,不仅可以微调权值的修正量,也可以有效地抑制网络陷于局部极小。(2)在BP算法中学习速率l的选取很重要,l的值大网络收敛快,但过大会引起不稳定;l值小虽然可以避免不稳定,但收敛速度就慢。较好的解决办法是设计一个自适应步长,使得权修改量能随着网络的训练而不断变化。在应用中,通常将学习速率设置为l/t,t为至今为止所处理的整个训练样本集的(循环)次数。(3)尽可能使用顺序方式训练网络。顺序方式训练网络要比批处理方式更快,特别是在训练样本集很大,而且具有重复样本时,顺序方式的这一优点就更为突出。使用这种方式训练网络时需要注意的是,每一周期的训练样本其输入顺序应该尽是采用随机方式,使得连续输入的样本不属于同一类。3将NN用于异常检测3.1确定网络结构要将BP神经网络用于异常检测,首先必须确定网络的结构,即输入层的节点数、输出层的节点数、隐层的层数及每一隐层的节点数。应用于入侵检测,BP网络的输入节点数就是我们用于检测的特征数。文[4]中,使用每一个网络数据包的一些域特征作为网络输入,而网络攻击事件通常是基于时间的序列模式,且如果对每一个数据包都进行一次分析计算,则在进行实时检测时必然会增加系统开销。所以本系统基于时间窗口,提取网络数据包的7个统计特征作为BP网络的输入,具体特征将在3.2节中详细说明。输出层的节点数比较容易确定。在入侵检测领域,一般地,输出层的节点数就是欲分类的类别数。本系统输出层的节点数为2,当数据为正常样本时,节点1和节点2的期望输出分别为1.0和0.0;反之,当数据为异常样本时,它们的输出为0.0和1.0。隐层层数的增加不一定能够提高网络的精度和表达能力,在多数情况下,BP网络一般都选用二级网络。同样,本系统中选用二级BP网,即隐层层数为1。由于人工神经网络是一个极为复杂的非线性动态系统,很难找到一个有关隐层节点数的简洁表达式。一般地,节点过少无法产生足够的连接权组合数来满足若干样本对的学习;反之,节点过多则学习以后网络的泛化能力变差。试验结果显示,本系统的隐层节点数为22时,网络的泛化能力(即正确分类的能力)最好。3.2选取统计特征在本系统中,我们分析了几种典型的网络攻击和网络扫描的实质,并由此确定了网络的输入统计特征量,简单的介绍如下:(1)SYNflood:该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYNACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。(2)FIN扫描:对某端口发送一个TCPFIN数据报给远端主机。如果主机没有任何反馈,那么这个主机是存在的,而且正在监听这个端口;主机反馈一个TCPRST回来,那么说明该主机是存在的,但是没有监听这个端口。(3)DrDoS(反射式分布拒绝服务攻击):将伪造了源地址的SYN请求包发送到许多被欺骗的计算机上,根据TCP三次握手的规则,这些计算机会向源IP发出SYN+ACK或RST包来响应这个请求,受害机忙于处理这些回应而被拒绝服务攻击。(4)FIN+URG+PUSH扫描:向目标主机发送一个FIN、URG和PUSH分组,根据RFC793,如果目标主机的相应端口是关闭的,那么应该返回一个RST标志。(5)NULL扫描:给目标主机发送一个没有任何标志位的TCP包,根据RFC793,如果目标主机的相应端口是关闭的,应该发送回一个RST数据包。(6)UDPflood:目前在互连网上提供的、mail等服务一般为使用unix操作系统,默认情况下它们开放了一些udp服务,如:原本作为测试功能的chargen服务会在收到每一个数据包时会随机反馈一些字符,如果恶意攻击者将两个udp服务互指,则网络可用带宽会就会很快耗尽。(7)Smurf:向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使之受到攻击。基于上述7种入侵形式,我们选取了以下7个统计特征:SYN、FI