APP下载

基于LSTM的卷积神经网络异常流量检测方法

2021-07-24陈解元

网络安全与数据管理 2021年7期
关键词:数据包特征提取卷积

陈解元

(国家计算机网络与信息安全管理中心,北京100032)

0 引言

信息技术的广泛应用和网络空间的兴起发展,极大促进了经济社会繁荣进步,同时也带来新的安全风险和挑战。网络安全威胁逐步从信息窃听、篡改、传播病毒等方式上升为更新颖的高强度DDoS攻击、0day漏洞利用、APT攻击等形式,造成的大规模数据泄露和网络黑产行业大规模增长严重危害信息系统运营者权益和用户个人隐私[1]。网络空间中信息传输与交互均以流量为载体,通过异常流量检测,及时发现网络异常情况和攻击行为,对于强化网络安全应急响应能力,维护网络空间安全具有重要意义[2]。

入侵检测[3]作为一种主动安全防护技术,从网络系统中的关键节点收集信息,即时监视并分析网络中是否有违反安全策略的行为。入侵检测系统(IDS)[4]按照信息来源的差异分为两类:基于主机IDS和基于网络IDS,其中主机IDS[5]数据来源主要为防火墙、主机、网络设备等产生的日志,但随着大数据和云计算技术的发展,海量安全事件给设备和安全运维人员带来了“感知”上的巨大压力。基于网络的入侵检测系统[6]数据来源是网络上传输的数据包和网络设备的告警日志,在发现蠕虫病毒攻击、DDoS攻击、未知行为攻击等方面的有效性逐步得到验证,异常流量检测技术也受到越来越多的关注。

迄今为止,国内外学者已提出了多种异常流量检测方法,目前主流的研究方向是基于机器学习或深度学习的方法。其中,段詠程等[7]提出了一种基于随机森林网络安全态势要素提取方法;BIERSACK E等[8]提出了SVM算法,寻找出一个超平面将样本点与原点分离,用于异常检测;王辉[9]等在原有的朴素贝叶斯模型基础上引入属性加值算法,通过对分类参数的调控来优化分类精确度;文献[10]提出一种KNN算法,将入侵检测问题简化为二进制问题以减少数据集不均衡带来的影响,从而提高检测率。传统机器学习算法性能依赖流量特征选取,而深度学习算法通过表征学习,逐层提取抽象特征,在原始流量异常检测方面优势明显。文献[11]提出一种混合聚类神经网络模型,通过聚类分析剔除孤立样本后挑选具有代表性的样本训练神经网络;文献[12]提出一种多层网络结构CNN算法,利用不同尺度卷积核对大量高维无标签原始数据进行不同层次特征提取。上述方法虽然有较高的检测率,但这些研究并没有充分考虑异常流量的结构化特征,如源目IP间会话的时空特征、DoS攻击流量间时间特征等,造成有效特征遗漏。

针对以上问题,本文提出一种基于深度学习的异常流量检测方法,利用卷积神经网络和长短期记忆网络的混合算法提取网络流量数据的时空特征,以提高入侵检测的准确率。并在CIC-IDS2017数据集上对算法进行验证测试。

1 基于LSTM的卷积神经网络异常流量检测算法

卷积神经网络的基本思路是通过提取图像中相邻像素之间相似的表达和特征,对输入向量进行卷积操作,以提取局部特征作为下一层的输入,通过逐层提取与组合,转化为抽象且全面的信息,是深度学习的代表算法之一。本文构建的异常流量检测算法,使用CNN和LSTM的组合在时间和空间上学习和分类流包,保留特征序列的顺序性特点,以层次化的时空特征更准确地识别流量特征。CNN部分由输入层+卷积层1+池化层1+卷积层2+池化层2+全连接层组成,向LSTM部分输出一个高维包向量。LSTM部分由LSTM层1+LSTM层2+全连接层和输出层组成。整体过程将高维包向量处理成一个表示属于每个分类概率的向量,最终由Softmax层输出最终结果。算法流程如图1所示。

图1 整体算法流程图

1.1 数据预处理

数据预处理阶段的目标是将pcap格式的网络流量数据转化为卷积神经网络可运算的二维灰度图像,过程主要包括数据归一化、符号数据转换两个步骤。本文以会话(Session)为基本研究单元,其包含一组双方通信的数据包(Package)。

数据归一化阶段首先将训练数据集提供的数据按攻击类型切分,使用pkt2flow工具按照攻击源IP和目的IP分割成相应的数据包,与源目互换后的数据包组合成时间序列的会话组。将按照会话分类的pcap文件切分为q个数据包后,每个数据包取前x个字节。

符号数据转换阶段,以CIC-IDS2017数据集为例,官方已经为流量数据进行了特征提取,共产生Flow ID、Source IP、Source Port等80余条特征,以及正常或攻击类型标签。通过独热编码(One-Hot Encoding),将每一组特征取值表示为y维向量,如此转化为q个x×y大小的二维图像。在时序特征提取阶段,每次输入的单元数量必须为固定值n。

其中,切分数据包长度x和会话中数据包的数量n对算法效率和准确度影响较大,根据多次实验对比,取最佳数据包长度x=100,数据包数量n=8,该取值在多个测试数据集中具有普遍适用性。

1.2 数据包空间特征提取

基础的卷积神经网络由卷积(convolution)、激活(activation)和池化(pooling)三种结构组成。卷积层1使用带有小卷积核的卷积层来提取输入向量的局部特征,如协议类型和IP信息,在池化层1上可以得到准确的特征结果。在卷积层2使用较大的卷积核来分析两个相隔较远的部分之间的关系,如数据包中有效载荷的信息。

在卷积层中,使用不同的卷积核分别在前一层的特征图上滑动,扫描特征图上的值进行内积求和,再通过激活函数计算非线性映射,从而得出当前层的特征矩阵,公式表示为:

式(2)为卷积层激活函数,其中k为特征图中通道数量,A为Z向量通过激活函数的输出向量。

式(3)表示池化函数,其中p为预先指定的参数。在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤,将特征图中单个点的结果替换为其相邻区域的特征图统计量,保留有效特征的同时实现特征图降维,避免过拟合现象。

经过两次卷积和池化操作,整个流量图像被提取到一个较小的特征块中,代表整个数据包的特征信息,该特征块作为时序特征提取部分的输入层。

1.3 数据包时序特征提取

长短期记忆模型是一种特殊的循环神经网络(RNN)模型,用于处理具有长期依赖关系的时间序列数据。和传统的循环神经网络一样,模型结构分为三层,分别为输入层、输出层和隐藏层。输入层和输出层不再保持一一对应关系[13],并将循环神经网络中的每个隐藏单位换成了具有记忆功能的门控单元,每个门包含一个Sigmoid神经网络层和一个乘法操作,Sigmoid层输出特征通过量。本文LSTM部分由两个LSTM层、全连接层、Softmax层组成。

令x t和h t分别表示输入和输出,Ct表示LSTM的节点。第一步是确定模型将从一组单元中丢弃哪些信息,遗忘门公式:

遗忘门读取h t-1和x t,向Ct-1输出0~1之间的状态值,其中1表示完全保留,0表示完全丢弃。W和b分别为权值和偏置量。

式(5)决定哪些信息需要更新,由式(6)生成一个向量作为更新的替代项,将这两部分组合起来,通过式(7)对C t的状态值进行刷新。

式(8)决定单元格状态C t的哪些部分被导出,通过式(9)中tanh函数获得-1~1之间的对应值,输出最终结果。

2 实验结果与分析

2.1 实验环境与数据集

本文实验搭建的软硬件环境为:Kali Linux 2019操作系统,基于Python3.6的TensorFlow和Keras软件框架;Xeon Siliver 4210@2.2 GHz CPU,64 GB内存,NVIDIA Tesla P100显卡。

为了验证本文算法在原始网络流量数据上的通用性,数据集选用CIC-IDS2017,该数据集来自加拿大网络安全研究所,包含了基于HTTP、HTTPS、FTP、SSH等网络协议在内的真实网络数据流量51 GB,其中攻击流量包括FTP-Patator、SSH-Patator、DoS、Heartbleed、Web攻击、渗透、僵尸网络和DDoS 8种类型,并对流量数据进行了特征提取,共生成80余条特征,最后以标签的形式表明正常流量或攻击类型。数据类型如表1所示。

表1 CIC-IDS2017数据集分布

2.2 实验结果及分析

根据CIC-IDS2017数据集分类后各样本数据量及噪声率,从中选取了7类样本进行模型训练、验证和测试,其中各类流量的攻击行为标签分布如表2所示。

表2 各流量类型分布

参照机器学习和其他异常流量检测算法评价参数,选择准确率(Accuracy,ACC)、检测率(Detection Rate,DR)、误 警 率(False Alarm Rate,FAR)、分 类 器精度得分(F1-score)评价本算法,并与CNN算法和CNN1D(一维卷积神经网络)+LSTM算法进行对比。指标公式为:

其中,TP表示归类正确的目标样本数量,TN为归类正确的其他样本数量,FP为识别错误的目标样本数量,FN为被遗漏识别的目标样本数量。

训练过程如图2所示,在使用相同训练数据情况下,本文方法对比CNN和CNN1D+LSTM方法有更快的收敛速度,在较少迭代次数情况下准确率明显优于其他方法,在多次迭代情况下准确率能保持相近或略高于CNN1D+LSTM方法,在训练集上的最终准确率达到98.8%。

图2 本文算法与其他算法训练过程对比

从表3三种算法评价指标对比结果可以看出,与单独的CNN算法[14]相比,本文算法有效地提高了FTP-Pataor、DoS和Infiltration攻击流量的识别准确率。除DoS流量识别外,本文算法准确率较CNN和CNN1D+LSTM方法均存在明显优势,此外,本文算法的一个重要优势是在获得高检测率的同时,保持了极低的误警率,能够更准确地对网络流量进行分类。

表3 卷积神经网络算法对比

在相同的CIC-IDS2017数据集上,横向选取了Random Forest、SVM、DNN、Bi-LSTM等5类机器学习算法作对比[15],表4的实验结果表明,本文提出的CNN+LSTM算法在准确率、检测率、误警率指标方面均优于其他算法。

表4 机器学习算法横向对比

3 结论

针对传统入侵检测系统侧重于告警日志,在大规模复杂网络环境下检测精度低、系统开销大的问题,本文提出一种基于卷积神经网络(CNN)和长短期记忆网络(LSTM)的混合算法,从网络流量中提取特征,分析流量中隐含的网络攻击。在CNN提取单个数据包空间特征的基础上,充分发掘攻击数据包之间的结构特点,通过LSTM算法提取数据流的时间特征并进行融合。实验结果表明,本文算法总体准确率达到98.8%,对绝大多数攻击类型的识别准确率超过99.5%,与单独使用CNN算法及横向机器学习算法相比,本文算法在绝大多数情况下获得了更高的准确率,同时保持了极低的误警率,有效提高了基于流量的入侵检测算法准确度。但受限于卷积神经网络算法存在权值、阈值较多的特点,参数选择不恰当易陷入局部极小值。在未来的工作中,将进一步优化算法参数,优化样本量差异较大情况下检测准确率,减少训练开销。

猜你喜欢

数据包特征提取卷积
二维隐蔽时间信道构建的研究*
基于3D-Winograd的快速卷积算法设计及FPGA实现
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
卷积神经网络的分析与设计
基于Gazebo仿真环境的ORB特征提取与比对的研究
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
SmartSniff
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法