基于集成学习的多类型应用层DDoS攻击检测方法

2022-12-18 08:11李颖之周华春
计算机应用 2022年12期
关键词:应用层离线分类器

李颖之,李 曼,董 平,周华春

(北京交通大学 电子信息工程学院,北京 100044)

0 引言

分布式拒绝服务(Distributed Denial of Service,DDoS)攻击可操作性强、攻击门槛低,给网络服务商带来客户流失、商业损失等重大风险[1]。与传统基于低层协议的DDoS 攻击相比,应用层DDoS 攻击利用高层协议实现,模拟正常用户的访问行为,具有难以检测的标志性特征[2]。目前较为流行的低层检测系统难以判断用户请求,导致检测误报率高等问题。

现有DDoS 攻击检测方法采用传统的基于统计的或是基于机器学习的检测方法,只区分异常流量和正常流量(Benign),未进一步检测流量中攻击的具体类型,且检测准确率低。为解决现有技术存在的问题,本文提出一种可检测多类型应用层DDoS 攻击的检测方法,检测多类型应用层DDoS 攻击有助于后续针对性的防御措施。该方法采用基于集成学习的多分类检测模型,能够检测多类型的应用层DDoS 攻击,包括挑战黑洞(Challenge Collapsar,CC)、HTTP Flood、HTTP Post 及HTTP Get 攻击共四种应用层DDoS 攻击。

应用层DDoS 攻击中不同的攻击类型有不同的特点,时间特征、数据包特征等均会因为攻击机制的不同而有差异,对其采用同一种检测手段的误判率较高,具备检测恶意流量具体类型的能力可以提高检测性能且可以更精准地匹配防御类型。

本文的主要工作如下:

1)建立多类型应用层DDoS 攻击数据集。实验模拟5G多场景下海量正常流量、不同类型的应用层DDoS 攻击流量,提供符合现实流量规律的真实数据集,解决当前最新数据集的不公开性且未细化攻击类型的问题。

2)提出一种应用层DDoS 攻击特征分析方法,结合攻击原理、特征选择以及统计分析的方法筛选不同类型应用层DDoS 攻击的有效特征信息的方法,生成表征CC、HTTP Flood、HTTP Post 及HTTP Get 攻击的47 维特征信息,降低模型拟合程度,提高模型准确率的同时减少训练时间。

3)提出一种结合离线训练和在线检测的基于集成学习的应用层DDoS 攻击检测方法。离线训练阶段提出集成学习方法提高模型的泛化性和准确率,并对流量进行细粒度感知,指示应用层DDoS 攻击具体种类;在线检测阶段提出时间窗口概念并寻找最佳时间窗口周期,验证模型在最佳时间窗口下的在线检测性能。离线训练和在线检测相互隔离,可分别独立调整并节省在线过程的时间开销。实验结果表明,本文提出的检测方法可以有效检测CC、HTTP Flood、HTTP Post及HTTP Get 攻击共四种应用层DDoS 攻击,在最优时间窗口下恶意流量检测率达98%。

1 研究现状

目前,应用层DDoS 攻击类型多且复杂,国内外对应用层DDoS 攻击的检测方法研究主要基于统计、基于机器学习以及基于深度学习的方法[3]。

基于统计的方法中,Erhan 等[4]利用流量特征统计变化的优势,根据统计信号处理方法,提出了两种简单而有效的基于网络的DDoS 攻击检测方法。Wang 等[5]提出名为SkyShield 的模型,采用三个草图和两个布隆过滤器,利用指数加权移动平均值(Exponentially Weighted Moving-Average,EWMA)算法计算来分析,缓解阶段用白名单和黑名单进行检查,根据异常桶检查剩余的请求。Tang 等[6]提出检测会话初始协议(Session Initiation Protocol,SIP)泛洪攻击的方法,设计三维草图,将草图中的数据分布之间的海林格距离与EWMA 算法计算的动态阈值进行比较,超过阈值判为SIP攻击。

基于机器学习的方法中[7],She 等[8]引入了一种基于聚类的HTTP 泛洪攻击检测方法,使用k-means 聚类方法,将这些普通用户会话进行集群,以构建普通用户行为模型,计算普通用户行为与攻击者的轮廓分数来判别流量类型。Johnson 等[9]利用多层感知器(Multi-Layer Perceptron,MLP)分类算法和遗传算法作为学习算法来检测DDoS 攻击,提取特征作为分类算法的输入,用于区分攻击与正常配置文件。Adi 等[10]提出一种检测隐蔽应用层DDoS 攻击的方法,隐蔽应用层DDoS 攻击直接攻击HTTP/2 Web 服务器并降低目前机器学习分析的性能,结合特征选择技术和监督学习方法进行检测,误报率可低至0.024%。

基于深度学习的方法[11]通过自主训练学习代替根据经验挑选特征的步骤,这一特点使得深度学习成为一种理想的自适应流量分类方法。基于深度学习的方法中,Lotfollahi等[12]引入深度学习方法Deep packet,将数据包的原始字节作为特征输入,构建一维卷积神经网络(One Dimensional Convolutional Neural Network,1DCNN)和稀疏自动编码机(Sparse AutoEncoder,SAE)模型进行流量分类,准确率可达98%。Wang 等[13]将数据按照流进行划分,提取流字节作为输入特征,提取特征作为分类算法的输入,用于区分攻击与正常配置文件,分别比较一维卷积神经网络和二维卷积神经网络的预测效果,均可达到90%左右的准确率。

上述文献中,利用统计方法[4-6]检测应用层DDoS 攻击的方法中设定的阈值、规则需要经验丰富的专家手动设定,自适应性差。机器学习的检测方法[8-10]适用于连续性的数值表现,比如其中较为经典的极限梯度提升(eXtreme Gradient Boosting,XGBoost)[14]分类模型是基于树的模型找最优分割点,对于连续型数值特征分割点易于实现,且分类效果会更好;但机器学习表现得泛化性差,在数据集不平衡等情况时有较高误报率。深度学习的检测方法[12-13]将高纬度的稀疏特征映射为低纬度的稠密特征,可以更有效表现离散型特征;因此适合于高纬度的离散型特征,不适用于包含连续型数值特征的数据集。

综上所述,现有的应用层DDoS 攻击检测方法较多,但仍存在检测时延长、模型泛化性差等诸多问题。此外,当前国内外针对DDoS 攻击的研究基本是将应用层作为一类攻击进行研究,只能粗略判断攻击类型,无法检测具体的多类型应用层DDoS 攻击。

本文提出基于集成学习的多类型应用层DDoS 攻击检测方法可有效解决泛化性问题,提高检测准确率;同时检测多类型应用层DDoS 攻击,验证其在线检测的性能较好,具有很好的实用性。

2 应用层DDoS攻击检测方法

本文提出基于集成学习的应用层DDoS 攻击检测系统框图如图1 所示,包含数据集生成、数据集预处理、离线训练以及在线检测四个模块。

图1 检测系统框图Fig.1 Block diagram of detection system

1)数据集生成模块提供了一种生成多类型应用层DDoS攻击流量数据集的方法,模拟实验流量并根据五元组划分为流级流量,利用特征提取工具生成原始特征信息,根据IP 标记标签得到原始数据集。

2)数据集预处理模块筛选流级特征并提取适用于所有应用层DDoS 攻击流量的有效特征信息,生成已标记的有效应用层DDoS 攻击数据集。

3)离线训练模块将已标记的有效数据集按比例划分为训练数据集和验证数据集,输入离线训练数据集中已筛选的特征到集成后的训练模型中,该模型对输入特征进行训练和分类,利用验证数据集对多类型应用层DDoS 攻击检测模型调参并验证输出结果。

4)在线检测模块通过在线部署的检测模型判断待检测流量的具体流量类型,在线采集流量数据,将流经的网络流量生成可够后续检测的在线检测数据集。流量入口处部署训练后的集成模型作为在线分类器,输入在线检测数据集,判断流经流量的类型。

应用层DDoS 攻击检测系统的各个模块涉及各种算法,各算法构成的整体检测算法具有识别具体应用层DDoS 攻击种类以及正常流量的功能,整体检测算法的流程如图2所示。

图2 整体检测算法流程Fig.2 Flow chart of overall detection algorithm

数据集生成的算法描述如下:

算法1 数据集生成算法。

2.1 数据集生成模块

由于最新数据集的不公开性且现有数据集无法真实反映流量环境的问题[15],数据集生成模块利用工具或脚本模拟最新应用层DDoS 攻击、正常流量,并在网络入口处收集指定时间的实验流量,自生成符合现实流量规律的数据集,提供后续训练的离线数据集。

应用层DDoS 攻击中不同的攻击类型有不同的特点,对其采用同一种检测手段的误判率较高,且判断具体的攻击种类可以更精准地匹配防御类型;因此本文将应用层DDoS 攻击进一步细化,针对应用层DDoS 攻击中四种攻击效果较好的主流攻击展开研究:CC、HTTP Flood、HTTP Post 及HTTP Get 攻击[3]。

CC 攻击利用HTTP 协议对服务器中的网页发送高频的完成HTTP 请求导致服务器崩溃,由于正常用户访问页面需要有浏览点击等行为,导致CC 攻击的时间特征比正常用户短,且攻击发起流的特征是有一定规律的;HTTP Flood 攻击通过模拟多个源攻击机发送大量不完整的HTTP 数据包来淹没服务器的资源,模拟长时间的连接请求,导致HTTP Flood 攻击的时间特征比正常用户久,且攻击发起流的特征是有一定规律的;HTTP Post 和HTTP Get 攻击也是进行长时间连接的HTTP 泛洪,攻击行为导致的时间特征相对较长,但是凭借随机产生的消息头信息,随机性比正常值大。

此外,为了验证模型对其他DDoS 攻击也具有分辨能力,数据集中增加Other 攻击,包括反射放大DDoS 攻击、网络层DDoS 攻击以及僵尸DDoS 攻击等常见的DDoS 攻击类型。

利用工具或脚本模拟上述多种应用层DDoS 攻击流量。实际情况下应用层数据易出现海量的数据特征,导致海量正常流量与应用层DDoS 攻击混淆的问题,因此在流量模拟端模拟海量的正常流量,获得真实环境下的流量分布情况,以训练可区分正常流量和应用层DDoS 攻击的模型。

网络流定义为具有一个或多个相同属性的数据包流[3],本文将具有相同五元组信息的数据定义为一条数据流,其中五元组信息包括源IP 地址、目的IP 地址、源端口号、目的端口号和通信协议。通过流特征提取工具CICFlowMeter 工具[16]提取实验流量的多维流特征信息,得到包含多类型应用层DDoS 攻击87 维原始特征信息的数据集。

2.2 数据集预处理模块

特征的数量和有效性对模型的检测精度影响较大,有效特征的预处理和筛选需要经过繁杂的运算和判决[17]。本文提出的应用层DDoS攻击特征分析结合特征工程和统计图的方法对每一种应用层DDoS攻击特征集进行分析和筛选,得到针对每一种应用层DDoS攻击对应的有效特征信息;进一步地,合并每一类型应用层DDoS攻击的有效特征信息,汇总为多类型应用层DDoS攻击有效特征信息。将有效特征信息输入模型,在保证高准确率的同时降低拟合程度、减少训练时间。

2.3 离线训练模块

离线训练模块主要负责生成可高准确率检测DDoS 攻击的模型,将数据集预处理模块获取的应用层DDoS 攻击的有效特征信息作为模型输入,训练得到最优模型。首先将已获取的离线有效数据集按比例划分为训练数据集和验证数据集。输入离线训练数据集中已筛选的特征到集成后的多类型应用层DDoS 攻击检测模型中,该模型对输入特征信息进行训练和分类,判断不同类型应用层DDoS 攻击流量和正常流量,利用离线验证数据集对多类型应用层DDoS 攻击检测模型的输出结果验证。

目前很多改进的、表现良好的机器学习模型均是基分类器的集成,较为常用的集成学习算法有Bagging、Boosting、Stacking[14]等。

Bagging 算法采用自采样法对数据集进行n次随机重采样,得到n个训练样本集,基于训练样本集训得到n个分类器,最后利用投票等规则将分类器组合。Bagging 集成算法的效果很大程度受基分类器效果以及数据类别是否平衡的影响。

Boosting 的基本思想是纠正基分类器所犯的错误,串行训练一些列分类器,通过对错误分类的样本赋予更高的权重来更新分类器。具体思路可分为以下几个步骤:首先,使用相同权重初始化所有样本,之后的每次迭代中降低正确分类样本的权重,增加错误分类样本的权重,最终得到根据自身表现加权的几个基分类器的线性组合。由于Boosting 倾向于错误概率高的样本,若样本存在离群的错误样本,Boosting 的效果易受影响。

Stacking 算法分为两层的训练,首先利用k-折交叉验证法训练第一层的各基分类器,并将各个分类器的预测结果作为新特征用于训练第二层模型;第二层的模型训练并预测得到最终的结果。Stacking 集成模型应用的领域很广,Pavlyshenko 等[18]提出将Stacking 集成模型应用于时间序列和逻辑回归,集成多个机器学习模型预测高度不平衡数据,可将预测精准率明显提升。

Stacking算法集成多个传统学习算法作为基分类器,基分类器的效果以及样本的不平衡影响相对较小,具有性能优于单个最优分类器、泛化性强等优点,相较于Bagging和Boosting算法的稳定性更高。因此本文采用基于Stacking 集成学习的多类型应用层DDoS攻击检测方法,训练可同时检测多类型应用层DDoS攻击的离线模型,得到检测准确率高且泛化性好的模型,可在后续在线检测获得较好的检测性能。

基分类器本身对模型的检测精准度影响较大,比较不同基分类器的检测性能进行模型选择。在输入相同应用层DDoS 攻击数据集以及特征数量的情况下,利用指标召回率(Recall)比较随机森林(Random Forest,RF)[19]、XGBoost[20]、极端随机树(Extremely randomized Tree,ET)、轻量梯度提升器(Light Gradient Boosting Machine,LightGBM)、卷积神经网络(Convolutional Neural Network,CNN)[21]以及长短期记忆(Long Short-Term Memory,LSTM)人工神经网络模型的检测性 能,对CC、HTTPFlood、HTTPPost、HttpGet、正常流 量(Benign)以及其他攻击流量(Other)的召回率对比如表1所示。

表1 基分类器的召回率对比Tab.1 Recall comparison of base classifiers

采用机器学习模型(RF、XGBoost、ET、LightGBM)效果明显优于采用深度学习模型(CNN、LSTM)。其中,对于样本数量较少的HTTP Flood、HTTP Post 和HTTP Get 攻击,CNN 和LSTM 表现较差;考虑是深度学习模型容易将注意力集中在样本数较多的类,样本数多的CC、Benign、Other 攻击训练时易产生过拟合,样本数少的HTTP Flood、HTTP Post 和HTTP Get 攻击易产生欠拟合。过拟合即模型只对本训练数据集检测性能良好,但是该模型去预测新的数据集时性能较差,这是由于训练过程过度追求检测性能导致模型对当前数据集出现过的攻击数据过度依赖,无法判断新的攻击数据。而机器学习中的XGBoost 和LightGBM 模型在损失函数上加了正则项控制了模型的复杂度,一定程度减轻过拟合现象,检测效果相对较好。

基于Stacking 的集成模型如图3 所示,Stacking 模型训练主要分为两个层次:第一层将检测数据按比例分为训练集和测试集,输入训练集后分别对XGBoost 模型和LightGBM 模型进行训练,训练后分别利用模型预测训练集和测试集的标签。将两个模型的训练集的预测标签作为新的特征,合并新的特征与训练集的真实标签为新的数据集;将新的数据集按比例分为训练集和测试集后,再次输入第二层的逻辑回归模型中进行训练,重复第一层的训练过程得到最终的训练模型,根据第二层模型对测试集的预测值进行预测得最终预测结果。

图3 基于Stacking的集成模型Fig.3 Stacking-based integrated model

2.4 在线检测模块

基于训练好的模型检测实时应用层DDoS 攻击,在线检测模块通过在线部署的检测模型判断待检测流量,利用Shell 脚本实现在线流量数据采集、在线数据集生成、在线检测的自动化过程。

在线流量数据采集阶段,利用实时流量抓取工具,在网络流量入口处间隔指定时间捕获流经流量。

在线数据集生成阶段,在线读取生成的流量文件,采用流特征提取工具CICFlowMeter 将指定时间间隔在线保存的流量文件转为包含87 维特征信息的数据集;根据数据预处理模块的特征工程方法提取数据集的47 维有效特征,生成在线检测数据集。

在线检测阶段,部署在网络流量入口处的检测模型作为在线分类器,判断输入流量的类型,生成模型预测标签。通过流量真实标签以及模型预测标签,计算准确率、误报率、召回率以及恶意流量检测率等指标,验证模型在线检测性能。

3 实验与结果分析

实验基于Vmware vSphere 虚拟平台模拟多类型的应用层DDoS 攻击、其他类型DDoS 攻击以及多场景下的正常流量,软件环境为 Ubuntu18.04 操作系统。利用流特征提取工具CICFlowMeter 提取特征信息并处理后生成实验所需数据集,分别进行离线模型训练实验和在线检测验证实验。

3.1 评价指标

实验通过准确率A(Accuracy)、精准率P(Precision)、召回率R(Recall)、F1 分数(F1)和混淆矩阵(Confusion matrix)这5 个评价指标来评估离线训练模型和在线检测阶段的分类效果。其中:准确率表示模型分类正确的样本数占总样本数比例;精准率表示模型预测正确的攻击样本数占所有预测为攻击的样本数的比例;召回率表示模型判断正确的应用层DDoS 攻击样本数占所有攻击样本数的比例;F1 分数表示精准率和召回率的调和平均值,能够更准确地反映模型性能。当上述指标均表现较好时,可说明检测模型分类效果良好。

其中:TP(True Positive)表示实际类型为应用层DDoS 攻击样本中被模型分类正确的样本数;TN(True Negative)表示实际类型为非应用层攻击样本中被模型分类正确的样本数;FP(False Positive)表示实际类型为非应用层攻击样本中被模型错误分类为应用层攻击类型的样本数;FN(False Negative)表示实际类型为应用层攻击样本被模型错误分类为非应用层DDoS 攻击的样本数。

混淆矩阵以矩阵形式汇总了样本数据的真实情况与分类模型的预测结果。以常见的二元分类为例,表2 展示了二元混淆矩阵的样式,其中0 代表判定为非攻击类别,1 代表判断定为攻击类别。

表2 二分类混淆矩阵样例Tab.2 Example of confusion matrix for binary classification

对于多分类模型,精准率、召回率、F1 分数仅是针对每一类别的性能指标,为整体描述检测性能,目前常见的有微平均和宏平均两种指标。宏平均是指在计算均值时使每个类别具有相同的权重,最后结果是每个类别的指标的算术平均值;微平均是指计算多分类指标时赋予所有类别的每个样本相同的权重,将所有样本合在一起计算各个指标。根据上述定义可知在数据集样本不均衡时,微平均更注重样本量多的类别,宏平均更注重样本量少的类别,本文构建的模型在样本数量大的类别上表现较好,更关注于样本量少的类别的检测情况,因此使用宏平均作为整体衡量指标。

宏平均精准率(macro-P)表示对每个类别精准率求平均;宏平均召回率(macro-R)表示对每个类别召回率求平均;宏平均F1 分数(macro-F1)表示对每个类别F1求平均。计算公式如下:

恶意流量检测率验证在线检测的有效性,计算公式为:

其中:Ti是在线检测后网络环境中攻击流量类别i被检测出的流量数目;Ai是攻击流量类别i的总流量数目;n表示攻击流量类别的总流量数目。当恶意流量检测率较高时,可说明在线检测阶段可以有效检测恶意流量。

3.2 实验数据集

在网络入口路由器处收集一定时间的实验流量,实验网络拓扑图如图4 所示。

图4 网络拓扑图Fig.4 Network topology diagram

流量发起端主要由3 个域构成,其中应用层DDoS 攻击域中4 台虚拟主机利用攻击工具分别发起4 种应用层DDoS攻击:CC 攻击是由Webbench 工具模拟多用户发起分布式的泛洪请求,HTTP Flood 攻击是由Hulk 攻击工具模拟分布式攻击流量,HTTP Post 攻击和HTTP Get 攻击这两类攻击是通过设定Goleden-Eye 工具的参数发送分布式模拟攻击流量。其他DDoS 攻击域中6 台虚拟机根据攻击工具或脚本发起僵尸网络DDoS 攻击、网络层攻击等。上述攻击域中的每一种攻击按照具体时间点单独或者组合的形式发起。

依据3GPP 提出的5G 典型场景中的流量模型,在5G 移动通信网络原型系统中通过编写发包脚本模拟浏览器、视频流、游戏等多场景下的流量统计规律,实现海量正常用户流量模拟[22],不间断发起正常流量。

正常域中4 台虚拟机流量接收端主要由受害者域和正常域组成:受害者域接收来自应用层DDoS 攻击域和其他DDoS 攻击域的攻击流量,正常域接收来自正常主机的通信流量。汇总攻击流量以及正常流量发起的时间节点以及流量发起的源目IP 地址,如表3 所示。收集流量时间共计25 min,根据时间节点分别在4 台虚拟机上模拟应用层DDoS攻击流量,在6 台虚拟机上模拟其他DDoS 攻击,在1 台虚拟机上模拟正常流量。

表3 流量时间节点汇总Tab.3 Flow time node summary

在骨干网的流量入口路由器处,利用Linux 系统抓包软件Tcpdump,抓取经过指定网卡的一定时间内待检测的网络流量,生成对应的抓包Pcap 文件,得到包含多种攻击流量和正常流量的原始流量集。流特征提取工具CICFlowMeter 转化Pcap 文件为可供后期训练的csv 格式的数据集。对该数据集进行数据统计后,其数据分布如表4 所示,标签共计6种,将训练集的流量类型编号为[0,5]的范围。

表4 不同流量类型所占比例表Tab.4 Percentages of different traffic types

3.3 数据集预处理结果

利用特征工程中RF、XGBoost、ET这3种模型[14]对生成的87 维原始特征信息进行特征重要性排序,筛选两种及两种以上模型中均排名靠前的特征信息。其次,结合多种攻击的时序图和统计图的方法进行分析。结合上述两个步骤筛选应用层DDoS 攻击的特征信息,提取适用于所有应用层DDoS 攻击的有效特征信息,生成已标记有效数据集。

以HTTP Get 攻击为例,图5 展示HTTP Get 攻击时序图。攻击者在TCP 三次握手后发出大量请求,较长时间占用后才有对应HTTP 响应,因此流持续时间、流空闲时间较长等可作为有效特征信息。图6 展示了HTTP Get 攻击流持续时间的分布情况。由图6 可知流持续时间主要分布在5 s 和30 s。根据以上步骤对每一类型应用层DDoS 攻击进一步筛选特征。

图5 HTTP Get攻击时序图Fig.5 Sequence diagram of HTTP Get attack

图6 HTTP Get攻击流持续时间分布直方图Fig.6 Histogram of HTTP Get attack flow duration distribution

将多种攻击的有效特征信息进行汇总,最终得到如图7所示的对于多种应用层DDoS 攻击均有效的特征信息。由图7可知,提取的特征信息共47维,按照其特性分为五元组信息、时间特征、流报头特征、有效载荷特征以及标志位特征。

图7 有效特征信息图Fig.7 Effective feature information map

为验证特征分析对模型性能提升和训练时间缩短的有效性,以精确率、召回率、F1 分数、训练时间为指标,对比特征信息筛选前后的模型表现,如表5 所示。从表5 可以看出,输入的流特征数量对模型的检测结果存在重要的影响。当采用筛选后的47 维有效特征作为Stacking 集成模型的输入特征时,对于正常流量、CC、HTTP Flood、Other 攻击的识别精确率、召回率、F1 分数这3 个指标均可达0.95 以上;对于易混淆的HTTP Post 和HTTP Get 攻击也在0.90 左右;整体性能较优。当采用87 维原始特征信息作为Stacking 集成模型的输入特征时,模型在检测HTTP Flood、HTTP Post、HTTP Get攻击时指标均有所下降,因为过多的特征会导致过拟合,检测性能反而下降。

此外,训练和检测时间也是衡量特征筛选方法效果的重要指标。比较筛选后特征与原始特征的训练和检测时间,如表5 所示。

表5 不同特征训练模型的指标对比Tab.5 Index comparison of different feature training models

筛选后特征训练模型比原始特征离线训练模型所需时间减少1 018.26 s,在线检测时间减少36.6 s,由此可知筛选有效特征信息可以有效节省离线训练和在线检测的时间。

3.4 离线训练结果

为了验证本文提出的Stacking 集成模型的检测性能,针对2.3 节得到性能较好的两种基学习器XGBoost、LightGBM模型以及Stacking 集成模型进行了检测对比实验。将已获得的离线有效数据集按7∶3 划分为训练数据集和验证数据集,在输入相同训练数据集的情况下比较性能。

对上述三种检测模型,利用验证数据集对多类型应用层DDoS 攻击检测模型的输出结果验证。依据精确率、召回率和F1 分数指标对检测结果进行对比,如图8 所示。通过对比可以看出,针对Benign 和CC 攻击的识别,每一种模型在精准率、召回率和F1 分数上表现较好,基本可达1.0,这是由于CC 攻击多方面特征与正常用户行为偏差过大,因此检测率很高;对于HTTP Flood 攻击,Stacking 集成模型表现优于其他两个模型,这是由于Stacking 集成模型在构建检测模型时进一步集成,因此具有较强的泛化性;对于HTTP Post 和HTTP Get 攻击,Stacking 集成模型和XGBoost 表现较好。

图8 各类模型的性能比较Fig.8 Performance comparison of various models

为了验证Stacking 集成模型相较于现有的其他集成策略模型的优越性,利用其他集成学习算法进行训练和测试,对比Bagging、Boosting(AdaBoost、XGBoost)与Stacking 集成模型的检测性能。对上述4 种检测模型,利用验证数据集对多类型应用层DDoS 攻击检测模型的输出结果验证。依据准确率、宏平均精确率、宏平均召回率以及宏平均F1 分数等指标对检测结果进行对比,如表6 所示。

由表6 可知,相较于Bagging、Adaboost 和XGBoost 模型,Stacking 的准确率分别提高了0.18、0.21 和0.19 个百分点,宏平均精准率分别提高了1.59、2.34 和2.44 个百分点,宏平均召回率分别提高了1.86%、2.48%和0.90%,宏平均F1 分数分别提高了1.77、2.43 和1.69 个百分点。相较于其他集成策略的模型,Stacking 集成模型的精度均有较大提升,结果表现较好。

表6 Stacking模型与其他集成策略模型性能对比Tab.6 Performance comparison between Stacking model and other integration strategy models

综合上述评价指标可知,相较于现有的单一机器学习模型以及Bagging、Boosting 集成模型,本文提出的Stacking 集成模型综合XGBoost 模型和LightGBM 模型这两种模型的检测结果进行最终结果预测,泛化性强,可有效提高检测性能。考虑应用层DDoS 攻击的多样性,采用的检测模型必须要对多种攻击具有较强的检测准确度,后续在线检测阶段所部署模型采用Stacking 集成模型最佳。

3.5 在线检测结果

本节基于3.4 节已训练好的Stacking 集成模型进行应用层DDoS 攻击在线检测。在线流量数据采集阶段,为了验证Stacking 集成模型对组合类型的应用层DDoS 攻击的检测效果,使用Webbench、Hulk、Goleden-Eye 等攻击工具持续发送8 h 的攻击流量和正常流量。分别发送CC、HTTP Flood、HTTP Post、HTTP Get、Other、CC+HTTP Flood、HTTP Flood+HTTP Post、HTTP Post+HTTP Get、CC+HTTP Flood+HTTP Post+HTTP Get 攻击。其中分别单独发送CC、HTTP Flood、HTTP Post、HTTP Get、Other 攻击的 流量速 率分别 约17.9 MB/s、15.0 MB/s、10.3 MB/s、11.2 MB/s、42.1 MB/s,不同组合应用层DDoS 攻击中最大速率可达到73 MB/s。由于在网络流量入口处会有大量正常用户访问,本实验将正常流量的速率设定为35 MB/s。

在线数据集生成阶段,引入时间窗口的概念,即在线抓包生成检测数据集的时间间隔。由于不同时间窗口对于流级的数据集分割情况会有一定差别,训练的模型也会有所不同,导致最后训练的结果差异较大。Stacking 模型自定义不同时间窗口,分别对比性能评价指标,选择性能最优的时间窗口作为在线检测的设定参数。

在线检测阶段,为了评估Stacking 集成模型在3 种时间窗口(分别为1 min、2 min、3 min)下的检测性能,将3 种模型的检测情况以混淆矩阵的形式展示,实验结果如图9 所示,其中最右侧图例根据颜色深浅反映数值大小,提高数据可视化程度。从图9 可以看出,3 种时间窗口下的在线检测模型对Benign 类型的识别检测率基本可以保证在1.0;对于CC 攻击和其他类型攻击,3 种时间窗口下的在线检测模型表现均较好,可达0.9 以上;对于HTTP Flood 攻击,1 min 和2 min 的时间窗口表现优于3 min 时间窗口;对于较易混淆的HTTP Get 和HTTP Post 攻击,1 min 和2 min 的时间窗口表现明显优于3 min 时间窗口。

为验证2 min 时间窗口可以在保持高检测率时,将恶意流量检测率也保持在较高水平的结论,以恶意流量检测率为指标对在线检测数据集进行实验。对比3 个时间窗口的恶意流量检测率,如表7 所示,发现2 min 的恶意流量检测率最高。通过分析图9 和表7 的结果,可以看出2 min 时间窗口相对表现最佳,因为2 min 窗口相较于1 min 窗口可获取更多的特征信息,相较于3 min 窗口流截断引起的误差小且时间开销小。为保证瞬时流量的检测能力和效果,本文选择2 min时间窗口作为在线检测的最优时间窗口参数。

图9 不同时间窗口的混淆矩阵Fig.9 Confusion matrices in different time windows

表7 恶意流量检测率对比Tab.7 Malicious traffic detection rate comparison

为了更加全面地评价Stacking 集成模型在2 min 时间窗口的检测性能,采用精确率、召回率和F1 分数评价模型,结果如表8 所示。对于正常流量、CC 攻击和其他DDoS 攻击的识别,精确率、召回率和F1 分数都在0.98 以上;对于HTTP Flood、HTTP Post 和HTTP Get 攻击的识别,精确率、召回率和F1 分数可基本在0.90 左右。综合上述结果可知,在线检测阶段Stacking 集成模型的性能表现较好,模型泛化性强。

表8 最优时间窗口的检测性能Tab.8 Test performance for optimal time window

4 结语

本文提出的基于集成学习的应用层DDoS 攻击检测方法,结合离线训练和在线检测方法,可检测多类型应用层DDoS 攻击。实验结果表明,所提方法可有效检测多类型应用层DDoS 攻击,在最优时间窗口下恶意流量检测率达98%。本文将进一步验证基于集成学习的检测方法在真实网络环境中的可用性,优化在线时间窗口值并优化模型,得到更佳检测效果。

猜你喜欢
应用层离线分类器
异步电机离线参数辨识方法
浅谈ATC离线基础数据的准备
FTGS轨道电路离线测试平台开发
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
基于分级保护的OA系统应用层访问控制研究
物联网技术在信息机房制冷系统中的应用
基于层次化分类器的遥感图像飞机目标检测
一种基于置换的组合分类器剪枝方法