基于增量集成学习的动态自适应SDN入侵检测
2021-10-01陈昌娜李昭桦
陈昌娜 李昭桦
摘 要:随着SDN网络应用的推广,SDN网络的安全也越来越受到重视,基于模式识别的网络入侵检测由于无法一次性收集完备的训练数据集,使得对未知的入侵行为识别率不高。为提高入侵检测系统的自适应性,提出了增量集成学习算法,并用该算法解决SDN入侵检测问题。该算法利用滑动窗口法获得数据块,对新的数据块进行训练获得子分类器,然后依据在历史数据块和当前数据块的分类结果筛选子分类器进行集成,使得分类模型不断完善从而能够自适应的识别未知攻击行为。通过在NSL-KDD数据集上的实验结果可以看到,该算法可以提高未知攻击的识别率。
关键词:增量学习;集成学习;入侵检测;软件定义网络
Abstract:With the popularization of SDN network application, the security of SDN network has been paid more and more attention. Because the network intrusion detection method based on pattern recognition cannot collect complete training dataset at one time, the recognition rate of intrusion detection model for unknown intrusion behavior is not high. In order to improve the adaptability of intrusion detection system, this paper proposes an incremental ensemble learning algorithm and uses it to solve the problem of SDN intrusion detection. The proposed algorithm uses sliding window method to obtain data blocks and trains data blocks to obtain sub classifiers. Then it selects sub-classifiers according to the classification results of historical data blocks and current data blocks for integration, so that the classification model is constantly improved and can identify unknown attack behavior adaptively. The experimental results on the NSL-KDD dataset show that the algorithm can improve the recognition rate of unknown attacks.
Key words:incremental learning; ensemble learning; intrusion detection; software defined network
软件定义网络( Software Defined Network,SDN)是一种新兴的网络架构,已逐渐成为云计算环境所依赖的重要技术之一[1],但SDN 架构自身的安全问题也受到国内外专家学者的关注。入侵检测作为网络安全的重要技术之一,也是网络安全领域的研究热点[1-6],把机器学习、模式识别用于网络入侵检测是该领域的研究热点之一,也就是把网络入侵检测问题转化为分类问题。
常见的机器学习算法均有学者尝试用于解决网络入侵检测问题,例如支持向量机[2-3]、深度学习[4-6]、决策树[7]、集成学习[8-10]等分类算法,这些方法都是对已知的训练数据集进行训练,获得分类模型,然后对未知的数据进行预测,因此训练数据集对算法的影响较大,决定了最终构建模型的分类性能,而在实际的网络入侵检测中,新的网络入侵方法不断涌现,也就导致无法一次性的收集到完备的数据集进行模型训练,为解决这样的问题,许多专家学者探讨采用增量学习[2,6]、在线学习[11-16]解决网络入侵检测问题,文献[17]给出了针对SDN网络的入侵检测模型,并对模型进行了详细的介绍。
集成学习算法由于算法自身的优势备受关注[8-11],通过某种方法改变训练数据集的分布从而获得多个训练子集,训练后获得多个子分类器,在预测阶段依据多个子分类器测试结果进行投票,来确定最终的预测结果,Boosting和Bagging是两类最具代表性的集成学习算法,Zhou[11]证明了选择部分基分类器进行集成要不所有基分类器参与集成,获得的集成分类器的泛化性能更优,选择集成算法的关键是按照一定的方法选择部分好的基分类器进行集成,问题就转化为如何判断基分类器的好坏。随后有许多学者对Boosting和Bagging算法进行改进,用于解决增量学习和在线学习问题[12-16],基本是对后续达到的数据流构建训练数据子集,然后训练获得对应子分类器,当子分类器达到指定阈值且新的数据流到达的时候,从已有的基分类器选择性能差的基分类器进行替换,因此该算法本质是集成学习算法和选择集成学习算法的改进,使之适用于增量学习或在线学习。这些算法在选择基分类器的时候依据对当前数据块的分类性能差的基分类器进行替换,认为已有基分类器缺少对新数据的识别能力,但在实际应用中,会有突变的数据流(噪声数据),这样会导致该替换方法不够准确,因此本文采用结合历史数据和当前数据的准确率来选择基分类器进行替换。
基于以上分析,从三方面对集成增量学习算法(Improved Incremental Integrated Learning Algorithm, IIILA)進行改进:(1)为避免噪声数据的影响,对基分类器的评价依据历史数据和当前数据上的平均结果;(2)传统集成方法依据准确率进行基分类器筛选,没有考虑基分类器之间的差异度,本文采用泛化误差对基分类器进行筛选;(3)对基分类器权重的计算不是简单依据当前数据库的泛化误差,而是所有数据的泛化误差。然后把改进的算法应用到SDN的网络入侵检测中,通过在NSL-KDD数据集上的仿真实验可以看到,该算法在各项指标上的性能要优于决策树算法C4.5,各项性能逼近AdaBoost算法。
1 SDN网络入侵检测模型
针对SDN网络入侵检测的研究相对较少,主要集中在入侵检测模型设计上面[17,19-20],由算法的设计过程可以看到,该算法支持并行处理,也就可以进行分布式處理,因此基于增量集成学习算法的SDN网络入侵检测模型设计如图1所示,该模型分为网络节点检测和本地检测,两者之间可以相互协同。
在本地检测模块中,通过多个检测代理收集网络数据流,根据OpenFlow协议[18],每个流表由多个流表项组成,原始的流表项由多个功能部分组成, 并不是所有的部分都可以用于入侵检测,因此需要对数据流进行相应的预处理,包括数据统计、特征选择、归一化等操作,然后对网络行为用检测模型进行预测,确定是否存在网络攻击行为,响应模型对网络攻击行为进行响应处理,然后用新的数据去修正检测模型(这里假定预测的结果都是正确的,对于无法确定预测结果是否正确,可以通过直推式学习来解决)。对于网络检测是指多个本地检测模块之间可以协同工作,可以依据网络各节点共同的预测结果来判断最终的预测结果,也可以之用本地检测模块实现入侵检测。
2 增量集成学习算法
2.1 基分类器性能评价
为了保证集成后分类器的性能,对基分类器进行筛选,文献[13]中证明了集成分类器的性能与基分类器的准确率和基分类器之间的差异度有关,集成分类器的泛化误差可表示为公式(1):
2.2 算法过程
在网络入侵检测、医疗诊断等等实际应用中,由于无法一次性收集完备的数据集,导致无法一次性获得完美的分类模型,因此需要边收集数据边完善分类模型,即增量学习或者在线学习,较多算法的增量学习算法都被应用到网络入侵检测中,例如增量支持向量机算法[2-3]。集成学习算法由于自身的特点和优势,Oza[17]等提出了增量学习版的Boosting和Bagging算法,随后有许多学者对算法进行了相应的改进,这些算法多是针对流数据的在线学习,而本文算法主要是依据块的增量学习算法。
集成学习的增量学习算法主要是把每个数据块看作一个数据子集,然后在数据子集上构建子分类器(基分类器),然后用已获得的子分类器对当前数据子集进行预测,并计算预测准确率,如果子分类器数目小于超过阈值,则直接加入到子分类器集合中,否则,从当前子分类器集合中选择对当前数据预测性能最差的子分类器进行替换。可以看到,子分类器的选择是依据对当前数据块的分类性能进行选择,也就需要把最新数据中所包含的信息学习到分类器中,但是该方法过度依赖对当前数据的分类性能,也就容易受到噪声数据的影响,这是因为算法只考虑对当前数据的分类性能,而没有考虑对整体数据的分类性能,因此本文算法总和考虑历史数据块和当前数据块上的分类性能,然后对基分类器进行选择,算法流程如图2所示,详细的算法过程描述如下:
3 实验及数据分析
3.1 实验数据集
NSL-KDD数据集消除了KDD99数据集中数据冗余、重复数据记录等问题,使得分类器的检测率更加准确,因此在研究入侵检测问题的时候,NSL-KDD训练集和测试集的设置是合理的,不同研究工作的评估结果将是一致的和可比的,因此在做网络入侵检测研究中较多的人在NSL-KDD数据集上进行仿真实验,本文的实验中也将采用NSL-KDD数据集。
NSL-KDD数据集的20%的训练集包括正常数据记录13448,攻击数据记录数为11744,NSL-KDD数据集的测试集中包括正常数据记录2152,攻击数据记录数为9698,本文算法是面向数字格式文件的,NSL-KDD数据集中有数值属性和字符属性两类,因此先把数据集进行数字化,本文采用简单的替代法,另外,本文算法主要针对二类分类问题,把数据集都转换为二类的数据集,正常数据类别号为0,攻击数据的类别号为1。
实验从NSL-KDD数据集20%的训练集中随机选择1100条数据作为训练数据集进行仿真实验,用NSL-KDD数据集的测试集进行测试,详细的实验数据集见表1,可以看到在测试集中出现了12中新的攻击类型和2587条训练集中没有出现过的攻击数据。
3.2 实验结果
在实际应用中,尤其是是网络入侵检测中,网络入侵方法不断涌现出新的入侵方法,也就无法一次性收集到完备的训练数据集,各种机器学习算法的增量算法是解决该问题的重要途径之一,该部分实验采用模拟数据流的方式进行实验,对以选取的数据集采用滑动窗口动态取数据集中的部分数据增加的学习模型中,并用前面所提算法中的方法对新生成基分类器与已有基分类进行替换,从而不断的更新模型。由于该算法是基于决策树的集成增量学习算法,因此,该部分主要是对本文所提算法与Online Bagging(OBG)算法、C4.5和AdaBoost算法进行算法性能的对比,详细的实验结果见表2和表3及图3,其中C4.5和AdaBoost算法的实验结果是采用全部的1100条训练数据进行训练,然后对测试集进行测试的实验结果,而IILA和OBG采用的是增量学习的方法逐渐进行增量学习,然后对测试集进行测试的实验结果。
从表2、表3的实验结果可以看到,本文算法的性能要优于C4.5决策树算法的实验结果,这是因为,本文算法是采用集成学习算法的思想,前面的描述中可以看到集成学习算法有不错的分类性能。从表2、表3和图3可以看到,算法性能与Online Bagging算法性能接近,但本文算法可以大大减少算法的时间,尤其是选择较大的窗口的情况下。另外实验结果接近AdaBoost算法的实验结果,甚至在召回率上优于AdaBoost算法,由于AdaBoost算法是对所有训练数据进行训练,而本文算法是采用的增量学习思想,在训练的过程中会依据对当前数据块上的分类性能对基分类器进行替代,其本质就是丢弃哪些分类性能差的基分类器,但在丢弃基分类器的过程中,实际就是丢弃部分数据块所包含的信息,对当前数据块的分类性能差表明该基分类器所包含的信息量不足,但在丢弃的过程中仍然会丢弃部分信息,因此造成最终集成分类器的性能不如采用所有数据集进行训练的AdaBoost算法的性能。
窗口大小对算法性能的影响,为了验证窗口大小对算法性能的影响,分别采用窗口大小为10、20、30、40、50、100、150进行实验,详细的实验结果如表4所示。从表3中可以看到,窗口大小为30的时候,各项指标较好,窗口大小为50的时候各项指标最差,可以看到窗口大小对分类算法的性能有影响,但是从表3中看不到有什么规律。
另外参数m对算法的性能也有一定的影响,为了验证m对算法的影响,分别取数据块的10%、20%、30%、40%、50%、60%、70%、80%、90%个基分类器进行集成,详细的实验结果见表4。在实际应用中,数据块数是无法确定的,因此选择比例也就无法确定,该部分实验目的是验证选择参与集成的基分类器的数量是否影响集成分类器的性能,在实际应用中随着数量不断的到达,即数据块数量的增加,可以采用动态调整该值,动态适应需求。
从表5可以看到,随着选择比例的增加,集成分类器的性能也有所提高,在选择40%基分类器的时候达到最优,然后继续增加选取比例时,集成分类器的性能则是下降,各项评价指标在不同选择比例下详细的变化情况见图4所示。
由上面实验数据可以看到,采用AdaBoost算法、C4.5算法、OBG算法及本文所提算法的实验结果都比较差,尤其是准确率较低。从表1实验数据集分布情况可以看到,训练数据集中的正常行为数据要要多于异常行为数据,样本数量比约为2:1,而在测试集中,有少量的正常行为数据和大量的异常行为数据,样本比例约为1:4.5,可以看到训练数据集和测试数据的分布存在较大差异,这是导致四种算法分类性能下降的原因,为了验证在相同分布的数据集上四种方法的性能,训练集不变,然后从20%训练集中随机抽取3000作为测试数据,则得到的ROC曲线如图5所示,其中AdaBoost和C4.5算法对全部的训练进行训练,让阿辉对3000条测试数据进行测试的结果,而IILA和OBG算法则是用100条作为初始数据,对剩余1000进行增量学习的实验结果。可以看到四种算法的分类性能都比较好,AdaBoost和C4.5算法有较好的性能,IILA的实验性能要优于OBG算法,并且本文算法用时要远远小于OBG算法。
4 结 论
针对在SND入侵检测中,新的入侵方法层出不穷,导致检测系统无法识别新的入侵行为的问题,提出了增量集成学习算法,并把该算法应用到网络入侵检测中,通过算法的实验结果对比可以看到,在面对动态收集数据的情况下,算法有不错的分类性能。该算法是基于块的增量学习,如何实现基于数据流的在线学习,并应用到SDN检测中将是下阶段的主要工作。
参考文献
[1] 张朝昆,崔勇,唐翯翯,等.软件定义网络(SDN)研究进展[J].软件学报,2015,26(1):62-81.
[2] 张燕.基于协同增量支持向量机的网络入侵检测[J].河南科学,2018,36(1):11-16.
[3] LI Y, XIA J, ZHANG S, et al. An efficient intrusion detection system based on support vector machines and gradually features removal method[J]. Expert Systems with Applications, 2012, 39(1):424-430
[4] BOHARA B, BHUYAN J, WU F,et al. A survey on the use of data clustering for intrusion detection system in cyber security[J]. International Journal of Network Security & Its Applications, 2020, 12(1):1-18.
[5] VIJAYANAND R, DEVARAJ D. A novel feature selection method using whale optimization algorithm and genetic operators for intrusion detection system in wireless mesh network[J]. IEEE Access, 2020(99):1-11.
[6] 张阳玉,吕光宏,李鹏飞.SDN网络入侵检测系统的深度学习方法综述[J].计算机应用,2019,39(S2):147-151.
[7] 夏景明,李冲,谈玲,等.改进的随机森林分类器网络入侵检测方法[J].计算机工程与设计,2019,40(8):2146-2150.
[8] 黄金超,马颖华,齐开悦,等.一种基于集成学习的入侵检测算法[J].上海交通大学学报,2018,52(10):1382-1387.
[9] 胡健,苏永东,黄文载,等.基于互信息加权集成迁移学习的入侵检测方法[J].计算机应用,2019,39(11):3310-3315.
[10]张燕,杜红乐.基于异构距离的集成分类算法研究[J].智能系统学报,2019,14(4):733-742.
[11]ZHOU J X, ZHOU Z H, SHEN X H, et al. A selective constructing approach to neural network ensemble[J].Journal of Calculate Research & Development,2000,37(9):1039-1044
[12]DU H L, ZHANG Y. Network anomaly detection based on selective ensemble algorithm[J]. Journal of Supercomputing,2020. https://doi.org/10.1007/s11227-020-03374-z
[13]黎铭,周志华.基于多核集成的在线半监督学习方法[J].计算机研究与发展,2008(12):2060-2068.
[14]MAURYA C K, TOSHNIWAL D, VENKOPARAO G V. Online anomaly detection via class-imbalance learning[C]. Eighth International Conference on Contemporary Computing. IEEE, 2015.
[15]SINGH R, KUMAR H, SINGLA R K. An intrusion detection system using network traffic profiling and online sequential extreme learning machine[J]. Expert Systems with Application, 2015, 42(22上):8609-8624.
[16]DU H L, ZHANG Y, KE G, et al.Online ensemble learning algorithm for imbalanced data stream[J]. Applied Soft Computing,2021,107,https://doi.org/10.1016/j.asoc,2021.107378.
[17]OZA N C, RUSSELL S. Online bagging and boosting[C].IEEE International Conference on Systems. IEEE, 2006.
[18]王濤,陈鸿昶,程国振.软件定义网络及安全防御技术研究[J].通信学报,2017,38(11):133-160.