◆郑伟发
基于CNN-LSTM混合模型的入侵检测算法研究
◆郑伟发
(广东财经大学网络信息中心 广东 510320)
本文通过CNN提取网络数据连接基本特征,并将卷积运算后输出的高级特征作为LSTM网络的输入参数进行长序列预测,有效地解决LSTM的输入序列特征难题。本文以KDD99训练集进行模型训练和测试,实验证明本文设计CNN-LSTM混合模型有较高的准确率和F1值。
入侵检测;CNN;LSTM
近几年随着5G通信、移动互联网、物联网、“云计算”和大数据等新兴通信和信息技术的快速发展,网络安全变得越来越重要,而入侵检测作为网络安全一项重要的研究内容一直受到专家学者的关注。深度学习技术是目前人工智能领域应用最为广泛的技术之一,很多专家已经将其应用到入侵检测,并取得很好的准确率。文献[1]回顾了基于深度学习方法的入侵检测系统,分析递归神经网络、深度神经网络等七种模型,研究了二进制和多类的性能。文献[2]针对传统浅层机器学习方法无法有效解决海量入侵数据的分类问题,提出了一种基于深度信念网络的多类支持“向量机”入侵检测方法。文献[3]针对神经网络在线入侵检测模型训练时易出现过拟合和泛化能力弱的问题,提出基于改进的集成降噪自编码在线入侵检测模型以区分正常和异常的流量模式。文献[4]针对传统机器学习算法不能有效处理时序性强“网络”流量数据的问题,提出基于Adam 优化门控神经网络(GRU)的入侵检测方法。本文将基于CNN和LSTM模型提出一种基于网络特征的入侵检测算法。
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,主要由输入层、卷积层、池化层、全连接层和输出层构成,卷积层和池化层交替出现,不同结构的卷积神经网络卷积层数量、激活函数各不相同(图1)。
图1 CNN基本结构图
池化层跟在卷积层后面,主要是为了减少特征维度,加速网络收敛;另外就是去除冗余特征,在一定程度上防止网络过拟合。全连接层中的每个神经元与前一层的所有神经元进行连接,通过全连接层可以将前边学习到的所有局部特征进行整合,形成整体特征[5]。全连接层中每一个神经元都会采用激活函数进行操作,然后传递给输出层。
循环神经网络(Recurrent Neural Network, RNN)记忆单元没有衡量信息价值的能力,对于每个时刻的状态信息无法区分重要程度,导致无用的信息被存储在记忆单元中,而真正有价值的信息却被挤出去。文献[6]中Hochreiter等在RNN基础上进行优化,提出了长短期记忆网络(Long Short-term Memory, LSTM),通过引入记忆单元和门机制,有效克服RNN在训练过程中出现的梯度消失、梯度爆炸问题。
图2 LSTM网络内部结构
更新后的隐藏状态,计算公式如下:
LSTM通过门函数控制历史数据的记忆和遗忘,适合于处理具有时间序列特性的问题。LSTM能较好地联系上下文,但由于其结构复杂,随着输入的数据增加,计算量也随之增大,从而降低了上下文的联系,使得算法的准确率也随之降低。CNN通过卷积核操作,可以提取高层特征,在图像处理领域已经有成功应用。网络连接具有明显的时间序列特性,本文利用CNN模型提取网络流量高级特征,将特征作为LSTM 模型的输入,再进行入侵检测。
图3 CNN+LSTM网络结构
基于CNN-LSTM的入侵检测模型结构如图3所示,算法步骤如下。
Step 1 数据包抓取。通过流量采集模块采集实时网络数据,对网络流量数据包进行基本特征分析,例如网络协议类型、网络服务类型、网络连接状态和连接时间等。
Step 2 数据预处理。对网络协议、网络服务类型和网络连接状态文本类型数据进行One-Hot编码。同时,对数据包特征中连接时间等连续型数值数据按公式7对进行归一化处理。
Step 3 高级特征提取。将数据预处理后的数据包基本特征送入LeNet进行高级特征提取,通过一维卷积运算,输出高级特征。每个卷积层之后伴随一个BN层和LeakyReLU激活函数,能够提高网络的速度并且尽可能避免模式崩溃
Step 4 网络连接分类。将高级特征输入LSTM,经过一个softmax函数得到网络数据的分类结果。
本文采用KDD99数据集[9]进行算法测试。KDD99数据集,包括500万条网络连接记录,提供一个10%的训练子集和测试子集。KDD99数据集中每个网络连接采用TCP连接基本特征、TCP连接内容特征、基于时间的网络流量统计特征、基于主机的网络流量统计特征共4类41个特征进行描述。其中TCP连接基本特征9个,TCP连接的内容特征13个,基于时间的网络流量统计特征9个,基于主机的网络流量统计特征10个。KDD99将攻击类型分为DoS、R2L、U2R、Probing共4大类,细分为Teardrop、Guess_passwd、Buffer_overflow、Portsweep等共39小类。在训练集中包括了攻击类型名被标记在训练数据集每一行记录的最后一项。
本文实验中采用分类准确率(Precision)、召回率(Recall)和综合评价指标(F-Measure)判断模型分类效果。设TP表示正确识别为攻击类的样本数,FP表示错误识别为攻击类的样本数,TN表示正确识别为正常类的样本数,FN表示错误识别为正常类的样本数。
本文使用的软件环境为Python3.7,Tensorflow1.15,Keras2.24,实验硬件条件为Intel Core i7-3520 CPU,8G RAM。
采用Adam优化器和Categorical_crossentropy损失函数对模型进行训练,Adam学习率为0.000 1,Epoch均为2000,Batch_size为128,BatchNormalization中的Momentum为0.85, LeakyReLU中alpha设置为0.2,Dropout设置为0.4,LSTM中Recurrent_dropout设置为0.01。实验从KDD99训练集中选择300000条数据训练模型,剩余194021条用于测试模型。采用Sklearn工具包对训练集中的22种攻击类型进行One-Hot编码。结果如表1所示。
表1 LSTM与CNN+LSTM入侵检测准确率表
实验过程中,CNN采用3x3卷积核,步长为2,每个卷积层跟随1个BN层和Dropout层。表2中Label0表示正常网络流量,Label1~Label22代表22种不同的攻击类型。从实验结果看,CNN+LSTM混合模型的准确率高于LSTM模型,且收敛速度明显优于LSTM模型。模型训练的迭代过程如图4和图5所示。
图4 LSTM模型训练准确率图
表2 基于CNN+LSTM入侵检测模型各子类检测结果
本文结合CNN和LSTM提出一种入侵检测神经网络模型。通过卷积神经网络抽取原始数据特征,将处理后的高级特征作为LSTM网络的输入参数进行长序列预测,有效地解决LSTM的输入序列特征难题。本文以KDD99训练集进行模型训练和测试,并对LSTM、CNN+LSTM两种模型进行比较分析。实验证明,本文采用的基于CNN+LSTM的对入侵检测的准确率和F1指标均优于单纯的LSTM模型。
[1]Mohamed Amine Ferrag,Leandros Maglaras,Sotiris Moschoyiannis,Helge Janicke.A Deep Learning Approach for Intrusion Detection Using Recurrent Neural Networks[J]. Journal of Information Security and Applications,Volume 50,February 2020,https://doi.org/10.1016/j.jisa.2019.102419.
[2]Gao Ni,He Yiyue,Gao Ling. Deep learning method for intrusion detection in massive data[J]. Application Research of Computers,2018,35(4):1197-1200.
[3]吴德鹏,柳毅,基于集成降噪自编码的在线网络入侵检测模型[J].计算机应用研究,2019,37(11).
[4]陈土生,基于Adam优化GRU 神经网络的SCADA 系统入侵检测方法[J].现代计算机,2019(5):13-18.
[5]Sainath T N,Mohamed A,Kingsbury B,et al. Deep convolutional neural networks for LVCSR. Acoustics,speech and signal processing(ICASSP),2013 IEEE international conference on[C]. IEEE,2013:8614-8618.
[6]HOCHREITER S,SCHMIDHUBER J. Long short-term memory[M]//Supervised Sequence Labelling with Recurrent Neural Networks. Springer Berlin Heidelberg,1997:1735-1780.
[7]司念文,王衡军,李伟,等. 基于注意力长短时记忆网络的中文词性标注模型[J]. 计算机科学,2018,45(04): 66-70+82.
[8]Liu Y,Dong S,LU M,et al. LSTM based reserve prediction for bank outlets[J].Tsinghua Scienceand Technology,2018,24(1):77-85.
[9]KDD cup 1999 data[EB/OL].(1999-10-28).http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html.