基于dCNN的入侵检测方法
张思聪1, 谢晓尧2, 徐洋2     
1. 贵州大学 计算机科学与技术学院, 贵阳 550025;
2. 贵州师范大学 贵州省信息与计算科学重点实验室, 贵阳 550001
摘要:为了进一步提高入侵检测系统的检测准确率和检测效率,提出了一种基于深度卷积神经网络(dCNN)的入侵检测方法。该方法使用深度学习技术,如tanh、Dropout和Softmax等,设计了深度入侵检测模型。首先通过数据填充的方式将原始的一维入侵数据转换为二维的“图像数据”,然后使用dCNN从中学习有效特征,并结合Softmax分类器产生最终的检测结果。该文基于Tensorflow-GPU实现了该方法,并在一块Nvidia GTX 1060 3 GB的GPU上,使用ADFA-LD和NSL-KDD数据集进行了评估。结果表明:该方法减少了训练时间,提高了检测准确率,降低了误报率,提升了入侵检测系统的实时处理性能和检测效率。
关键词网络空间安全    深度学习    入侵检测    卷积神经网络    
Intrusion detection method based on a deep convolutional neural network
ZHANG Sicong1, XIE Xiaoyao2, XU Yang2     
1. School of Computer Science and Technology, Guizhou University, Guiyang 550025, China;
2. Key Laboratory of Information and Computing Science of Guizhou Province, Guizhou Normal University, Guiyang 550001, China
Abstract: This paper presents an intrusion detection method based on a deep convolutional neural network (dCNN) to improve the detection accuracy and efficiency of intrusion detection systems. This method uses deep learning to design the deep intrusion detection model including the tanh, Dropout, and Softmax algorithms. The method first transforms the one-dimensional raw intrusion data into two-dimensional "image" data using data padding. Then, the method uses dCNN to learn effective features from the data and the Softmax classifier to generate the final detection result. The method was implemented on a Tensorflow-GPU and evaluated on a Nvidia GTX 1060 3 GB GPU using the ADFA-LD and NSL-KDD datasets. Tests show that this method has shorter training time, improved detection accuracy, and lower false alarm rates. Thus, this method enhances the real-time processing and detection efficiency of intrusion detection systems.
Key words: cyber space security     deep learning     intrusion detection     convolutional neural network    

入侵检测是保护计算机系统和网络的重要防御手段。根据检测方法的不同,入侵检测主要分为基于特征的入侵检测和基于异常的入侵检测[1-2]。基于特征的入侵检测,检测精度较高,误报率较低,但其最大的缺点是无法对0-day攻击进行检测[3]。基于异常的入侵检测,能发现0-day攻击,但通常具有较高的误报率。根据检测对象的不同,入侵检测系统可以分为基于主机的入侵检测系统(host-based intrusion detection system, HIDS)[1]和基于网络的入侵检测系统(network-based intrusion detection system, NIDS)[2]

入侵检测的本质可以归结为对正常数据和攻击数据进行分类的问题。对于分类问题,机器学习算法被认为是最有效的算法之一,因而最近几年在入侵检测中获得了大量应用。传统的机器学习算法(如支持向量机、朴素Bayes、决策树等)和浅层学习技术(如人工神经网络等)虽然在检测准确率和误报率方面取得了不错的提高,但这些方法的检测性能都较依赖于特征[2]。随着AlphaGo[4]击败李世石,深度学习成为了人工智能领域的研究热点。作为机器学习的分支,深度学习能够自动地从原始数据中学习有效特征,从而提高分类的准确率[5],已经被广泛应用于计算机视觉[6]、医疗[7]、汽车设计[8]以及制造业[9]等领域,且均取得了不错的效果。

目前,已有大量学者开展了基于深度学习的入侵检测方法的研究,在入侵检测的准确率和误报率上均取得了比传统机器学习和浅层学习更好的检测结果。Shone等[2]使用多层非对称深度自编码器(stacked nonsymmetric deep autoencoder, S-NDAE)进行非监督特征学习,并结合随机森林(random forest, RF)算法进行入侵检测。Yu等[10]提出了一种基于会话的网络流量预处理方法,并结合多层降噪自编码器(stacked denoising autoencoder, SDA)从原始网络流量中提取特征,使用Softmax分类器完成检测。Alrawashdeh等[11]使用受限Boltzmann机(restricted Boltzmann machine, RBM)来构建深度信念网络(deep belief network, DBF),并通过DBF从原始数据中进行特征提取,将提取的特征送入微调后的Logistic回归分类器产生最终的检测结果[12-13]。Kim等[14]使用深度神经网络(deep neural network, DNN)结合当前深度学习中比较主流的线性整流函数(rectified linear unit, ReLU)[6]和适应性矩估计(adaptive moment estimation, ADAM) [15]优化算法,来检测高级持续性威胁(advanced persistent threat, APT)。Javaid等[16]提出使用稀疏自编码器(sparse autoencoder, SAE)和Softmax分类器来构建自学习(self-taught learning, STL)入侵检测方法。Dong等[17]将基于深度学习的入侵检测技术同各种传统的入侵检测技术进行了对比,发现基于深度学习的入侵检测技术在准确率、误报率等指标上都取得了更好的结果。另外,Hou等[18]和Yuan等[19]还将深度学习应用到安卓恶意代码检测中,也取得了不错的检测效果。

基于深度学习的入侵检测技术仍然面临着如下问题:1)虚拟技术、云计算、软件定义网络的兴起,使得当前的网络环境与传统的网络环境有较大差别,这对入侵检测的适用性提出了更高的要求。2)在大数据时代,每天都有海量的数据通过网络进行传输,如何高效地处理这些数据对入侵检测的速度和效率提出了更高的要求。3)检测的准确率和误报率一直是入侵检测的研究重点,虽然不少研究在这方面取得了明显的进展,但仍然有提升的空间。4)入侵检测作为一个在线系统,实时性是很重要的技术指标,深度学习虽然能提高检测的准确率,但由于参数较多导致难于训练,因而如何提高模型的训练速度、更好地满足入侵检测对实时性的需求,也是需要解决的重要问题。

近来,深度学习技术进一步的发展(如Dropout[20]的提出)和硬件设备计算性能的提升(如GPU的使用),使得深度学习模型的快速训练成为可能。本文提出了一种基于数据填充的数据转换方法,将一维的入侵检测数据转换为二维的“图像数据”。本文采用计算机视觉领域常用的卷积神经网络(convolutional neural network, CNN)[6],结合Dropout、ADAM等主流深度学习技术和Softmax分类器,提出了基于深度卷积神经网络(deep convolutional neural network, dCNN)的入侵检测方法,并基于Tensorflow-GPU实现了模型的代码。最后,将本文建立的模型应用于ADFA-LD[21]、NSL-KDD[22]等标准入侵检测数据集,对模型进行验证。

1 基于dCNN的入侵检测方法

深度学习能自动从原始数据中学习有用的特征,从而提高分类的准确率。Lecun等[23]概括了机器学习的基本架构,即特征提取模块和分类模块的组合。本文提出的基于dCNN的深度入侵检测方法也基于此基本架构,其组成如图 1所示,主要由3个模块组成:数据预处理模块、有效特征自学习模块和分类器模块。

图 1 基于dCNN的入侵检测方法的架构

1.1 数据预处理模块

数据预处理模块首先对原始数据进行特征化,包括:1)文本特征的数值化和数据特征的标准化等;2)由于原始的入侵数据通常是一维的向量数据,而CNN一般被用来处理二维的图像数据,故需要将原始的一维数据转换为二维的“图像数据”。之所以将“图像数据”打上引号,是因为此处经过转换后的数据样本并非真正的图像数据,但本文借鉴视觉处理的方法对其进行处理。将一维数据转换为二维数据的方法有很多,本文采用基于数据填充的转换方法,其转换过程的伪代码如图 2所示。该算法在保留单个初始样本x中所有信息的基础上,对样本进行特征扩展,并使用随机的正态分布来填充扩展出的特征。该方法非常简单,且容易实现,并在实验中获得了相当不错的检测结果。该方法之所以可以取得检测准确率的提升,主要是因为:1)由于该方法是对原始数据样本进行扩维,因而保留了原始数据样本中所有有用信息;2)扩展出的特征增加了数据样本的信息容量,能在一定程度上增加不同类别的数据在样本空间中相隔的距离。

图 2 数据转换算法

入侵检测数据的各个特征通常具有不同的取值范围,且不同取值范围之间的数值差异较大,因而在数据预处理阶段需要对其进行标准化。本文采用主流的z-score标准化方法,如式(1)所示。

$ {x_i}^\prime = \frac{{{x_i}-\bar x}}{v}. $ (1)

其中:$\bar x = \frac{1}{n}\sum\limits_{i = 1}^n {{x_i}}, v = \sqrt {\frac{1}{{n-1}}\sum\limits_{i = 1}^n {{{\left( {{x_i}-\bar x} \right)}^2}} } $n为样本总数,xi为标准化前样本数据某一维度的特征值,xi为标准化后样本数据对应维度的特征值。

1.2 有效特征自学习模块

有效特征自学习模块的核心是使用深度卷积神经网络从原始数据样本中自动学习并提取有用的特征,从而提高分类的准确率。本文作者认为可以将这个过程看作是从原始数据样本中学习、映射、生成新特征的过程。Lecun等[23]首次系统地对CNN进行了阐述,而Krizhevsky等[6]使用CNN在计算机视觉领域取得的突破使得CNN近年来成为计算机视觉领域中的研究热点。依据入侵检测数据的基本特点,本文设计的基于dCNN的有效特征自学习模块的基本结构如图 3所示。图 3中数字的含义为卷积核宽×卷积核高×特征图的个数。有效特征自学习模块采用的深度学习技术主要包括卷积运算与池化操作、Dropout、激活函数和ADAM优化算法[15]

图 3 有效特征自学习模块的基本结构

1.2.1 卷积神经网络

全连接神经网络通常容易出现参数爆炸问题,特别是当输入的样本数据特征较多时,尽管可以通过减少隐藏节点的个数来避免这个问题,但隐藏节点个数的减少通常也意味着分类准确率的下降。CNN的提出[6, 23]有效地解决了神经网络参数爆炸问题,还保证了分类的准确率。CNN中3个重要的核心概念是局部感知、参数共享和池化。

局部感知意味着隐藏层中的神经元无需和所有的输入像素进行连接,不同的隐藏层神经元只需要和输入像素中的某个特定区域进行连接。在CNN中,局部感知是由卷积层的卷积运算实现的。卷积运算通过卷积核在输入数据上滑窗实现。卷积运算如式(2)所示[24]。其中:s为输出数据也被称为特征映射,x为输入的样本数据,w为核函数的权重值,b为偏置值,f为激活函数。

$ \mathit{\boldsymbol{s}} = f\left( {\mathit{\boldsymbol{x}} \times \mathit{\boldsymbol{w}} + b} \right). $ (2)

为了进一步减少神经网络的参数,CNN引入参数共享。参数共享的本质就是所有的隐藏神经元共享一套权值参数和偏置参数,这是基于图像不同部分的统计特性通常是一样的[6, 23-24]。一套权值参数和偏置参数生成一幅特征图,一幅特征图的表示能力是有限的,因此一般在实际应用中,一个卷积层会生成多幅特征图。在图 3中,2个卷积层输出的特征图的数量分别为32和64。

池化过程则主要是为了对特征进行降维。池化操作一般计算某个局部区域多个特征的平均值或最大值,因此卷积神经网络中池化操作分为最大池化和平均池化。本文提出的方法采用的是最大池化操作。

1.2.2 防止过拟合

常见的防止过拟合的方法包括:正则化(L1正则和L2正则)、Early Stopping、增加样本量、Dropout、Batch Normalization等。本文采用在有效特征自学习模块和分类器中间插入Dropout层的方法来防止出现过拟合,如图 3所示。本文采用Dropout主要是因为它能有效防止模型出现过拟合,同时不会增加模型测试阶段的负担。Dropout的实现见式(3)。其中:上标l为神经网络的第l层,f为激活函数,p为保留概率,rl为满足Bernoulli分布的随机向量,yl为神经网络第l层神经元的输出值向量,yl为神经网络第l层神经元经过随机阻断后的输出值向量,wil+1是神经网络第l层所有神经元与第l+1层第i个神经元的连接权重值,bil+1是第l+1层第i个神经元的偏置,zil+1为神经网络第l+1层第i个神经元激活函数的输入值,yil+1是神经网络第l+1层第i个神经元激活函数的输出值。

$ \begin{array}{l} {\mathit{\boldsymbol{r}}^l} \sim {\rm{Bernoulli}}\left( p \right), \\ {{\mathit{\boldsymbol{y'}}}^l} = {\mathit{\boldsymbol{r}}^l}*{\mathit{\boldsymbol{y}}^l}, \\ z_i^{l + 1} = \mathit{\boldsymbol{w}}_i^{l + 1}{{\mathit{\boldsymbol{y'}}}^l} + b_i^{l + 1}, \\ y_i^{l + 1} = f\left( {z_i^{l + 1}} \right). \end{array} $ (3)

Dropout的实现过程如下:在模型训练时,按照概率p随机将神经网络中的某些神经元丢弃掉;而在测试阶段,所有的神经元都在线,可以通过阻止某些特征的协同作用来缓解过拟合[20, 25]。使用Dropout后,每次训练的都是一个新的网络(原来神经网络的子网络),因而对于含有n个隐藏节点的神经网络,可以得到2n个模型。预测时,对所有子模型的预测结果取平均,从而提高模型的容量以及泛化能力。概率p被称为神经元的保留概率。Srivastava等[20]指出当p=0.5时,Dropout的效果最好,此时生成的网络结构最丰富。

1.2.3 激活函数

常见的激活函数有sigmoid、tanh、ReLU[6]等。本文基于ADFA-LD[21]、NSL-KDD[22]等标准入侵检测数据集,比较了dCNN方法分别采用这3种激活函数时模型的学习过程,结果如图 4所示。图 4a为本文方法在ADFA-LD数据集上的七分类实验的收敛情况,图 4b为本文方法在NSL-KDD数据集上的五分类实验的收敛情况。实验是在保持深度网络其他参数一致的情况下进行的,优化算法采用ADAM,学习速率为1×10-4。从实验结果可以看出,在不同的数据集和不同的分类任务中,对于本文提出的基于dCNN的入侵检测方法,tanh激活函数的学习性能最好,故本文采用tanh作为dCNN的激活函数。

图 4 ADFA-LD和NSL-KDD数据集上不同激活函数性能比较

1.2.4 优化算法

ADAM算法是近几年深度学习领域中应用最为广泛的一阶优化算法。Kingma等[15]指出ADAM算法包含了适应性梯度算法和均方根传播算法两者的优点,为不同的参数设计了不同的自适应性学习速率,因而能更快收敛。入侵检测数据通常存在噪声和稀疏性的问题。本文在ADFA-LD标准入侵检测数据集上比较了ADAM算法和随机梯度下降(stochastic gradient descent,SGD)算法的性能。图 5展示了两种优化算法在ADFA-LD数据集上的学习过程。可以看出,不管是在收敛速度还是准确率上,ADAM算法都表现得更好。因而,本文选择ADAM算法作为dCNN模型的优化算法。ADAM的两个重要参数分别为一阶矩估计的指数衰减率β1和二阶矩估计的指数衰减率β2

图 5 ADFA-LD数据集上ADAM和SGD算法性能比较

1.3 分类器模块

分类器模块基于有效特征自学习模块学习到的特征,给出最终的检测结果。本文使用和CNN结合最多的Softmax分类器作为最后的分类模块。Softmax分类器如式(4)所示。其中:θj为第j个权重向量,x(i)为第i个数据样本。

$ {y_j} = \frac{{{{\rm{e}}^{{\theta _j}{x^{\left( i \right)}}}}}}{{\sum\limits_k {{{\rm{e}}^{{\theta _k}{x^{\left( i \right)}}}}} }}. $ (4)

本文还比较了常见的均方误差(mean square error,MSE)和交叉熵(cross entropy,CE)两种代价函数在ADFA-LD标准入侵检测数据集上dCNN模型的学习过程。图 6显示了在ADFA-LD数据集上完成七分类实验时采用两种不同代价函数的情况。实验结果表明,采用交叉熵作为dCNN模型的代价函数,模型收敛得更快,在多分类问题中具有更高的检测准确率。因此,本文采用交叉熵作为dCNN模型的代价函数。

图 6 ADFA-LD数据集上MSE和CE代价函数性能比较

2 实验

为了验证本文dCNN模型的实际检测效果,基于Tensorflow-GPU实现了模型的代码,并在一块具有3 GB内存的Nvidia GTX 1060 GPU上完成测试。本文共设计了3个实验:1)基于ADFA-LD[21]的七分类实验;2)基于NSL-KDD[22]的二分类实验;3)基于NSL-KDD的五分类实验。ADFA-LD数据集属于HIDS数据集,因而实验1可以验证本文方法在基于主机的入侵检测中的检测效果。NSL-KDD数据集属于NIDS数据集,因而通过实验2和3可以验证本文方法在基于网络的入侵检测中的检测效果。在实验2中,NSL-KDD数据集的测试集中有17种攻击是训练集中没有出现过的,可以验证本文方法对未知攻击的检测效果。本文采用的性能指标如式(5)—(9)所示。

$ 准确率 = \frac{{{\rm{TP}} + {\rm{TN}}}}{{{\rm{TP}} + {\rm{TN}} + {\rm{FP}} + {\rm{FN}}}}, $ (5)
$ 查准率 = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FP}}}}, $ (6)
$ 查全率 = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FN}}}}, $ (7)
$ 误报率 = \frac{{{\rm{FP}}}}{{{\rm{FP}} + {\rm{TN}}}}, $ (8)
$ {\rm{F}}-{\rm{score}} = 2 \times \frac{{查准率 \times 查全率}}{{查准率 \times 查全率}}. $ (9)

式(5)—(9)中各变量的含义解释如下,其中正例代表攻击数据、负例代表正常数据。

1) 真正例(true positive, TP):预测为正,实际为正;

2) 真负例(true negative, TN):预测为负,实际为负;

3) 假正例(false positive, FP):预测为正,实际为负;

4) 假负例(false negative, FN):预测为负,实际为正;

5) 准确率:被正确分类的样本占所有样本的比例;

6) 查准率:预测出的正例中真正例所占比例;

7) 查全率或召回率:预测出的真正例占实际所有正例的比例;

8) 误报率:预测出的假正例占实际所有负例的比例;

9) F-score:是对查准率和查全率的综合评价。

此外,对于二分类问题,本文还用受试者工作特征(receiver operating characteristic, ROC)曲线来分析检测性能;对于多分类问题,则使用混淆矩阵来直观地展示最终的检测结果。

2.1 基于ADFA-LD数据集的七分类实验

ADFA-LD是澳大利亚国防学院发布的基于主机的入侵检测数据集,此数据集是在一台Ubuntu 11.04主机上,通过auditd收集的。其数据包含正常和攻击两大类,攻击数据又可进一步细分为6个子类,详情见表 1。数据集中每条数据记录都是正常或异常访问主机时所产生的系统调用的序列[1, 26]。数据集已将所有的系统调用转换成对应的数字序列。

表 1 ADFA-LD数据集的详细情况[21]
数据类型 数量
正常数据 训练数据 833
验证数据 4 372
攻击数据 Adduser 91
Hydra_FTP 162
Hydra_SSH 176
Java_Meterpreter 124
Meterpreter 75
Web shell 118

将训练数据和验证数据合并为正常数据,攻击数据一共包含6种攻击类型,故整个数据集一共包含7种标签类型。采用词袋模型对数据进行特征化,特征化后,每个数据样本包含167个特征。然后,使用数据预处理模块按照图 2所示的算法将数据扩展到196个特征并进行填充,再将其转换为14×14的二维数据。取其中30%作为测试集,70%作为训练集。将训练数据送入模型进行40次迭代训练。训练结束后,使用测试集进行测试,并将本文方法测试结果同主流机器学习库Scikit-learn[27]中的MLPClassifier分类器(表 3中缩写为MLP)产生的结果进行比较。MLPClassifier采用两个隐藏层,每个隐藏层包含1 000个隐藏神经元,共进行1 000次迭代训练。另外,MLPClassifer使用L2正则化防止过拟合,使用主成分分析进行降维,主成分取k=60。两个模型的参数设置如表 2所示。其中:λ为L2正则项系数,ε为ADAM算法修正因子。测试结果如表 3所示,其混淆矩阵如图 7所示。

表 2 MLPClassifier和dCNN模型参数
模型名称 激活函数 优化算法 学习速率 β1 β2 ε λ
MLPClassifier tanh ADAM 1×10-4 0.9 0.999 1×10-8 0.01
dCNN tanh ADAM 1×10-4 0.9 0.999 1×10-8

表 3 ADFA-LD数据集七分类实验结果
数据类型 训练样本个数 测试样本个数 准确率/% 查准率/% 查全率/% 误报率/% F-score/%
dCNN MLP dCNN MLP dCNN MLP dCNN MLP dCNN MLP
正常数据 3 649 1 556 100.00 94.57 100.00 94.83 100.00 99.24 0.00 39.72 100.00 96.98
Adduser 60 31 100.00 98.71 100.00 80.00 100.00 15.38 0.00 0.06 100.00 25.80
Hydra_FTP 111 51 100.00 98.54 100.00 72.09 100.00 68.89 0.00 0.69 100.00 70.45
Hydra_SSH 127 49 99.94 98.15 98.00 84.38 100.00 49.09 0.06 0.29 98.99 62.07
Java_Meterpreter 88 36 99.83 98.26 97.14 60.53 94.44 58.97 0.06 0.86 95.77 59.74
Meterpreter 48 27 99.83 87.85 96.15 0.00 92.59 0.00 0.07 0.11 94.33 0.00
Web shell 82 36 99.94 97.82 97.30 33.33 100.00 21.88 0.06 0.91 98.63 26.42
总计 4 165 1786 99.78 92.50 100.00 91.00 100.00 92.00 0.00 5.34 100.00 91.00

图 7 dCNN模型在ADFA-LD测试集七分类实验的混淆矩阵

从测试结果可以看出,本文提出的dCNN模型比MLPClassifier在所有的指标上都取得了更好的性能:准确率提高了7.28%,误报率下降了5.34%。MLPClassifier的漏检率过高,达39.71%,意味着有大量的攻击行为被误判为正常行为,这对于入侵检测系统而言是不能接受的;而从混淆矩阵可以直观地看出, dCNN的漏检率为0。

2.2 基于NSL-KDD数据集的二分类实验

NSL-KDD是在KDD 99的基础上改进后形成的数据集,它解决了KDD 99中存在的一些问题[28]。该数据集中每条记录由41个特征构成,表示一次网络连接。数据集中的数据被标记为正常和攻击两种类型。其中,攻击类型又被分为4个大类,共39个攻击类型。其中的22种攻击出现在训练集和测试集中,另外的17种攻击只出现在测试集中,详细情况如表 4所示。尽管NSL-KDD还存在着一些问题[29],但目前它仍然是入侵检测领域的标准数据集,被大量的安全研究工作所采用。

表 4 NSL-KDD数据集的详细情况[22]
数据类型 训练集 测试集
正常数据 67 343 9 711
攻击数据 DoS 45 927 5 741
Probe 11 656 1 106
R2L 995 2 199
U2R 52 67
总计 125 973 22 544

针对二分类问题,将正常数据归为一类,剩下的所有攻击数据归为一类。参数设置和实验过程与2.1节基本一致。在数据预处理阶段,先对数据集中的3个文本特征数值化(每个文本特征转换为相应的整数值),然后将41个特征的数据样本扩展为42维,并使用数据转换算法对扩展特征进行填充,进而转换为6×7的二维数据。将训练数据中70%作为训练集,30%作为验证集。共进行20次迭代训练。训练完成后使用测试集进行测试。将测试结果同基于稀疏自编码器的自学习(STL)[16]深度入侵检测方法在NSL-KDD上二分类实验的结果进行比较。实验结果如表 5所示,dCNN在NSL-KDD数据集上二分类实验的ROC曲线如图 8所示。由于STL方法未提供误报率数据,故表 5中只列出了本文dCNN方法的误报率。从表 5的实验结果可以看出,dCNN在各个性能指标上都有所提高,在测试集上,dCNN的99.95%的准确率要优于STL的88.39%,且dCNN具有更好的泛化能力。ROC曲线的曲线下面积(area under ROC curve, AUC)值为0.999 8,这表明本文方法对于未知的攻击类型也有很好的检测能力。

表 5 NSL-KDD二分类实验结果
数据类型 个数 准确率/% 查准率/% 查全率/% 误报率/% F-score/%
dCNN STL dCNN STL dCNN STL dCNN STL dCNN STL
训练数据 125 973 99.92 98.40 99.99 98.90 100.00 97.50 0.01 100.00 98.84
测试数据 22 544 99.95 88.39 100.00 85.44 99.91 95.95 0.00 100.00 90.40

图 8 NSL-KDD数据集上二分类实验ROC曲线

2.3 基于NSL-KDD数据集的五分类实验

在五分类实验中,将攻击数据进一步细分为Dos、Probe、R2L、U2R共4个类别。数据预处理、参数设置和实验步骤与2.2节一致。共进行20次迭代训练。测试结果如表 6所示。表 6将本文方法实验结果同基于多层非对称深度自编码器(S-NDAE,表 6中简称为NDAE)[2]的入侵检测方法在NSL-KDD五分类实验的结果进行了对比。dCNN模型在测试集上的混淆矩阵如图 9所示。从表 6的实验结果可以看出,本文方法除了查准率外,其他指标均获得了不错的提升,特别是在准确率(98%)、误报率(0.02%)上取得了相当不错的检测结果。从图 9的混淆矩阵中可以直观地看出,本文方法在区分正常数据和攻击数据方面取得了不错的检测性能(仅2条误报、17条漏报),但在区分不同的攻击类型方面还有进一步提升的空间,特别是对R2L攻击类型的检测结果不是特别理想,还出现了17条攻击数据的漏检。

表 6 NSL-KDD五分类实验结果
数据类型 训练样本个数 测试样本个数 准确率/% 查准率/% 查全率/% 误报率/% F-score/%
dCCN NDAE dCCN NDAE dCNN NDAE dCNN NDAE dCNN NDAE
正常数据 67 343 9 711 99.90 97.73 99.83 100.00 99.98 97.73 0.18 20.62 99.90 98.85
DoS 45 927 5 741 99.60 94.58 99.37 100.00 99.32 94.58 0.27 1.07 99.34 97.22
Probe 11 656 1 106 98.37 94.67 78.72 100.00 99.00 94.67 1.67 16.84 87.70 97.26
R2L 995 2 199 98.33 3.82 98.96 100.00 86.63 3.82 0.12 3.45 92.39 7.36
U2R 52 37 99.85 2.70 78.57 100.00 29.73 2.70 0.02 50.00 43.14 5.26
总计 125 973 18 794 98.02 85.42 99.98 100.00 99.81 85.42 0.02 14.58 99.89 87.37

图 9 dCNN模型在NSL-KDD测试集五分类实验的混淆矩阵

本文还比较了dCNN和S-NDAE模型的训练时间,结果如表 7所示。可以看出,本文方法大大减少了模型的训练时间,而且如果采用性能更好、存储更大的GPU或者是GPU阵列,训练时间还将进一步缩短,这对于在线的入侵检测系统是很有意义的,意味着系统有更快、更好的实时处理性能。

表 7 模型训练时间
模型 训练时间/s
dCNN 59.39
S-NDAE(8个隐藏单元) 644.84
S-NDAE(14个隐藏单元) 722.54
S-NDAE(22个隐藏单元) 1 091.97

3 结论

为了提高入侵检测系统在复杂网络中的性能,本文提出了基于dCNN的入侵检测方法,并基于Tensorflow-GPU实现了模型的代码,使用Nvidia GTX 1060 3 GB的GPU完成了模型在ADFA-LD和NSL-KDD等标准入侵检测数据集上的测试。测试结果表明:本文方法无论是在HIDS七分类实验,还是在NIDS二分类和五分类实验中都取得了较高的检测准确率、较低的误报率和较高的查全率,模型对于未知攻击的检测也取得了较好的检测性能,而模型的训练时间却大幅度减少,能更好地满足在线系统对实时处理性能的要求。但是,本文方法在NSL-KDD多分类实验中的查准率还有待提高,特别是对不同的攻击类型的分类结果仍然有提升的空间,这也是在未来的工作中需要继续探索并解决的问题。另外,目前标准的入侵检测数据集仍然是预先经过人工处理过的,在未来的工作中,将尝试从原始的网络流量中提取相应的特征,使本文方法具有更好的适用性。

参考文献
[1]
CREECH G, HU J K. Generation of a new IDS test dataset: Time to retire the KDD collection[C]//2013 IEEE Wireless Communications and Networking Conference (WCNC). Shanghai, China, 2013: 4487-4492.
[2]
SHONE N, NGOC T N, PHAI V D, et al. A deep learning approach to network intrusion detection[J]. IEEE Transactions on Emerging Topics in Computational Intelligence, 2018, 2(1): 41-50. DOI:10.1109/TETCI.2017.2772792
[3]
YI Y A, MIN M M. An analysis of random forest algorithm based network intrusion detection system[C]//2017 18th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing (SNPD). Kanazawa, Japan, 2017: 127-132.
[4]
SILVER D, HUANG A, MADDISON C J, et al. Mastering the game of Go with deep neural networks and tree search[J]. Nature, 2016, 529(7587): 484-489. DOI:10.1038/nature16961
[5]
LECUN Y, BENGIO Y, HINTON G. Deep learning[J]. Nature, 2015, 521(7553): 436-444. DOI:10.1038/nature14539
[6]
KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[C]//Proceedings of the 25th International Conference on Neural Information Processing System. Lake Tahoe, USA: Curran Associates, 2012: 1097-1105.
[7]
LIANG Z, ZHANG G, HUANG J X, et al. Deep learning for health-care decision making with EMRs[C]//IEEE International Conference on Bioinformatics & Biomedicine. Washington DC, USA, 2015: 556-559.
[8]
LUCKOW A, COOK M, ASHCRAFT N, et al. Deep learning in the automotive industry: Applications and tools[C]//2016 IEEE International Conference on Big Data. Boston, USA, 2017: 3759-3768.
[9]
LEE H, KIM Y, KIM C O. A deep learning model for robust wafer fault monitoring with sensor measurement noise[J]. IEEE Transactions on Semiconductor Manufacturing, 2017, 30(1): 23-31. DOI:10.1109/TSM.2016.2628865
[10]
YU Y, LONG J, CAI Z P. Session-based network intrusion detection using a deep learning architecture[M]//TORRA V, NARUKAWA Y, HONDA A, et al. Modeling decisions for artificial intelligence. Berlin, Germany: Springer, 2017: 144-155.
[11]
ALRAWASHDEH K, PURDY C. Toward an online anomaly intrusion detection system based on deep learning[C]//15th IEEE International Conference on Machine Learning and Application. Anaheim, USA, 2016: 195-200.
[12]
HINTON G E, SALAKHUTDINOV R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504-507. DOI:10.1126/science.1127647
[13]
BENGIO Y, LAMBLIN P, POPOVICI D, et al. Greedy layer-wise training of deep networks[C]//Proceedings of the 19th International Conference on Neural Information Processing System. Cambridge, USA: MIT Press, 2006, 19: 153-160.
[14]
KIM J, SHIN N, JO S Y, et al. Method of intrusion detection using deep neural network[C]//Proceedings of 2017 IEEE International Conference on Big Data and Smart Computing. Jeju, Republic of Korea, 2017: 313-316.
[15]
KINGMA D, BA J. ADAM: A method for stochastic optimization[J/OL]. (2017-01-30)[2018-05-03]. https://arxiv.org/abs/1412.6980v9.
[16]
JAVAID A, NIYAZ Q, SUN W Q, et al. A deep learning approach for network intrusion detection system[C]//9th EAI International Conference on Bio-Inspired Information and Communications Technologies. New York, USA, 2015: 21-26.
[17]
DONG B, WANG X. Comparison deep learning method to traditional methods using for network intrusion detection[C]//8th IEEE International Conference on Communication Software and Networks. Beijing, China, 2016: 581-585.
[18]
HOU S F, SAAS A, CHEN L F, et al. Deep4MalDroid: A deep learning framework for Android malware detection based on linux kernel system call graphs[C]//2016 IEEE/WIC/ACM International Conference on Web Intelligence Workshops. Omaha, USA, 2017: 104-111.
[19]
YUAN Z L, LU Y Q, XUE Y B. Droiddetector:Android malware characterization and detection using deep learning[J]. Tsinghua Science and Technology, 2016, 21(1): 114-123. DOI:10.1109/TST.2016.7399288
[20]
SRIVASTAVA N, HINTON G, KRIZHEVSKY A, et al. Dropout:A simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1): 1929-1958.
[21]
[22]
TAVALLAEE M, BAGHERI E, LU W, et al. NSL-KDD[Z/OL].[2018-05-03]. http://www.unb.ca/cic/datasets/nsl.html.
[23]
LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791
[24]
GOODFELLOW I, BENGIO Y, COURVILLE A. Deep learning[M]. Cambridge, USA: MIT Press, 2016.
[25]
HINTON G E, SRIVASTAVA N, KRIZHEVSKY A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. Computer Science, 2012, 3(4): 212-223.
[26]
CREECH G, HU J K. A semantic approach to host-based intrusion detection systems using contiguous and discontiguous system call patterns[J]. IEEE Transactions on Computers, 2014, 63(4): 807-819. DOI:10.1109/TC.2013.13
[27]
BLONDEL M, BRUCHER M, BUITINCK L, et al. Scikit-learn[Z/OL].[2018-05-03]. http://scikit-learn.org/stable/.
[28]
TAVALLAEE M, BAGHERI E, LU W, et al. A detailed analysis of the KDD CUP 99 data set[C]//2009 IEEE Symposium on Computational Intelligence for Security and Defense Applications. Ottawa, Canada, 2009: 53-58.
[29]
MCHUGH J. Testing intrusion detection systems:A critique of the 1998 and 1999 DARPA intrusion detection system evaluations as performed by Lincoln Laboratory[J]. ACM Transactions on Information and System Security, 2000, 3(4): 262-294. DOI:10.1145/382912.382923