郭小静 李隘优
(闽西职业技术学院, 福建 龙岩 364021)
在信息技术、通信技术和计算机科学技术的推动下,互联网已经覆盖了社会生活的方方面面,对经济、教育、科技、医疗、军事等诸多领域都产生了极其深远的影响。随着网络开放程度的提高,局域网所面临的网络攻击风险也在同步提升[1],局域网范围内出现异常流量,是网络异常或遭受攻击的重要信号之一[2]。与正常流量相比,局域网异常流量在流量形式上发生了改变,通过对流量异常变化的检测,可以识别出网络攻击是否存在,及具体的攻击程度和攻击类型[3]。恶意的网络攻击,如DDoS攻击[4]、规模较大的端口攻击等,会导致局域网系统漏洞的出现[5],或出现局部网络的拥塞现象,进而引发局域网流量的异常。
现有局域网异常流量检测方法主要包括基于统计数据的检测方法[6]、基于聚类分析的检测方法[7]。其中统计数据检测以经验数据和统计数据模型的建立为基础,检测局域网的流量是否出现了异常,此方法容易实现且已成熟稳定,但检测的精度较低;而聚类检测不依赖于任何的经验数据,通过判断流量数据点与聚类中心点的距离[8],即可识别出进入局域网的流量是否异常,与统计数据模型相比聚类算法的检测精度有所改善,但检测效率低,耗时较长。为综合现有检测方法的优势,研究提出了一种基于全连接循环神经网络的异常流量检测技术,神经网络作为一种模拟人脑工作原理的新型信息处理模型,在处理异常流量数据方面,与传统检测方法相比具有更高的效率和准确率,而全连接循环神经网络是对经典神经网络模型的优化与改进,可以更进一步地保护局域网的数据安全。
循环神经网络是一种特殊结构的神经网络,能够满足大量序列数据的同时输入、输出及并行处理的要求。循环神经网络的神经元具有良好的连续性[9],不同时刻进入神经网络系统通过权重建立时间上的先后联系,提升数据之间的关联性。而全连接循环神经网络模型在中间隐含层之间也建立了相应的联系,以增强神经网络数据处理能力和逻辑分析能力。全连接循环神经网络的神经元在相邻时刻状态见图1。
图1中St和St+1分别为t时刻和t+1时刻神经元的状态;xt、xt+1及ut、ut+1分别为t时刻和t+1时刻神经元输入数据及输入权重比例;yt、yt+1及vt、vt+1分别为t时刻和t+1时刻神经元输出数据及输出权重比例;τt、τt+1分别为全连接循环神经网络神经元St状态和St+1状态下对应的激活函数[10];wt-1、wt、wt+1是连接t-1时刻、t时刻和t+1时刻的权重比例。状态分析结果表明,一个神经元的数据处理会受到相邻时刻的状态、激活函数类型、权重比例的影响,以St+1为例:
图1 全连接循环神经网络神经元相邻时刻状态图
St+1=τt+1(wt+1×St+yt+1×xt+1)
(1)
进入全连接循环神经网络的待检测数据可视为一组序列数据,基于时序分析的视角在t时刻输入数据xt视为一种随机过程满足条件{xt:t=0,±1,±2,…}。基于自回归模型分析和描述t时刻时间序列的输出过程:
yt=c+∑utxt+εt
(2)
式中:c为神经网络模型的常数项;εt为随机误差项。
对于全连接循环神经网络而言,输入数据训练是核心环节,但在数据训练中训练与学习的损失率会不断提高;同时受到循环神经网络层数和神经元数量的影响,容易导致模型梯度出现损失甚至消失[11]。为此,通过MBGD算法(小批量梯度下降)对模型的损失和收敛方向进行微调,改善由于损失率提升给模型带来的负面影响。全连接循环神经网络在应对大规模入侵检测数据时,由于梯度损失和模型收敛问题,训练效率会出现降低的趋势,MBGD算法的全局梯度降低速度快,并能够实现训练过程的在线更新,避免出现过多的模型训练次数。同时,将动量引入MBGD算法,动量参与梯度优化时,伴随着动量的增加,全连接循环神经网络模型的震荡频率会得到更好的抑制,同时循环神经网络模型的参数选择难度和复杂度都得到控制和降低。当待训练和待检测的原始入侵检测数据规模持续增大时,经过梯度优化的全连接循环神经网络模型的数据处理性能和处理效率不会受到影响。
在针对局域网的异常流量检测过程中,如果输入的数据集规模较大、结构复杂,为避免神经网络模型中间隐含层复杂度过高,使用GRU(门控循环单元)代替普通的神经元,可以降低全连接循环神经网络的复杂度,减少中间隐含层的数量,与MBGD算法共同降低神经网络模型的损失,GRU的基本结构见图2。
图2 GRU的基本结构
图2中,S0、S1和S2分别表示中间的计算结果,在全连接循环神经网络中,网络模型包含了来自多个方向的数据输入,令输入数据的维度为n,输入项xt表示为:
xt={xt1,xt2,…,xtn}
(3)
将全连接循环神经网络隐含层的第一层和最后一层的神经元数量同步设定为n,确保循环神经网络的神经元达到全连接的状态,见图3。
图3 全连接循环神经网络隐含层连接状态
与普通神经网络模型不同,全连接循环神经网络模型包括来自两个方向的输入,即当前状态下的数据输入和上一状态下的数据输入。当输入数据规模较大时,全连接循环神经网络在时间方向展开,具备强大的数据同步和并行处理能力。如果中间隐含层过于复杂导致模型梯度出现过快损失,此时使用GRU单元替代普通的神经元,降低全连接循环神经网络中间隐含层的复杂度,保证模型的数据处理性能不降低。全连接循环神经网络当前神经元的计算过程依赖于上一时刻的计算结果,如果将数据xt输入循环神经网络模型,当前神经元的状态St+1也会受到上一神经元状态St的影响。中间隐含层的每个神经元或GRU单元在t时刻和t+1时刻都对应一个输出,但只有最终的输入结果yt+1才能作为最终的输出结果,表示为:
yt+1=τt+1(ζ,…,xt,xt+1)
(4)
式中:τt+1表示t+1时刻全连接循环神经网络模型的激活函数;ζ表示模型参数。
(5)
式中:μ和σ分别为输入数据的均值和标准差。
在输入标准化数据训练中,随着数据规模的增大,模型的梯度损失增加,用损失函数表示,损失函数的类别有多种,在计算模型的代价损失时选择与标准化处理数据处理方法相匹配的均方误差值函数mset+1(y):
(6)
(7)
则在t+1时刻修正后的输入表示为:
(8)
在全连接循环神经网络模型的实际应用中,流量异常检测的过程是连续的,检测的整个过程类似于滑动窗口,在数据训练的时间上是接续的,且在计算过程中中间隐含层的位置也存在变化。异常流量检测基于对进入模型的全部数据的训练展开,全连接循环模式下,t+1时刻的数据规模和状态,以t时刻的检测状态为基础,通过测试预测值和真实值之间的差距计算实际距离存在的偏差,进而识别出进入神经网络模型数据流量是否异常。数据训练后的神经网络模型预测环节,无法直接反应出系统的当前状态,但能够以预测误差εt+1的方式表示真实值和预测值之间的偏差:
(9)
基于全连接循环神经网络模型的局域网异常流量检测流程如图4所示。
图4 基于局域网异常流量检测流程
步骤1:基于历史经验数据和系统采集到的相关信息,预先确定全连接循环神经网络模型中间隐含层的规模。神经网络的规模过大会带来硬件资源的过度占用。
步骤2:输入标准化处理后,基于小批量梯度法调整模型的损失和收敛方向。根据实际进入模型的数据规模确定全连接循环神经网络模型中间层数量,如果数据规模大或复杂,引入GRU替代普通的神经元,损失函数值的波动范围会影响数据训练的精度。
步骤3:确定激活函数、模型参数及控制距离阈值,各种参数的选择与中间隐含层的规模相关,也与GRU单元的数量有关,因此基于目标值的优化问题是一种迭代更新的问题,直到损失函数的均值趋于稳定。
在小区门前,杜一朵碰见了一个熟人。熟人问她一大早忙什么去?杜一朵随口说,打牌去。都晓得杜一朵爱打牌,且打得一手好牌。熟人也没多想,点点头就过去了。后来熟人又遇见一个熟人,熟人惯性地问,你也打牌去?那人两眼通红大着嗓门说,清晨八早打个屁!打炮!
步骤4:当损失函数的均值趋于稳定时,开始训练输入数据,训练中损失函数的值会出现波动,通过调整与阈值的差距保持损失值在较低的区间。最后将预测结果与目标值作对比,判断系统的状态及进入系统的数据是否存在异常。
实验数据集:实验用的数据集选用DBLP Datasets公开数据集,该实验用的数据集中包含了PUT、PSSO和GET等3种类型的数据。实验数据集中的正常请求25 000个,异常请求15 000个。数据集中的异常流量攻击类型有SQL注入、DDoS攻击、CRLF注入、脚本病毒和参数异常篡改等5种。
实验环境:在Mininet局域网平台内布置了1台控制器、2台交换机和5台主机,异常流量检测实验的硬件拓扑结构见图5。
图5 局域网络异常流量检测硬件的拓扑结构
实验操作选用兼容性更好的Linux系统,抓包工具为wireshark,系统语言选择python 3.5,此外系统执行python脚本。
首先检验全连接循环神经网络模型在不同神经元比重条件下损失函数值的变化,神经元比重越高表明系统的负荷越高,面临的数据流量处理压力越大,全连接循环神经网络模型的损失函数实际值与损失函数目标值的变化情况见图6。
图6 全连接循环神经网络模型的损失函数值变化
随着输入神经网络模型的数据集规模不断增大,打开的中间隐含层增加,参与工作的神经元比例也在增加。此时为了避免模型系统的负载过高导致损失函数值增加,全连接循环神经网络模型会使用GRU单元替代部分神经元,降低模型的总体资源占用,同时调整均方误差的阈值范围,确保实际的损失函数值曲线与其目标值曲线不产生过大的偏差,进而保证了模型的工作效率和检测率。
而在经典循环神经网络模型控制下,实际的损失函数值曲线与其目标值曲线仍有较大的偏差,随着参与工作的神经元数量的增加,模型的损失函数值会不断增加,见图7。
图7 经典循环神经网络模型的损失函数值变化曲线
(10)
(11)
(12)
式中:TP为异常流量被正确检测出的比例;FN为异常数据被错误检测出的比例;TN为正常数据被正确检测出的比例;FP为正常数据被错误检测出的比例。
将包括正常请求和异常请求在内的一共40 000个数据随机分为10个数据组,检测全连接循环神经网络检测算法的DR、FAR及FAR指标值的分布情况,结果见表1。
表1 全连接循环神经网络检测算法性能指标值
同时对比基于统计数据的异常流量检测算法和基于聚类分析的检测算法的3个指标值的分布情况,结果见表2和表3。
表2 基于统计数据的异常流量检测算法性能指标值
表3 基于聚类分析的异常流量检测算法性能指标值
统计数据结果显示,提出的全连接循环神经网络模型的检测率DR、假阳性率FAR和检测精度ACC指标平均值,明显优于统计数据监测算法和聚类分析检测算法,具有更好的局域网异常流量检测性能。
通过对局域网异常流量的判断,能够检测出局域网是否遭受到了攻击。神经网络算法能够有效处理大规模的入侵数据,在经典神经网络算法的基础上,设计了一种全连接循环神经网络模型,提升隐含层的数据计算能力。同时为了更好地控制模型的梯度损失,基于函数损失实际值和目标值之间的均方误差设定距离阈值,均衡模型的资源占用与隐含层的总体规模。实验结果表明,所设计模型的检测率、假阳性率和检测精度指标,都要明显优于基于统计数据的异常流量检测算法和基于聚类分析的异常流量检测算法。