吴亚丽,王君虎,郑帅龙
1.西安理工大学 自动化与信息工程学院,西安 710048
2.陕西省复杂系统控制与智能信息处理重点实验室,西安 710048
网络入侵检测系统(network intrusion detection systems,NIDS)作为一种积极主动的防御技术,是及时发现潜在网络威胁、制定合理防御策略的主要手段,是网络安全技术体系中重要的组成部分[1]。它能够通过收集和分析相关网络数据及时发现攻击行为,降低网络安全威胁。
常见的入侵检测方法包括基于签名的检测和基于异常的检测两类。基于签名的NIDS依赖于一个攻击签名数据库进行检测,对于数据库中已有数据具有较高的检测率,但是无法检测出新型攻击,需要经常更新数据库。基于异常的NIDS通过分析不寻常的流量分布来识别计算机中隐藏的攻击,可以用于检测新型攻击,该系统使用配置文件来存储用户、主机、网络连接和应用程序的所有正常行为。这种方法将当前活动与配置文件进行比较,存在任何显著偏差就标记为异常,这种对于数据的敏感性有效防止了各种恶意行为。然而,这种敏感性优势会导致高误报率,从而导致不必要的恐慌和过度反应。
在基于异常的NIDS 中,大多采用传统的机器学习算法如贝叶斯网络[2]、支持向量机[3]等,这些算法在小规模的流量数据检测问题上表现出良好的性能。但是,随着网络技术的不断发展,网络规模不断扩大,传统的入侵检测方法性能在处理海量高维数据方面面临巨大挑战。
作为表征学习的代表,深度学习能够直接从复杂的原始特征中自动学习到高层次的数据特征,免去了手工特征提取过程中对专家知识的依赖,因此,目前的入侵检测系统大多都基于深度模型框架。常用的深度模型有自编码器[4]、卷积神经网络(convolutional neural network,CNN)[5]、循环神经网络(recurrent neural network,RNN)[6]等。文献[7]提出将CNN用于网络入侵检测,利用CNN来选择特征对流量进行分类,相较于传统算法有良好的效果,但是忽略了流量数据时间顺序上的联系;文献[8]提出将LSTM(long short-term memory network)运用于入侵检测中,取得了不错的分类效果,但是没有考虑数据的空间特性,分类器性能仍有提升空间。为了更加充分地提取网络流量数据特征,文献[9]提出将CNN 和LSTM混合使用,用CNN学习网络包的特征,再用LSTM学习网络流量之间的特征,相较于单独使用LSTM、CNN 或其改进模型效果更好,有效提高了对流量数据分类的准确率。尽管神经网络模型具有强大的特征提取能力,但是上述模型都需要大量带有标签的数据样本,而现实中大量的数据是没有标签的,而且为数据人工标定标签是一项昂贵而耗时的任务。
强化学习(reinforcement learning,RL)是解决上述问题的一种有效方法。传统强化学习基于马尔科夫决策过程(Markov decision process,MDP)来设计算法,但是只能分析小规模问题,现实环境往往复杂多变,传统强化学习方法在解决实际问题时难以取得有效的解决方案。文献[10]将强化学习与深度学习结合,提出深度强化学习(deep reinforcement learning,DRL),将强化学习中复杂的数据空间以及映射关系用神经网络来近似,极大扩展了强化学习的应用范围,再加上其特有的反馈机制,使得强化学习在分类问题上也有着广泛的应用。文献[11]首次将分类问题等效为智能体(agent)的连续决策过程,提出一种基于强化学习的分类任务解决方案,在UCI八种数据集中的准确率达到87.4%。文献[12]针对网络入侵检测问题提出基于对抗性多智能体的AE-DQN模型,取得了不错的检测效果。尽管上述深度强化学习模型在解决标签不足的分类问题时表现出独到的优势,但深度学习网络模型的选取同样不容忽视,深度学习模型的选取是否得当很大程度上决定分类器性能的好坏,上述模型的侧重点都只放在了智能体策略的生成方式上。
此外,现实中往往会遇到数据不平衡问题,分类器能得到较高的整体分类精度,但对少数类数据的识别率极低,而错分少数类会带来巨大代价。针对数据不平衡问题,通常可采用两类解决方法:数据级方法和算法级方法。在数据层面,采用重采样方法修改原始数据集,使其足够平衡。在算法层面上,通过修改分类器,使现有的分类器加强对少数类的学习。综合考虑到操作实现的难易程度以及深度强化学习对于大数据的需求,本文采用了一种数据级的重采样方法来减少数据不平衡的影响。
因此,为提高系统对不同类型流量的检测率,本文提出了一种基于改进双重Q 网络的网络入侵检测模型。该模型将入侵检测过程模拟为智能体的顺序决策过程,将CNN 与BiLSTM 的混合网络模型引入双重深度Q网络的学习框架,旨在提取到更加完备的数据特征的前提下,使用强化学习策略不断优化分类器,最终实现对不同类型攻击流量的精确识别。同时,考虑到数据不平衡问题,引入不平衡处理策略提高稀有攻击的检测率。
本文所提出的方法创新点表现在:(1)为了解决监督学习过程中对样本标签的强依赖性问题,提出用深度强化学习算法引导分类器获得自主决策能力,完成对样本的正确分类;(2)为了充分利用流量数据特征,采用CNN和BiLSTM的混合模型,提取更加完备的空时融合特征;(3)考虑到稀有攻击样本检测率低的问题,引入数据平衡化处理策略。
深度Q 网络(deep Q-network,DQN)[13]是强化学习领域一种重要算法,其核心思想是:通过让智能体感知环境状态,在与环境交互的过程中找到最优策略函数,使得累计收益最大化。策略函数定义为:
在智能体做决策过程中,策略函数得到状态样本st,根据一定的概率P返回该状态的动作at(网络攻击类别)。
累计收益定义为回报函数Gt:
其中,rt+k是未来时刻的状态对应的奖励值,γ∈(0,1]是折扣因子,γ的值越大,折扣后回报将更多考虑未来收益。
在给定的策略π下,为了评估某一状态的回报值,引入状态价值函数Vπ(s),在状态s处的状态价值函数定义如下:
其中,E是期望函数,由于强化学习具有马尔可夫性,状态价值函数又可以写成如下贝尔曼方程形式:
其中,p(s′|s,a)表示执行策略π(a|s)后状态由s转移到状态s′的概率。
在所有可能的状态价值函数中,一定存在一个最优的状态价值函数V*(s),满足贝尔曼最优方程:
方便起见,在强化学习中引入Q 函数,输入为状态动作对,输出为奖励值:
称Qπ(s,a)为策略π的状态动作价值函数。
Q 函数使用一个Q 表格将学习过程中的信息以元组{s,a,r,s′}的形式存储起来。当状态空间无限大时,难以维持如此庞大的Q 表。将Q 学习与深度学习结合起来,使用深度神经网络来近似动作价值函数,就形成了深度Q网络。
网络训练过程中不断更新网络参数θ,以最小化损失函数L(θ),L(θ)的定义如下:
一般的,参数θ的迭代更新采用梯度下降法:
在DQN 中,使用相同的参数θ来选择动作和评估状态动作价值函数,容易产生估计过高的情况,针对这一问题,文献[14]对传统DQN 进行改进,提出一种双重深度Q 网络算法(double deep Q-network,DDQN)。该算法引入两个结构相同的深度学习网络,即在线网络和目标网络,参数分别为θ和θ′,其中在线网络用于选择动作,目标网络用于估计价值,两个网络参数更新不同步,有效解决了数据样本和网络训练之间存在相关性的问题。具体步骤如算法1所示。
算法1 DDQN算法
类似地,将DDQN的损失函数L(θ)定义为:
训练过程中,目标网络的更新方式与DQN相同,智能体与环境经过固定次数的交互后,将在线网络的参数复制给目标网络,完成对目标网络参数的更新。
本文将CNN与BiLSTM的混合模型CBL模型引入双重深度Q网络框架,提出基于改进双重深度Q网络的CBL_DDQN 入侵检测模型,旨在使用CBL 网络拟合Q函数,并使用双重深度Q网络中的反馈机制和优化策略对CBL网络进行优化,最终实现对流量的正确分类。
2.1.1 卷积神经网络
卷积神经网络(CNN)主要包括卷积层、池化层、全连接层等不同类型的结构,其主要特点是局部连接和权值共享。CNN常用的结构如图1所示。
图1 卷积神经网络框架Fig.1 Convolutional neural network framework
传统的卷积网络采用二维卷积核,能对二维图像特征进行有效提取,但对于序列化的数据处理效果不理想。文献[15]指出一维CNN 可以通过在给定的时间范围内序列化TCP/IP包来更好地学习时间序列数据集上的特征,故本文采用一维卷积神经网络来提取数据中的空间特征。
2.1.2 长短期记忆神经网络
长短期记忆神经网络(LSTM)是为了解决传统循环神经网络(RNN)的梯度消失问题而提出的,其基本单元是一种包含多组神经元的结构,称为细胞(cell),如图2所示。
图2 长短期记忆网络的基本单元Fig.2 Basic unit of long short-term memory network
分别称三个控制门f、i、o为遗忘门、输入门和输出门,对三个控制门的参数进行合理设置,就可以实现LSTM的记忆功能,核心计算公式如式(12)~(16)所示:
其中,f、σ、i、t、o、h、c、W、b分别表示遗忘、Sigmoid 激活函数、输入、时间步长、输出层、隐藏层、单元状态、权重矩阵、偏差。
为了满足提取信息的完整性,业内主流将细胞结构采用双向连接的形式,构成双向长短期记忆神经网络(BiLSTM),其结构如图3所示。
图3 双向长短期记忆网络框架Fig.3 Network framework of BiLSTM
2.1.3 CBL模型
网络流量数据是有时间步长的序列,既存在空间特征,也存在时间特征[16]。由于CNN和BiLSTM在数据特征提取方面各自有其优良的特性,本文将一维卷积网络和双向长短期记忆网络混合生成CNN、BiLSTM混合模型,简称CBL模型,如图4所示。
图4 CBL模型框架Fig.4 CBL model framework
CBL 模型的设计思路:使用一维CNN 提取序列化流量数据的空间特征;用最大池化层将参数离散化,以减少训练时间和防止过拟合;在最大池化层之后,加入批归一化层,将中间层的参数归一化,以加快训练速度;BiLSTM层用于学习前向和向后的时间序列数据,设置两个BiLSTM层是采用不同粒度的学习方式,以更好地学习一维CNN 中的长期时间依赖特征的相关性,设置两层BiLSTM 之间的网络层是为了更好地提取特征并加快训练速度;设置Dropout层避免模型过拟合,最终使用Softmax函数输出概率矩阵。
将CBL模型引入DDQN架构,得到CBL_DDQN模型,对模型中的相关概念进行如下定义:
(l)智能体agent
将智能体设置为CBL_DDQN 模型,将模型中的参数θ看作选择动作的策略π(a|s),用以分析特征和选择动作。
(2)状态S
将整个数据集设置成智能体所处的环境Environment,当前输入网络的流量数据定义为智能体观测到的环境状态st。
(3)动作A
在分类任务中,分类器的输出值a~t是状态归属的对应类别,在训练阶段,智能体通过ε-greedy 算法进行动作选择。对于N分类问题,动作空间A={0,1,…,N-1},a~t∈A,其中0 代表正常流量,1~N代表不同类别的攻击流量。
(4)奖励R
奖励值是评价智能体选取动作好坏的一个抽象概念,在本文实验中,如果智能体将数据分类正确,则获得+1的奖励,反之,获得-1奖励。
将两个结构相同的CBL模型CBL_DDQN_TrainNet、CBL_DDQN_TargetNet引入DDQN网络,使用在线网络CBL_DDQN_TrainNet 选择动作,使用目标网络CBL_DDQN_TargetNet估计价值。具体学习过程如图5所示。
图5所示智能体从状态st开始,采用ε-greedy 策略选择最大价值相对应的动作a~t,并将a~t传递给Environment,判断分类正误并获得相应奖励,分类正确获得奖励为+1,分类错误获得奖励为-1;将每次与环境交互的结果以元组{st,a~t,q,rt}的形式存储到提前开辟好的经验池MemoryD中;当经验池中的数据达到设定的阈值时,每次从中随机采集batch_size个样本输入到CBL_DDQN_TrainNet,用于更新q*的值,用式(10)计算模型的损失,更新模型参数;当训练达到固定的训练周期,将CBL_DDQN_TrainNet的参数复制给CBL_DDQN_TargetNet,完成对目标网络模型的优化。
图5 CBL_DDQN学习流程图Fig.5 CBL_DDQN learning flow chart
为了验证CBL_DDQN 模型的可行性,本文选用入侵检测领域的两个公开数据集NSL_KDD 和UNSW_NB15 进行仿真实验。两个数据集的详细信息如表1、表2所示。
表1 NSL_KDD数据集的攻击类别信息Table 1 NSL_KDD dataset attack categories
表2 UNSW_NB15数据集的攻击类别信息Table 2 UNSW_NB15 dataset attack categories
数据预处理主要包含以下三部分:字符型特征数值化、独热编码以及数值归一化。
(1)字符型特征数值化
将正常记录和不同的攻击记录类别特征由字符型转化为数字标签,转化后的标签分布如表1、表2所示。
(2)独热编码
独热编码可以将离散特征的取值扩展到欧式空间,使得特征之间的距离计算更加合理。
(3)数值归一化
在独热编码后,为了减小每一维属性特征数值大小对后续网络的影响,将每一维属性特征按式(18)进行归一化处理,归一化后的区间为[0,1]:
其中,xmin为当前维数所对应的特征数据中的最小值,xmax为当前维数所对应的特征数据中的最大值,x˙为归一化后的特征数据。
由表1、表2可以看出,数据集中的样本之间存在严重的不平衡问题,可能会导致分类器对于稀有攻击样本检测率低。因此,本文引入Borderline-SMOTE算法[17]对数据进行过采样处理。该算法是在SMOTE算法的基础上提出来的,其样本生成公式如式(19)所示:
其中,xi为选中的少数类样本,x~i为xi的近邻,xnew为新生成的样本。SMOTE 算法的算法具体步骤如算法2所示。
算法2 SMOTE算法
但是,SMOTE 算法生成的少数类样本可能落在多数类中,易成为噪声样本,同时,其样本生成规则是根据近邻原则,很可能导致原样本在密集区,生成合成样本依然大概率在密集区,而若原样本在稀疏区,生成合成样本大概率在稀疏区,使得分类算法不易识别稀疏区样本,影响算法对稀疏区样本的学习。Han等人[17]对其进行了改进,考虑到边界数据点的重要性,首先根据规则判断出少数类的边界样本,再利用SMOTE 算法对边界样本生成新样本。边界的判断规则步骤如算法3所示。
算法3 Borderline-SMOTE算法判断边界样本原则
再对输出的边界样本集B使用SMOTE 算法生成新的样本。本文中使用Borderline-SMOTE 算法对稀有攻击样本进行生成,过采样处理前后的数据集划分结果如表3、表4所示。
表3 NSL_KDD过采样前后数据信息Table 3 NSL_KDD dataset information before and after oversampling
表4 UNSW_NB15过采样前后数据信息Table 4 UNSW_NB15 dataset information before and after oversampling
其中,训练集1 和训练集3 表示从原始数据集中分别划分出来的训练集,训练集2 和训练集4 表示使用Borderline-SMOTE 算法处理后的训练集。将生成的少数类样本与原样本数据一起送入学习模型训练,最终的整个学习流程如图6所示。
图6 CBL_DDQN模型入侵检测流程图Fig.6 CBL_DDQN model intrusion detection flow chart
实际应用中,可将本文所提的网络入侵检测系统按照图7所示的方式进行部署。
由图7 可知,NIDS 作为网络防火墙之后的第二道防线,主要负责对通过防火墙的流量数据进行动态监测,二者有效结合可大大提高网络的安全性。
图7 网络入侵检测系统部署框架Fig.7 Architecture of network intrusion detection system
为评价模型的性能,本文采用Accuracy、Precision以及Recall作为性能评价指标。
Accuracy:准确率,表示分类正确样本占总体样本的比例。
Precision:精准率,表示被正确分类的正类样本占所有被分为正类样本的比例。
Recall:召回率,表示分类正确的正类样本占所有正类样本的比例。
其中,TP表示分类正确的正类样本,FP表示分类错误的负类样本,TN表示分类正确的负类样本,FN表示分类错误的负类样本。
本实验环境的硬件环境为:CPU Intel i5-6300H CPU@2.30 GHz,8 GB RAM,GPU NVIDIA GeForce GTX 960M,采用基于TensorFlow2.1 的Keras 深度学习平台,使用Sklearn 和imblearn 库,python 版本为3.7,Win64位操作系统。
对CBL网络模型的参数设置如表5所示。
表5 CBL模型的参数设置Table 5 Parameters in CBL model
表中,N表示预处理后数据的维数,M表示数据流量的分类个数,网络中用到的最大池化层的池化步长均设置为5,Dropout的值均设置为0.5。
对深度强化学习模型中的各个超参数设置如表6所示。
表6 深度强化学习模型参数设置Table 6 Parameters in deep reinforcement learning
为了减少训练过程中的不稳定现象,对参数进行如下设置:(1)为避免网络陷入局部最优,实验中采用Adam优化器,将学习率设置为0.001;(2)为加快实验速度,采用批量更新的方式,每次从经验池中选取小批量的样本更新网络参数,经验池容量设置为1 000,批量设置为128。同时设置折扣因子为0.8,动作选择策略的参数ε随着实验的进行从1.0 逐渐递减到0.01,衰减步长设置为0.000 1,随着ε的减小,智能体随机选择动作的概率会逐渐减小。
本文采用NSL_KDD 和UNSW_NB15 两组网络流量数据集进行实验。数据集的详细内容如3.1 节所述。实验中,将整个训练集的所有数据设置为一个epoch,设置最大epoch 为30,每训练5 个epoch 对模型的分类结果做一次统计,采用对照实验的方式分别测试使用Borderline-SMOTE 算法处理前后系统对数据的识别率。统计训练30个epoch后的分类结果,如图8、图9所示。
图8 模型对NSL_KDD的识别率Fig.8 Detection accuracy of NSL_KDD
图9 模型对UNSW_NB15的识别率Fig.9 Detection accuracy of UNSW_NB15
由图8、图9 可以看出,随着训练的不断进行,用不同数据训练的分类器的性能均在逐步提升,且引入Borderline-SMOTE 算法的模型所对应的分类准确率均高于相同训练次数下对于原始数据集的准确率,可以直观地看出引入不平衡处理算法对于模型的收敛具有较大的促进作用。
为了进一步验证本文所提模型的有效性,比较了六种不同方法的准确率、召回率以及精确率:Adam-BNDNN[18]、DQN[19]、RF[19]、SVM[19]、MLP[19]和Adaboost[20],统计结果如表7、表8所示,其中加粗的数据是该项性能指标的最优值。
表7 各模型对NSL_KDD的分类性能比较Table 7 Performance comparison of each model for NSL_KDD %
表8 各模型对UNSW_NB15的分类性能比较Table 8 Performance comparison of each model for UNSW_NB15%
直观起见,将表7 中的数据绘制成条形图的形式,结果如图10所示。
图10 各模型对NSL_KDD的分类性能Fig.10 Classification performance of each model for NSL_KDD
结合表7和图10可以看出,本文提出的CBL_DDQN模型在NSL_KDD 数据集上的检测效果显著。在准确率、召回率以及精准率这三项评价指标上分别达到了99.96%、99.97%和99.79%,各项性能指标均优于其他IDS。
同样地,为了直观起见,将表8 中的数据绘制成条形统计图的形式,结果如图11所示。
图11 各模型对UNSW_NB15的分类性能Fig.11 Classification performance of each model for UNSW_NB15
结合表8和图11可以看出,本文模型对UNSW_NB15的检测结果中整体识别准确率可达到90.12%,召回率可达到95.20%,精确率可达89.93%,虽然不及所提对比方法相应的各项指标最优值,但综合考虑各项性能指标,本文所提模型可以实现良好的入侵检测效果。
综合分析上述两组实验结果,可知本文提出的基于改进双重深度Q网络模型能很好地解决入侵检测问题。
本文提出了CBL_DDQN 网络入侵检测模型,将CNN 和BiLSTM 的混合网络CBL 网络引入DDQN 框架,使得模型拥有更佳的性能。与传统深度学习算法相比,一定程度上解决了传统深度学习对于数据标签的依赖性问题,并取得了比深度学习算法更好的分类效果。考虑到数据之间的不平衡导致分类器难以充分学到数据特征的问题,采用Borderline-SMOTE 算法对稀有攻击样本数量进行扩充,结果表明,不平衡处理算法能在一定程度上提升模型的分类能力。
综上所述,本文所提模型在不平衡数据分类问题中表现良好,且整体性能优于改进前的DQN 网络和其他深度学习网络,体现出深度强化学习的一种新的思维方式。接下来的工作将致力于降低模型的空间复杂度,提升模型的时间效率,加速模型收敛;同时,将在更加复杂的数据条件下,进一步研究模型的泛化能力。