基于人工神经网络的入侵检测方法
2020-06-10高林娥
高林娥
(运城师范高等专科学校 山西省运城市 044000)
传统入侵检测方法选用特征库特征匹配或分类、聚类的方式进行学习,对特征的依赖较强,且在入侵检测过程中易出现数据不均现象,导致入侵检测效果不稳,当入侵病毒量较少时,检测效果较差。为更好应对网络安全管理需求,将深度学习的概念融入入侵检测中,借助人工神经网络,提升入侵检测水平。
1 人工神经网络
人工神经网络以人造神经元为基础,各神经元相互连接,完成信号传输、接收和处理。在ANN实现中,人造神经元间传输信号为实数,随着学习深度的加深,该参数发生一定变化,每个神经元均对应一个阈值,当总信号高于阈值时借助激励函数完成信号计算。一般情况下,人造神经元为多层结构,每层可能具备不同的转换处理功能。信号从输入层进入再到输出层输出,期间经历多次穿层活动,最终输出的结果受拓扑结构影响,节点间的权重反映节点上的映射关系[1]。该模型拟合复杂非线性函数的功能极强,依靠带有标记的数据即可完成判断、识别活动。例如,在识别图像中,人工神经网络在深度学习过程中,记忆对象特征,进而判断图像是否为目标图像。
人工神经元是人工神经网络的基本单位,其为生物神经元的仿真形式,每一神经元带有输入和输出两个端口,由多个神经元组成的人工神经网络包括输入层、输出层和隐藏层,其中隐藏层指位于输入层和输出层之间的全部层级。现有人工神经网络可分为单层、多层前馈、时间、自组织等类型,本文所研究的BP神经网络即属于多层前馈神经网络,其使用误差逆转传播算法进行训练,位于相邻层级的神经元之间进行互通,不存在同层或跨层互通现象,因此不出现环状结构。
2 基于BP神经网络的入侵检测方法
2.1 概念解析
BP神经网络为一种多层前馈神经网络,前后层神经元相连接,深度神经元一般由输入层、隐藏层及输出层构成,每层均含有多个神经元,其训练可分为正向、反向两个过程。正向过程中,信息从输入层进入,受隐藏层处理后,由输出层给出实际值,若计算误差未达标,则需要进入反向过程。反向传输结合误差,从输出层进入,在隐藏层完成网络权值及阈值的修改再传输至输入层,然后借助新的权值和阈值再次进行正向传播。通过BP神经网络训练可有效降低其传输误差,当误差足够低时,才能得到最优分类结果,同时BP神经网络的训练效果达到最佳。最常用的BP神经网络误差优化函数方法为梯度下降算法,该算法可分为全量梯度下降算法、随机梯度下降算法及批量梯度下降算法。
基于人工神经网络的入侵检测方法指利用已有样本集训练神经网络分类器,使其具备初始检测的功能。将待检测数据输入神经网络,通过分析和计算,在输出端得出检测结果。在人工神经网络自身属性的影响下,基于人工神经网络的入侵检测方法具备自主学习功能,检测效率上存在突出优势。
2.2 结构设计
本文研究的入侵检测模型基于CIDF通用入侵检测框架,该框架可分为事件产生器、事件分析器、响应单元和事件数据库。其中,事件产生器完成数据采集工作,事件分析器对数据进行分析和判断,相应单元结合判断结果给出相应的响应处理。该入侵检测系统由底层网络数据包提供事件数据,收集并整理数据包中数据,根据网络通信原理,可得到网络连接的局部特征,利用神经网络对特征进行分析,即可实现对网络入侵的检测。
基于BP神经网络的入侵检测系统分为嗅探器、数据审计模块和数据检测模块。嗅探器从网卡获取原始网络数据包,并对其中信息进行分析,如IP地址、协议等,将采集到的数据实时传输至数据审计模块。数据审计模块主要功能有二,第一,审计从嗅探器发来的数据,通过整理和分析,从中提取特征值,并将其转换为单条连接的形式传输至数据检测模块;第二,接收数据检测模块的检测反馈,结合结果给出相应的处理。数据审计模块设计对交互界面的要求较高。数据检测模块负责检测由审计模块发来的数据,当使用BP神经网络进行入侵检测时,采用KDD CUP99数据集作为训练数据来源。
2.3 功能实现
2.3.1 嗅探器设计
嗅探器的开发使用JAVA语言,在eclipse环境中进行。完成开发环境配置后,进行嗅探器功能编程。
数据包获取主要类型包括Jpcap Captor、Network Interface和Packet。以Network Interface类为例,其中包括网卡的name、description等属性,可通过这些属性进行网卡辨别。
数据包捕获完成后,对其内容、结构进行分析,分析对象主要是位于网络层的数据包,如IP、TCP、UDP等数据包。在获取某一数据包后,分析其是否为IP数据包,若是,则将Packet对象转化为IPPacket对象,获取成员信息。在完成IP数据包协议字段解析后,还需对其类型作进一步的明确,若协议字段为6,则判断为TCP数据包;若字段为17,则为UDP数据包。如表1所示为常见协议字段值。
表1:常见协议字段值
本文研究的基于BP神经网络的入侵检测方法,主要涉及到IP协议和TCP协议。在IP协议的数据包结构中,报表长度为4位、总长度占2个字节,以上数据分别对应报头长度及包含数据报文的总长度。报文的标志、标识及分段偏移量可用来表示报文的分组信息,协议号则对应数据报的协议,IP源地址及目的地址均为其数据报中含有的基本信息。而TCP数据报源端口号及目的端口号均占用2个字节,序号和确认号占用4个字节,URG表示加急包,ACK表示确认,PSH为立刻发送,RST表示连接重置,SYN表示连接同步,FIN表示连接中止请求。窗口占2个字节,可表示窗口大小。
数据包信息分析颁布后,需将信息传输至数据审计模块。网络情况检查等问题会导致重复数据包的出现,因此在传输之前需对重复数据包进行过滤,过滤方式为:记录数据包的MF、DF、ident和offset,再根据以上信息判断是否为重复数据包,若是,则仅发送一次信息。使用Socket编程完成数据包数据信息的发送,当两项数据包发送完成后,都表现为包括IP头部分的9种特征数据,TCP数据包为20种特征数据。
2.3.2 数据审计模块设计
数据审计模块为入侵检测系统的数据处理中心,完成数据分析、反馈、存储和展示活动。
(1)信息审计。将嗅探器传输回的数据包存储在数据库当中,并对数据包信息进行整理,从中提取连接信息,再将连接信息与连接过程相结合,提取每条连接信息的特征值。TCP传输过程分为三个环节。第一,建立TCP连接。客户端向服务端发送带有STN标志、初始序号为1000、不带数据的段1,提出连接请求。服务端接收到请求后,传回带有SYN标志及ACK标志、初始序列号为8000的段2,确认序号1001,反馈服务端接收请求并发起连接。客户端收到连接提醒后,反馈带有ACK标志的段3,表明已接收连接。数据连接完成后,全部数据包的ack位置均为1,证明序号有效。第二,TCP传输。客户端向服务端发送初始序号1001、确认序号8001及含有20字节的段4,成功接收后,传回确认序号1021及带10个字节的段5,表明已收到[2]。客户端再向服务端传输8011的段6进行确认。第三,终止连接。客户端发送带有FIN标志的段7提出断开连接请求,服务端发送带有ACK标志的段8及带有FIN标志的段9及段10进行确认并终止连接。
(2)特征提取。数据包整理后可获取大量连接信息,为使其服务于入侵检测,需从连接信息中提取特征值。特征值提取与入侵检测精度直接相关,因此选取KDD CUP99数据集中的41维特征值,可分为TCP连接基本特征、内容特征、基于2S时间内的网络流量统计特征和基于前100个连接中的主机网络流量统计特征。TCP连接基本特征可通过更新连接状态来获得,依照端口号判断其服务类型。TPC连接的内容特征需在数据包数据解析中获得,现有可参考资料非常有限,一般确认为0。基于2S时间内的网络流量统计特征在连接信息统计中获取。
(3)交互界面设计。考虑到程序开发的便捷性,数据审计模块使用C#在Visual Studio2012环境下进行开发。交互界面主要用于显示连接信息及入侵检测系统的连接响应判断结果。交互界面为入侵检测系统发生人机交互的核心,其设计应结合用户使用习惯及要求进行,保证内容呈现清晰、简洁。
(4)数据库选择。本文设计的入侵检测系统选用SQLsever 2008数据库,分为攻击统计数据、网络会话记录、网络连接内容、数据流量统计、原始数据包等存储模块。
2.3.3 数据检测模块设计
数据检测模块成为入侵检测核心任务,能够准确、及时辨别攻击数据,以保证入侵检测系统稳定发挥作用。
(1)数据预处理。数据预处理对来自数据审计模块的信息进行数值化、标准化、特征选择、特征提取等操作,形成标准化的数据集。例如,数据数值化对KDD CUP99数据集中41项特征值中的协议、目标主机网络服务、连接状态及类标签进行处理,采用将字符转化为数值的方式完成处理过程。数据标准化则依照一定方法对数据进行收缩处理,使其位于有限范围内,常用处理方法包括最小最大标准化、小数定标标准化等,其目的是将各项数据置于同一数量级,以便进行综合分析。
(2)检测算法设计。BP神经网络自带权重和与阈值,阈值作用于不同的映射函数可产生不同的映射效果,甚至可顺利反映无法用数学方式进行描述的关系。借助误差公式及权重积分,可不断对权重进行修改,逐渐降低误差。神经网络拓扑结构至少包括三层,设某相邻两层的i、j节点权重为ωij,不同节点j的阈值为bj,输出值为xj。使用如下公式可计算出每个节点的输出值:当权重赋值在0~1时,完成权重初始化并依照顺序输入相关数值,得到的激活函数图像表现为S形[3]。函数递增、递减趋势表现相对平坦,覆盖率高、微分效果好,相较于线性函数更加精准,适用于BP算法。最终的输出函数为线性形式,证明至少存在一个隐藏层S形函数及线性函数可逼近全部输出值。
(3)检测模块实现。在JAVA环境中完成模块开发,主程序完成配置文件读取、训练数据集加载、神经网络分类器搭建、待检测数据监测、数据检测等工作,使用BP神经网络分类器划分连接数据并返回分类结果。数据检测模块的实现流程如下:训练神经网络并搭建分类器,接收审计模块传输回的流量特征数据并给出分类结果,将结果传输回审计模块。BP神经网络通过自主学习,可实现数据检测模块功能的自主优化,以适应更复杂的入侵检测需求。
3 基于BP神经网络的入侵检测方法系统测试
3.1 测试环境选择
系统测试可验证基于BP神经网络的入侵检测方法是否能够充分达到其预设功能、运行状态是否稳定。在常规测试活动中,可将不同模块安装至不同机器上,多个主机同时运行。但由于本次系统测试主要检验其功能性,因此将各个模块放置在统一机器上。
使用的计算机处理器为Intel(R)Core(TM)i7-7700HQ CPU@ 2.80GHz,操作系统为Windows 10,借助WinPcap进行嗅探器测试。
3.2 测试流程
3.2.1 嗅探器测试
在计算机中运行嗅探器程序时,界面出现计算机网卡列表,结合提示选取相应的网卡,嗅探器在接收到审计端开始指令后进行数据包抓取并完成信息传输。运行过程中,数据库内存有大量数据包特征及链接特征,证明嗅探器数据采集功能达标。
3.2.2 数据审计模块测试
启动检测响应平台后,界面出现实时连接信息及当前的真实检测结果,根据检测结果可判断设计模块运行正常,审计响应端顺利完成待检数据发送,并接收来自检测平台的反馈数据,给出准确的流量数据检测结果。
3.2.3 数据检测模块测试
系统实现数据检测功能时,应完成检测算法效果的评估,并对数据传输过程进行测试,检测结果正常。
总体看来,方案中设计的入侵检测功能可基本实现,且能够正常运行。由于该入侵检测方案还未在真实的网络环境中长时间运行,因此检测结果还存在一定局限,但基本达到设计预期。
4 结论
基于人工神经网络的入侵检测系统被设计为嗅探器、数据审计和数据检测三个模块,深度学习与网络安全管理的结合有利于二者的同步发展。借助深度学习,不断提高网络安全管理水平,同时给人工神经网络带来更大的发展空间。为应对不断复杂的网络入侵手段,入侵检测需动态化发展,围绕人工神经网络,研究更多高效防御方法。