一种SDN 架构下基于随机森林的DDoS 攻击检测方法

2021-04-24 14:16
网络安全技术与应用 2021年4期
关键词:表项决策树数据包

(四川大学网络空间安全学院 四川 610041)

SDN(Software-Defined Networking,软件定义网络)是一种旨在使网络更加灵活和易于管理的新型网络架构,它将控制平面与数据平面进行解耦,控制平面负责全局控制与指令的下发,数据平面负责数据转发与指令的执行,整个架构呈现出数控分离的特点。一个典型的SDN 架构通常可以分为数据平面、控制平面和应用平面,数据平面由作为转发设备的网络交换机组成;控制平面包含一个或多个SDN控制器,在逻辑上集中管理网络中的转发设备;最上层的应用平面则由各种SDN 应用组成[1]。

DDoS(Distributed Denial of Service,分布式拒绝服务)是一种依靠分布式的攻击源发起的、规模庞大的拒绝服务攻击。其基本原理为:攻击者通过攻击手段入侵分布在不同位置的主机,并在其上安装控制程序,使其成为傀儡机。发动攻击时,攻击者下发攻击指令,指挥傀儡机向被攻击的目标发送大量数据包,造成目标系统或网络在一段时间内无法响应正常服务。DDoS 广泛存在于传统网络中,是目前最常见也是危害最大的网络攻击手段之一[2]。随着SDN的出现,DDoS攻击也开始活跃在这一新型网络架构下,并成为SDN 主要安全威胁。

1 相关工作

目前针对SDN 架构下DDoS 攻击的检测已有一些现成的解决方案,肖甫等[3]提出了一种 SDN 架构下基于 K-近邻算法(KNearestNeighbor,KNN)的DDoS 攻击检测方法,通过提取SDN 交换机中流表特征五元组,使用KNN 算法进行分类检测,取得了较高的检出率和较低的误警率,但忽略了流表项增速的变化。王晓瑞等[4]提出一种基于BP 神经网络的DDoS 攻击检测方法,通过实验证明其具有较高的检测准确率,但BP 神经网络的权值参数进行了随机初始化,容易陷入局部最优。刘俊杰等[5]提出一种SDN 架构下基于C4.5决策树算法的DDoS 攻击检测方法,通过与SVM、KNN 算法作比较,在检测准确率、误报率和检测时间上都有所改善,但同样忽略了流表项增速的变化,同时检测准确率上还可进一步提升。

针对以上文献所提方法存在的特征选择不全面以及检测准确率不够高两方面的不足,本文提出一种SDN 架构下基于随机森林的DDoS 攻击检测方法,通过选取流包数均值、流字节数均值、流表项增速、源IP 增速和端口增速组成特征五元组,采用随机森林算法进行分类检测。该方法相较于其他方法,在特征选择方面综合选取了SDN 架构下DDoS 攻击检测的典型特征。同时,随机森林算法已经被许多理论和研究证明具有很高的预测精度,能较好地容忍异常值和噪声点的存在,而且不容易出现过拟合[6]。

2 基于随机森林的DDoS 攻击检测方法

2.1 随机森林算法

随机森林(Random Forest)是一种集成学习方法,它将一组决策树分类器进行组合,其中每棵决策树都基于随机向量的一个独立集合的值产生[7],最终预测结果通过组合每棵决策树的结果得到。随机森林的基本原理是从训练样本中有放回地随机抽取k个样本,这种有放回的随机抽样也被称为Bootstrap 重抽样。针对这k个样本,分别使用决策树算法进行建模,生成k个决策树模型。采用简单多数投票法组合每个决策树模型的分类结果,形成整个分类模型最终预测结果。

随机森林分类器(Random Forest Classifier)作为一种组合分类模型,由一组决策树分类模型{h(X,Θk)k=1,2,…}组成,其中{Θk}是独立同分布的随机向量。当自变量X给定时,使用简单多数投票法从所有决策树分类结果中挑选出最佳分类结果。

如图1 所示,随机森林分类器随机划分出k个不同的训练集,以此来减少各个分类模型之间的相关性,同时提高组合分类器的泛化能力。针对这k个训练集分别进行训练,形成分类模型序列{h1(X),h2(X),…,hk(X)},然后将分类模型序列组合成一个多分类模型系统,系统最终的分类结果通过投票法得出,用一个公式表达如下:

其中,H(x)表示多分类模型系统,hi表示单棵决策树分类模型,Y表示目标变量,I表示示性函数。该式说明,最终的分类结果通过多数投票决策的方式得出。

2.2 基于随机森林的DDoS 攻击检测方法

本文提出的基于随机森林的DDoS 攻击检测方法主要分为三个功能模块:流表收集模块、特征提取模块和攻击检测模块。

2.2.1 流表收集模块

流表收集模块部署在SDN 控制器中,在支持OpenFlow 协议的典型SDN 架构下,流表信息的收集不需要额外的第三方设备,OpenFlow 交换机仅通过流表就能收集端口和流的统计信息[8]。在本文的实验设计中,SDN 控制器通过向交换机周期性地发送ofp_flow_stats_request 报文来请求当前流的统计信息,交换机从流表中读取相关的统计信息回复给控制器,完成流表信息的收集。

图1 随机森林算法模型

2.2.2 特征提取模块

特征提取模块的主要功能在于从流表收集模块收集到的流表信息中提取出与DDoS 攻击检测相关的特征,用于攻击检测模块进行模型训练和分类检测。本文选取的特征如下:

(1)流包数均值(Average of Packets per Flow,APF)

正常状态和受到DDoS 攻击时,每条流中包含的数据包数量是不一样的。攻击发生时,攻击者通常会连续随机地生成大量的数据包,流的生成速度加快,同时每个流中数据包的数量会减少。

其中PacketNumi是在指定周期内第i条流包含的数据包数,FlowNum是该周期内所有流的数目。

(2)流字节数均值(Average of Bytes per Flow,ABF)

很多DDoS 攻击者都采用短流攻击,这样可以在短时间内形成大量数据包,因此选取每条流中的平均字节数作为检测特征之一。

其中ByteNumi表示在指定周期区间内第i条流中包含的字节数。

(3)流表项增速(Flow table entries Growing Speed,FGS)

DDoS 攻击发生时,针对目标主机的数据包会迅速增加。这些数据包来自攻击者控制的分布式傀儡机,因此会造成关于目标主机的流表项生成速度加快,流表项数目大量增加。

其中FlowTableEntryNum表示在interval时间间隔内目标交换机生成的流表项的数目。

(4)源IP 增速(source IP Growing Speed,IGS)

当发生DDoS 攻击时,大量不同来源的真实或伪造的IP 地址向同一个目标地址发送大量的数据包,因此源IP 地址的变化是DDoS攻击发生时的一个重要特征。

其中sIPNum表示在时间间隔interval内源IP 地址的数量。

(5)端口增速(Port Growing Speed,PGS)

在正常状态下,服务端口增速处于一个相对平稳的范围,而DDoS 攻击发生时,攻击者会随机生成端口进行连接,因此端口增速相较正常状态会急剧上升。

其中PortNum表示在时间间隔interval内所有数据包中端口的数量。

2.2.3 攻击检测模块

在获取特征提取模块传来的特征样本集之后,攻击检测模块采用随机森林算法对流量样本进行训练,并用训练好的模型对新来的流量样本进行分类。采用随机森林算法进行流量分类的具体过程如下:

第1 步,采用Bootstrap 方法进行重抽样,随机产生N 个流量样本训练集S1,S2,…,SN;

第2 步,对N 个流量样本训练集使用决策树进行建模,生成流量样本决策树C1,C2,…,CN。生成决策树的过程中,为了保证随机性,在每个非叶节点进行分裂的时候,都从D 个特征中随机选择d 个作为分裂特征集,并以分裂特征集d 中的最佳分裂特征对该节点进行分裂;

第3 步,每棵流量样本决策树都让其自然生长,过程中不进行剪枝;

第4 步,使用上述流量样本决策树对测试集中的流量样本Y 进行分类,相应的分类结果为:C1(Y),C2(Y),…,CN(Y);

第5 步,采用简单多数投票法选出输出结果最多的类作为测试样本Y 的最终分类结果。

3 实验与分析

3.1 实验环境

为了验证本文提出算法的检测效果,在Ubuntu 下使用SDN 仿真软件mininet 搭建了如图2 所示的实验环境,其中net1 为DDoS 攻击的目标网络,net2 和net3 为发起DDoS 攻击的傀儡机所在网络。

本实验中,正常流量和攻击流量均通过Scapy 生成。Scapy 是一个数据包处理工具,可以伪造或解码数据包。Scapy 已经集成为Python 的第三方库,通过该库编写发包脚本,可以生成不同速率不同来源的数据包,从而模拟不同强度的DDoS 攻击。

图2 实验网络拓扑图

在训练样本生成阶段,为了生成正常流量,使用Scapy 生成正常速率的数据包发往net1,这些数据包的源IP 地址设为net2 和net3 中的IP 地址,目的是模拟net2 和net3 中的主机对net1 进行正常访问。与此同时,通过控制器c0 从交换机s1 中提取生成的流表项。正常访问的流表项收集完毕之后,使用Scapy 生成速率不同且大于正常访问速率的TCP SYN 数据包发往net1,模拟针对net1 的SYN Flood 攻击。这些数据包的源IP 地址既包括net2 和net3 中的IP 地址,又有随机生成的IP 地址,目的是模拟DDoS 攻击中攻击者使用伪造的IP地址进行攻击的情况。

3.2 结果分析

通过训练样本生成阶段共收集到15000 条流量记录,其中正常流量6543 条,攻击流量8457 条。作为对比,除了随机森林算法之外,本文还选择了决策树、KNN 以及SVM 算法同时对以上数据进行训练,并采用准确率、查准率、召回率三个指标进行比较分析,其中:

(1)准确率表示模型判断正确的样本数量占样本总数的比例,即

(2)查准率表示模型判断为攻击流量的样本中实际为攻击流量样本的比例,即

(3)召回率表示所有攻击流量样本中被模型正确判断出来的比例,即

本文实验按照DDoS 攻击的强度分成三组进行,三组实验使用的流量样本如表1 所示:

表1 三组实验所使用的流量样本

3.2.1 准确率

图3 展示了DDoS 攻击强度分别为25%、50%、75%时四种分类算法的准确率,从图中可以看出,随着攻击强度的提高,随机森林算法的准确率逐步提升,最高时达到99.17%,始终高于其他三种分类算法。注意到攻击强度从25%提高到50%时,决策树算法和KNN 算法的分类准确率都有不同程度的下降,这与流量样本中噪声点的存在有关。但相同条件下随机森林算法的准确率却依然有所上升,充分说明随机森林算法作为一种集成学习算法对异常值和噪声具有很好的容忍度,体现了集成学习算法的优势。

图3 四种分类算法在不同DDoS 攻击强度下的准确率

3.2.2 查准率

图4 展示了不同DDoS 攻击强度下各个分类算法查准率的变化,该指标反映的是模型对攻击流量样本判断的准确性。从图中可以看出,随着攻击强度的提高,除了SVM 在攻击强度为50%时查准率降低了之外,其他算法的查准率都有所提升。其中随机森林算法不论在何种攻击强度下,查准率都好于其他算法,在攻击强度最高时能达到99.69%,这说明在识别攻击流量样本的准确性方面,随机森林的表现优于作为比较的其他算法。

图4 四种分类算法在不同DDoS 攻击强度下的查准率

3.2.3 召回率

图5 展示了不同DDoS 攻击强度下各个分类算法召回率的变化,该指标反映的是模型将所有攻击流量样本都检测出来而不遗漏的能力。从图中可以看出,随着DDoS 攻击强度的提高,各个算法的召回率都有所提升。虽然SVM 算法的召回率最高时达到了99.95%,但在攻击强度较低时,其召回率是各个算法中最低的,说明该算法在不同攻击强度下的召回率不够稳定。而随机森林算法在各个攻击强度下都有着很高的召回率,综合来看,随机森林算法更符合本文要求。

图5 四种分类算法在不同DDoS 攻击强度下的召回率

4 结束语

本文提出了一种基于随机森林的DDoS 攻击检测方法,通过提取SDN 交换机中的流表项特征,采用随机森林算法进行训练,从而构建DDoS 攻击检测模型。实验证明,本文提出的基于随机森林算法的DDoS 攻击检测在准确率、查准率和召回率三个指标上总体表现优于其他对比的算法。

猜你喜欢
表项决策树数据包
一种改进的TCAM路由表项管理算法及实现
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于ARMA模型预测的交换机流表更新算法
一种针对不均衡数据集的SVM决策树算法
SmartSniff
决策树和随机森林方法在管理决策中的应用
SDN数据中心网络基于流表项转换的流表调度优化
基于决策树的出租车乘客出行目的识别
基于肺癌CT的决策树模型在肺癌诊断中的应用