基于GRU-RNN的网络入侵检测方法
2021-06-10李俊夏松竹兰海燕李守政孙建国
李俊, 夏松竹, 兰海燕, 李守政, 孙建国
(1.国家工业信息安全发展研究中心,北京 100040; 2.哈尔滨工程大学 计算机科学与技术学院,黑龙江 哈尔滨 150001)
网络安全包括承载载体的完整性、可用性及机密性。任何企图破坏机密性或者绕过网络安全机制的活动都可以视为网络入侵[1]。网络入侵检测系统是一种用于检测网络入侵的安全管理系统,是网络安全系统中不可或缺的一部分[2]。网络入侵检测系统通常会抓取检测特定网络中全部的出流量及入流量,以确定其中一些数据包是否含有入侵迹象[3]。
近年来,机器学习的许多研究应用在入侵检测领域。例如,支持向量机、人工神经网络和遗传算法在入侵检测领域取得了不错的成绩。但是由于入侵呈现多样化,现有的机器学习方法暴露出很多局限性。尤其在自动提取入侵特征和分析中,需要更好的学习方法。
Hinton等[4]研究发现,深度学习被广泛应用在自然语言处理、图像识别和天气预报领域。深度学习中应用高度非线性结构,在处理复杂数据时表现出出色的识别能力。并行计算硬件设施的高速发展也为深度学习算法提供了强有力的硬件支撑。通过设计合理的网络结构,深度神经网络可有效控制神经网络的参数量,确保网络性能的同时,降低神经网络的运行成本[5]。
由于训练和计算复杂性,递归神经网络(recurrent neural network,RNN)在过去的一段时间未能成为主流深度学习的网络模型。近些年,RNN开始进入快速发展时期,在手写识别[6]和语音识别[7-8]领域有了广泛的应用。RNN的特点是同一层中的节点是连通的。因此,隐藏层的输入不仅包括上层的输出,还包含最后一个时间点的同一层的输出[9]。许多入侵行为可以抽象为来自底层网络的特定时间序列的时间。因此,RNN被认为适合用来构建入侵检测系统。
本文将门控循环单元(gated recurrent unit,GRU)结构放在RNN神经网络中进行入侵检测,模型可以识别具有时序特性的入侵流量。分析并设计模型的层次结构,分析最优的损失函数、分类函数,提出了一种最适用于本文的优化函数,加快模型收敛速度。
1 数据预处理
1.1 数值化
使用归一化、数值化方法处理元数据。KDD数据集中的数据是多组一维向量组成:
[0,tcp,http,SF,219,1098,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,7,255,1.00,0.00,0.14,0.05,0.00,0.01,0.00,0.00,normal]
每列所代表内容为:
[“duration”,“protocol_type”,“service”,“flag”,“src_bytes”,“dst_bytes”,“land”,“wrong_fragment”,“urgent”,“hot”,“num_failed_logins”,“logged_in”,“num_compromised”,“root_shell”,“su_attempted”,“num_root”,“num_file_creations”,“num_shells”,“num_access_files”,“num_outbound_cmds”,“is_host_login”,“is_guest_login”,“count”,“srv_count”,“serror_rate”,“srv_serror_rate”,“rerror_rate”,“srv_rerror_rate”,“same_srv_rate”,“diff_srv_rate”,“srv_diff_host_rate”,“dst_host_count”,“dst_host_srv_count”,“dst_host_same_srv_rate”,“dst_host_diff_srv_rate”,“dst_host_same_src_port_rate”,“dst_host_srv_diff_host_rate”,“dst_host_serror_rate”,“dst_host_srv_serror_rate”,“dst_host_rerror_rate”,“dst_host_srv_rerror_rate”,“label”]
其中4项是字符型的数据,需要对其进行数值化处理。例如最后一项数据类型label,共有5种,分别是普通行为、拒绝服务攻击、网络窥探、越权攻击、远程攻击。此部分数据离散化不能作为GRU-RNN模型的直接输入,需要将数据重新编码。可以采用One-hot编码方式。在用机器学习算法分类时,计算各个特征之间的距离非常重要。One-hot编码基本思想是将原数据的离散值转换为欧式空间中的一个点。label分类的转换可以如表1所示。
表1 攻击分类one-hot编码表Table 1 Attack classification one-hot code table
1.2 归一化
元数据的范围不一致,例如第一列数据在(0,1)分布,第5列数据理论上可以达到无穷大。不利于神经网络的处理。如果数值过大会增加计算负担。所以对数据进行归一化处理,例如将第5列数据归一到(0,1),本文采用归一化式:
(1)
2 GRU-RNN网络结构
2.1 RNN循环神经网络
推出RNN的目的是因为人们想要利用带有顺序性的数据。在传统的神经网络中,假设所有输入和输出互相独立。但是对于许多的任务处理,这种处理方式得到的模型效果很差。例如某人想要预测句子的下一个单词,那么他最好知道之前的单词都是什么,否则无法完成预测。RNN之所以称之为递归,是因为它对序列的每个元素都执行相同的任务,它的输出受之前运算影响。RNN具有记忆功能,可以捕获到目前已经计算出来的所有有关的内容。
RNN具有记忆功能,得益于RNN的模型结构设计,可以将之前的信息传递到后面的隐含层中,从而达到记忆的效果。RNN能够记住在时间t处理的信息,在随后的时间进行计算,RNN模型结构图如图1所示。
图1 递归神经网络结构Fig.1 Recurrent neural network structure diagram
RNN的模型结构比较简单,由输入层、隐藏层和输出层组成。输入层与隐含层和隐含层与输出层之间为全连接的状态,隐含层自身也有一个自循环结构。RNN模型展开图如图2所示。
图2 递归神经网络的层级展开Fig.2 Hierarchical expansion of recurrent neural network
RNN展开图中t-1,t,t+1代表时间顺序。输入层用x表示,W表示之前样本的权重矩阵,U表示当前时刻输入样本的权重矩阵,V表示输出的权重矩阵。St表示数据在时间点t的隐藏状态,其计算过程受上一个时间点计算出来的状态影响:
St=f(W*St-1+U*Xt)
(2)
其中,f(·)为激活函数,采用tanh函数。
模型一般在t时刻初始化各类初值,其余值初始化阶段:
h1=Ux1+Ws0
(3)
s1=f(h1)
(4)
o1=g(Vs1)
(5)
其中g(·)为激活函数,采用SOFTMAX函数,在一次运算完成后,当前的状态将作为t时刻的状态参与下一时刻的运算:
h2=Ux2+Ws1
(6)
s2=f(h2)
(7)
o2=g(Vs2)
(8)
由此可知,最终输出的式为:
ht=Uxt+Wst-1
(9)
st=f(ht)
(10)
ot=g(Vst)
(11)
可以将隐藏状态视为RNN“内存”。 捕获t时间点前发生的所有事情,并基于t时间点计算输出。RNN在所有步骤中共享相同的参数(U,W,V),减少了学习过程中需要学习的参数总数。
2.2 门控制循环单元
门控循环单元(gated recurrent unit,GRU)在多种应用领域中被证明是一种有效的LSTM变体,其结构是LSTM的简化和提升版[10]。使用复位门和更新门替代LSTM结构中输入门、遗忘门和输出门。复位门来计算是否忘记之前计算状态,更新门决定将上一步多少信息继续迭代到当前步骤[11]。GRU结构如图3所示。
图3 门控循环单元结构Fig.3 gated recurrent unit structure diagram
GRU结构的主要计算式:
rt=σ(Wrxt+Urht-1)
(12)
zt=σ(Wzxt+Urht-1)
(13)
(14)
(15)
GRU结构比LSTM简单,在运算的速度和性能上比LSTM更有优势[12],其展开图如图4所示。
图4 门控循环单元展开Fig.4 Hierarchical expansion of gated recurrent unit
2.3 GRU-RNN网络设计
传统网络入侵检测[13-14]被证明是非常有效的检测手段,但这类检测方式只对例如越权攻击有较好的检出率[15]。由于网络入侵有明显的时序性,例如DDOS攻击就是在短时间内大量的访问某服务造成服务不可用的状态。传统的检测方式[16],无法对持续一段时间的攻击行为进行检测,会在迭代学习的过程中产生一种梯度消失的现象,即遗忘[17]。所以本文采用RNN循环神经网络,结合GRU模型,能够处理具有时序性的攻击信息。
将GRU与RNN结合,构建GRU-RNN网络入侵检测模型。如图5所示,该系统由数据预处理模块、过采样模块、GRU模块、RNN模块和输出模块组成。预处理模块负责将原数据转换为适合神经网络输入的数值;GRU模块由2个GRU层组成,每层含2个GRU结构存储数据,是系统的核心部分;RNN模块含15层隐含层,对GRU模块的输出执行非线性映射,最终做出非线性的分类决策。KDD数据集共有5种行为,分别是普通行为、拒绝服务攻击、网络窥探、越权攻击、远程攻击。所以输出层采用SOFTMAX函数对结果进行分类处理,可标准化分类概率并将其输出为最终结果。
图5 GRU-RNN网络结构Fig.5 GRU-RNN network structure diagram
在这些组件当中,GRU和RNN模块是2种不同的神经网络模型。GRU结构复杂,计算量大。RNN结构简单,可以进行快速的计算且易于堆叠。所以本文采用2层GRU和15层RNN隐含层来实现。两者构成一个深层网络,实现更优化的结果。
输入层具有41个输入神经元,输入层连接到2个记忆模块的隐含层,输入层的神经元与隐含层是全连接的关系。
1)输入层设计。
将KDD-99数据集中的元数据数值化和归一化后输入GRU-RNN模型。其中protocol_type、service、flag和label元数据为字符型,利用One-hot编码成为标量。对src_bytes、dst_bytes等数据归一化成为(0,1)标量。元数据共41个维度,处理后对应41个输入神经元的输入层将元数据输入GRU-RNN。
2)GRU与RNN隐含层设计。
由2层记忆层组成,该部分负责存储数据,即模型最核心的创新点“记忆功能”。用于识别持续时间较长的攻击行为。然后将数据导入一个15层的RNN隐含层进行特征识别。
3)输出层。
该KDD-99数据集中共有5种行为被标识,所以本系统采用一个5个输出神经元的输出层。
3 实验
3.1 测量方法
对于分类问题,分类结果可以是正确的或不正确的,所有可能的结果可以分为表2中4个情况。
表2 性能指标分类表Table 2 Measure classification
TP表示模型检测出攻击流量的数目,且该检测结果是正确的;FN表示检出为攻击流量的数目,但其检测结果错误,这些流量实际是正常流量;TN表示检出为正常流量的数目,且检测结果是正确的;FP表示检出为正常流量的数目,但其检测结果错误,实际该流量是攻击流量。其中,FP和FN称为误报。
根据以上4个参数,通常可以得出4个指标衡量一个模型的实际性能。
准确率:
(16)
检出率:
(17)
正确检出率:
(18)
漏报率:
(19)
相关系数:
(20)
其中,式(16)代表正确判断所有入侵流量和正常流量的概率;式(17)、(18) 代表攻击流量的检出率;式(19)代表攻击流量被当成正常流量的误报率;式(20)是衡量模型总体指标的衡量函数。
3.2 数据集
KDD数据集是美国空军模拟空军基地局域网,收集7个星期的训练数据和2个星期的测试数据。手机的数据总数包含200多个实例。
流量被分类为正常流量或某种攻击类型。攻击被分成4个攻击类别:拒绝服务攻击(DOS)、网络探测(Probe)、远程攻击(R2L)和越权攻击(U2R)。
3.3 GRU-RNN网络结构实验
为进一步验证本文提出的GRU-RNN网络模型性能。与其他文献中入侵检测模型进行比较,包括不平衡学习、支持向量机、DNN等学习方法[18-19]。此外在本实验中,使用NSL-KDD数据集进行实验,作为KDD数据集的改进版,解决了KDD-CUP-99数据集s一些固有问题[20]。但总体仍然存在一些问题,通常将2种数据集一起使用。
如表3~5所示,实验测试了不同模型的整体检测性能。
表3 与其他不平衡算法性能比较Table 3 Comparison with other imbalance algorithms
表4 与其他传统算法性能比较Table 4 Compared with other traditional algorithms
表5 与其他深度学习算法性能比较Table 5 Comparison with other deep learning algorithms
与其他的不平衡学习方法相比,本文提出的GRU-RNN模型使用最少的样本来获得最佳性能。在准确率和正确检出率方面,I-NGSA与CANN+SMOTE模型在不平衡学习模型中取得了比较好的效果。相比之下,本文提出的GRU-RNN模型效果略逊色于上述2种模型,但由于均达到99%以上的检出率。所以可以忽略本部分的劣势,可以视为是较好的检测水平。
与浅层学习相比,GA-LR在浅层学习中所有指标均表现良好,总体效果要略好于本文提出的模型。但由于GA-LR模型所需要的训练数据集大小为本模型的7倍。因此,在相同的数据量下,本模型的收敛性比GA-LR模型好。表现出本算法在少量数据的时候,就能达到最优状态。
与其他深度学习模型[21-22]相比,结果显示其他深度模型均有较好的性能。其中,CNN-LSTM与DNN模型总体上检测效果要好于本模型,与GA-LR模型具有同样的问题,需要的数据量远大于本模型。S-NADE模型,整体性能较差,需要的数据量也远超本模型。SCDNN模型,正确检出率极低。
4 结论
1)实验结果验证了基于GRU网络记忆模块的GRU-RNN入侵检测系统,能够解决传统的入侵检测模型普遍无法对具有时序特征(尤其是持续时间较长的攻击)检出率不高的问题。
2)对KDD数据集的仿真实验表明,该模型能够在使用较少数据集的条件下,达到99%以上的准确率,且具有较好的准确率、检出率和漏报率。
本文对所提出的模型主要进行了理论验证,为了验证该模型的实际应用,需要投入到大量的工程中运行。下一步的研究重点是优化模型,使其能够应用在网络入侵检测的实际场景中。