APP下载

一种基于深度学习的网络异常行为检测方法

2020-08-13李铮傅阳

网络安全技术与应用 2020年8期
关键词:约简建模样本

◆李铮 傅阳

(1.中国电子科技集团公司第十研究所 四川 610036;2.电子科技大学计算机科学与工程学院 四川611731)

随着云计算、大数据、人工智能等技术的快速发展,各行各业的信息化程度越来越高,逐步向数字化网络方向发展。各类行业互联网快速形成和使用,提供了丰富的数据资源、计算资源和服务资源等网络内容,网络已经成为人类社会的重要基础设施和各国的重要战略资源。然而伴随新技术的使用、智能设备的引入、数据共享及平台互联的趋势,网络环境成了黑客攻击的热点,其面临的安全风险和安全问题更加严峻。同时,由于智能化因素的加入,使得网络攻击手段更加多样、隐蔽和快速演变,越来越多的新型网络攻击不断出现,对现有网络入侵检测技术提出了巨大挑战[1]。

传统网络攻击检测主要依赖于特征和规则,无法自动利用历史数据,及时发现最新攻击。目前,有许多论文中使用了机器学习和深度学习的方法来实现网络安全状态感知,取得了较好的效果。但由于网络日志数据规模巨大但质量较差,具有不完备特性,既存在宏观上的大量冗余数据和特征,又存在微观上的大量数据值缺失,导致现有方法存在历史数据利用率低、训练时间开销大、模型精度低等问题,无法满足实际业务需要[2]。

为此,本文提出了一种基于深度学习的网络异常行为检测方法,实现对不完备网络数据进行补全和冗余属性约简,并结合深度学习的方法,对网络异常行为检测进行建模,基于训练的检测模型,可以实时检测网络安全状况并对网络中的异常行为进行检测和告警,从而对动态风险进行及时有效的控制,起到保护网络资产和用户的隐私、维护网络安全的作用。

1 相关工作

在网络数据不完备方面,由于网络攻击行为具有隐蔽性、对抗性、复杂性等特点,同时还包含制造虚假数据或删除数据的行为,使得面向行为刻画的网络数据存在不完备特性,包括内容缺失、特征冗余等问题。因此,对不完备数据的有效处理,是后续对网络行为准确建模的前提。现有处理方法包括数据补全和数据筛选等。文献[3]将BP网络应用于“多源网络”数据融合,利用加权分类方法确定数据特征之间的距离,从而得到数据特征间的相互支持度,并利用特征提取方法降低数据维度。但该方法存在训练时间较长、实时性较差的问题。文献[4]提出动态填充的不完备数据聚类方法,实现了不完备数据的有效填充。文献[5]将“粗糙集”和深度学习相结合,将收集到的网络数据进行特征属性集约简,以去除内容残缺特征或冗余特征的干扰,文献[6-7]中提出了基于“粗糙集”理论的不完整数据补全方法。

在网络行为检测模型方面,文献[8]提出了基于深度置信网络的网络行为建模方法,通过搭建多层的限制玻尔兹曼机,并将原始网络网络数据规整为相同长度的向量,输入到网络中对行为进行建模,达到了93%以上的精确度。文献[5]在深度置信网络的基础上,还加入了基于“粗糙集”理论的缺失数据补全和属性集约简,使得精度进一步提升。

此外,近几年态势感知方面的文献[9-12]中也用到了DBN、SVM等方法进行网络行为的建模和异常行为的检测,取得了较好的精度,但还存在进一步优化的空间。因此,利用深度学习方法进行行为建模和异常行为检测具有技术上和理论上的基础,具有很高的可行性。

2 方法设计

本文提出了一个基于深度学习的网络异常行为检测方法,该方法包括模型训练和异常检测、模型再训练三阶段,如图1所示。

训练阶段利用具有标签的历史数据,训练得到网络异常行为检测模型。在检测阶段,利用该模型对实时获取到网络数据进行分析,对于异常行为系统要进行及时告警,并记录在日志中。在训练阶段,则利用最新加入的样本数据,对模型进行更新,使得模型能够适应最新的网络攻击。其中,训练阶段是本文的重点,主要包括数据预处理、模型构建与训练两个步骤,数据预处理步骤,针对采集的网络数据的不完备性,需要对原始数据存在的数据缺失、特征冗余的问题进行处理,使得数据更完整、准确可靠,并要对预处理后的数据进行规整,整合成为同一长度的向量。模型构建与训练,则基于一种深度学习算法设计了网络异常行为检测模型,并基于历史数据进行模型训练。下面对两个步骤的具体方法进行详细介绍。

图1总体方案

3 数据预处理

由于,采集到的网络数据存在典型不完备的情况,需要对数据进行“缺失值”填充、冗余特征约简、数据规整,整合成为统一尺度的特征向量。

(1)“缺失值”补全

针对原始数据中的缺失值,“缺失值”填充使用了基于聚类的“缺失值”动态填充方法。该方法首先将数据集划分为不完整数据集和完整数据集,对缺失数据使用完整数据集中对应属性的平均值进行填充,然后迭代使用K-Means进行聚类,对“缺失值”使用其所在聚类中心的对应属性值进行再次填充。迭代的终止条件由定义的相似度进行判别,相似度S的定义如下:

其中,K为聚类的类个数,ib表示连续两次聚类结果中某个类iC中所共有的对象个数,n表示对象总数。当相似度S大于设定阈值(0.98)时,则动态填充已经趋于稳定,“缺失值”的填充是合理的。

(2)冗余特征约简

“缺失值”充分填充后,计算数据中每个特征的权重,并设定阈值,去除权重值较小的特征。在冗余特征约简的过程中应用了ReliefF算法,该算法是Relief算法的改进版,与Relief算法仅适用于二分类不同,ReliefF算法能够应用在多分类问题中的特征约简问题。

该算法首先计算特征的权重矩阵,每个特征值的权重初始化为0。并从数据样本中,随机取出一个样本及其标签值tag,在同一标签的样本中随机选取K个样本,并在其他不同标签的样本中随机选取K个样本。然后计算样本之间在特征上的距离,并更新每个特征的权重w。即用上一轮的权重值,减去相同分类的该特征差值,然后加上不同分类的该特征的差值,计算公式如下:

其中dist(A,R,Y)为距离公式,计算样本R在特征A上与样本Y的距离(欧氏距离),w(A)为上一次迭代的权重,w'()A为更新后的权重。在设置适当的迭代次数后,会得到各个特征的权重矩阵,通过设定阈值,去除影响因素较小的权重,从而达到冗余特征约简的目的,对最终的精度影响较小并能够缩短时间开销。

(3)数据归一化

数据归一化,是将数据中的特征进行分类,分为数字型特征和字符型特征。在冗余特征完成后,将数据输入到规整子模块中,生成统一尺度的特征向量。

首先,需要对数字型数据进行遍历获得最大最小值以便进行归一化,通过归一化将数字型数据的值固定在[0,1]之间,能够减少特征之间由于尺度不同而造成的差异。归一化公式如下:

同时,获取所有字符型数据的类型以便进行热编码。首先,生成字符型数据的字典,字符型数据的每一个类,都对应一个数字,然后再根据字典进行热编码,字典的长度即为该字符型数据的种类个数,也是热编码向量的长度。其次,将热编码向量全部初始化为0,然后将该类型在字典中对应数字作为索引,将该热编码向量中该索引对应的值设定为1即可完成数据的热编码化。

4 模型构建与训练

本文异常检测模型采用深度神经网络(DNN)算法进行构建,然后将规整向量输入到模型中进行训练和测试,保存训练好的模型。

本文构建的基于DNN的检测模型共有6层,包含一层输入层,一层输入层以及四个隐藏层,输入层大小为n,对应输入特征向量的维度;输出层大小为m,对应分类标签值数量;四个隐藏层的大小分别设置为128、512、512、128,神经元的激活函数选择了RELu函数,即线性整流函数,一般情况下线性整流函数代指了数学中的斜坡函数,即:

当输入值小于等于0时,函数输出值均为0;当输入值大于0时,函数直接输出输入值。建模模型的损失函数选择了交叉熵误差函数,其计算方式如下:

其中,log表示以e为底的自然对数,yk是神经网络的输出,tk是正确解标签,并且当标签值是热编码处理时,只有正确解标签的索引对应的值是1,其余均为0。

在模型过程中,由于训练样本数据规模通常较大,若一次全部训练完成需要的开销过大,为了加快训练过程,将数据分成m块,并分m批进行模型训练,减小训练的开销。第一次训练时需要初始化模型,每一批数据训练完成后还需要保存本次训练的模型。然后,下一批训练开始时直接加载上次训练的模型继续训练即可,当所有批次的训练完成后,再使用测试数据进行测试。在具体模型训练时,优化器选择了Adamoptimizer,batch_size设置为10000,学习率为0.001,每批数据的训练轮次为10000次。

5 实验与分析

在Windows 10操作系统环境下,基于TensorFlow-GPU 1.8.0深度学习框架、Python3.6开发语言,设计实现了算法模型代码。对本文数据预处理中的特征约简,以及完整模型的效果进行了对比实验,来验证方法的有效性。

(1)冗余特征约简效果对比

为了验证冗余特征约简效果,需要在数据预处理部分采用和不采用约简步骤,得到两组不同的规整特征向量,输入到本文模型中进行训练、测试,将得到约简前后的测试精度进行对比,从而说明冗余特征约简的有效性。冗余特征约简的效果对比如表1所示:

表1冗余特征约简对比

从表中可以看出,在相同训练样本和测试样本下,冗余特征约简后,精度较未约简降低了0.13%,原因是约简特征时,去除特征的权值不为0,因此其对最终的精度是有一定影响的。但是去除特征后时间缩短了将近17s。因此,冗余特征约简是有效的,其能够在不大幅度影响精度的条件下,节省比较可观的时间。

在使用冗余特征约简方法时,考虑了模型训练中的损失值变化如图2所示:

图2模型训练损失变化图

可以看出,模型训练损失值在三个时间段内都很高,然后通过后训练损失值逐渐降低,最后损失值在0附近波动,说明训练对部分数据已经有了很好的特征提取,因此能够很准确地识别训练数据。

同时,经过对数据进行分析,找到了为什么会出现两次损失的原因:不同标签的数据分布不均匀,可能某批次的数据中包含与前几次训练标签不同的数据,因此在该轮训练中损失值会非常高,然后通过多轮训练将损失值再次降低,最终将损失值降低到0附近,实现对数据集的完整训练。

(2)模型效果对比

未来验证本文基于DNN的异常行为检测模型的效果,都采用本文的数据预处理方法,对比测试了基于DBN和SVM算法的两种情况,性能对比如表2所示:

表2三种建模方法对比

从上表可以看出,本文模型在测试精度和平均测试时间来看为三种方法中最佳的,达到了96.66%,超出了基于DBN方法的93.10%,以及基于SVM方法的83.23%。同时,本文模型的平均耗时也是三者中最少的。

6 结束语

本论文提出了一种基于深度学习的网络异常行为检测方法,其核心是利用历史网络数据,建模并训练网络异常行为检测模型,进而实现快速、高精度的异常行为检测。通过对比实验与分析,验证了本文方法中冗余特征约简,以及整体模型的有效性。下一步工作,将继续关注如何提高模型的时间和精度性能,以及考虑模型的持续演进问题。

猜你喜欢

约简建模样本
基于FLUENT的下击暴流三维风场建模
基于0-1规划的最小属性约简算法
用样本估计总体复习点拨
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
求距求值方程建模
面向特定类的三支概率属性约简算法
直觉模糊序决策系统的部分一致约简*
基于PSS/E的风电场建模与动态分析
规划·样本
近似边界精度信息熵的属性约简