SDN 中一种基于机器学习的DDoS 入侵检测与防御方法∗
2023-10-20徐芹宝王昌达
胡 睿 徐芹宝 王昌达
(江苏大学计算机科学与通信工程学院 镇江 212013)
1 引言
分布式拒绝服务攻击(Distributed Denial-of-Service,DDoS)是一种常见的网络威胁。攻击者通过操控大量的傀儡主机,向一个或多个目标主机发送攻击数据包,由此消耗目标主机带宽、内存、处理器等资源,使得目标主机的正常连接请求得不到响应,最终无法对外提供服务。
软件定义网络(Software Defined Network,SDN)[1]是一种主流的网络管理架构,该架构摆脱了硬件限制,将传统网络中固化的控制平面与数据平面解耦。SDN 架构的优点是对网络中的工作单元进行了功能划分;缺点是其开放式的网络架构引入了新威胁,例如:攻击者操纵傀儡机入侵控制器,危害数据的正常转发;攻击者通过入侵交换机,向控制器发送大量的虚假请求,消耗控制器资源以致链路崩溃。因此,快速准确地对SDN 中的DDoS 攻击进行检测并防御成为近期的研究热点[2~3]。
本文根据现有SDN 中DDoS 检测所遇到的问题,基于SDN 数据平面提出了一种DDoS 实时入侵检测与即时防御方法RT-XB(Real-Time XGBoost-Bloom Filter)。主要工作如下:
1)实现了一种基于P4 可编程数据平面[4]的数据包收集方法,即使用P4 在数据平面定制检测的数据包信息,实现对目标数据包的精准收集。
2)利用Relief 算法优化攻击特征选择[5],通过使用极限梯度增强(extreme gradient boosting,XGBoost)[6]算法构建了攻击检测分类器,根据攻击特征向量识别异常数据包。
3)基于P4-BF(Bloom Filter)在数据平面快速识别攻击数据包,并对应修改其流表匹配策略,实现了对同类攻击的即时防御。
2 相关工作
目前,SDN 网络中针对DDoS 攻击的检测方法大致可以分为两类:基于统计分析和基于机器学习。
基于统计分析的检测方法是通过提取攻击发生时的流量统计特征,并将其与正常网络流量的统计特征比较,由此判断网络中是否发生攻击。蔡佳晔等[7]提出一种基于Renyi 熵的攻击防御方法,该方法利用Renyi熵分析攻击发生时openflow 信道中ICMP 超时报文数量变化情况,以此判断是否发生攻击。郭伟等[8]提出一种IP熵,并将其与通信熵作为攻击判断标准,通过设定阈值,比较攻击发生前后熵值的变化情况,以此实现对DDoS 攻击的检测。一般地,基于统计分析的方法须要依据不同的网络环境建立正常网络流量模型,可移植性较差。
基于机器学习的检测方法利用机器学习算法构建检测模型,将模型训练结果与测试结果进行对比分析,通过不断迭代并优化模型,提高检测准确率。彭中联等[9]提出一种CGANs-DNN入侵检测模型,将改进后的GAN与DNN相结合,通过解决样本的不平衡性来提高模型对未知/少知攻击类型的检测率。马乐乐等[10]提出通过熵值检测流是否异常,然后利用SVM 与K-means 两种机器学习算法检测DDoS 攻击。Gu 等[11]提出一种基于SVM 集成和特征增强的入侵检测框架,该方法将原始特征转化为对数边际密度率,并以此训练SVM 集成分类器,实现对异常数据的检测。Kshirsagar等[12]提出一种结合特征约简和J48 算法的DDoS 检测框架,该方法通过将信息增益和相关性结合以获得更重要的特征子集,并与J48 算法结合构建检测分类器,实现对DDoS攻击的检测。
有鉴于此,本文基于SDN数据平面提出了一种DDoS 实时入侵检测与即时防御方法RT-XB,在继承了现有方法优点的基础上,亦能较好地弥补其不足之处。
3 RT-XB方法
RT-XB首先利用P4编程以自定义的方式配置数据平面,实现网络数据包的按需实时收集,与此同时利用XGBoost 算法构建分类器识别异常数据包,并分析其对应的攻击类型;然后将检测到的数据包源信息映射到数据平面的BF 中,并对后续匹配到的该攻击源数据包,修改流表匹配动作,实现对SDN 网络中DDoS 攻击的实时检测与即时防御。RT-XB 方法具体可分为数据收集、检测以及防御三部分,见图1。
图1 RT-XB方法
3.1 目标数据收集
通过利用P4 编程以自定义的方式配置数据平面,在控制器端监控指定端口的流表信息,记录日志以及搜集pcap 文件完成数据的收集。数据平面数据包处理步骤见图2。
图2 数据平面数据包处理流图
数据包收集的步骤如下:
Step1:运行数据平面,生成.json文件;
Step2:解析topology.json 文件,构建mininet 拓扑;
Step3:启动交换机和host,导入.json文件;
Step4:解析.json文件,载入Bmv2交换机流表;
Step5:监听端口号A,即监听数据包,以及srcIPAddr,dstIPAddr,srcMacAddr,dstMacAddr;
Step6:记录log,保存为pcap文件。
3.2 特征提取
在数据平面以自定义的方式收集流经交换机的数据包特征信息,具体包括源IP 地址、目的IP 地址、源端口、目的端口、传输数据包量、流比特数等信息。之后,将提取的数据包特征信息转换成与DDoS攻击有关的源IP增速、平均包流数、源端口增速、流表项增速、对流比、流表匹配的成功率、目的端口增速,并通过Relief 特征权重算法选出具有不同权重的DDoS 攻击流量特性,最终根据权重排序选取攻击特征。
1)源IP增速(Source IP Growing Speed,SIGS)
发动攻击时,攻击者为防止被追踪,会采用欺骗源IP 的方式在一定时间内生成大量虚假IP 地址对目标进行攻击。
其中T 为采样周期,NSrcIP为一个采样周期中的源IP包个数。
2)平均包流速(Average Packets,AP)
攻击者为发动大流量的DDoS 攻击,攻击所需的带宽与攻击流的包数量成正比。攻击流数据包数量较之正常流量会变少。
其中N 为采样周期中所有流的数据包的总数,Pcount为流数据包数目。
3)源端口增速(Source Port Growing Speed,SPGS)
攻击者可采用随机生成端口方式发动攻击,使得攻击发生时端口增速较之正常状态下会显著提升。
其中NSrcPort为一个采样周期中源端口总数。
4)流表项增速(Rate of Flow Entries,RFE)
DDoS攻击流会携带大量随机数据包对交换机进行路由请求,交换机执行的匹配动作会在一定时间内增加。
其中NFlows为一个周期内流表项数量。
5)对流比(Percentage of Pair-Flow,PPF)
正常数据流目的是向系统请求资源,而攻击数据流是以攻击为目的向受害者发送单向数据流。
其中NPair为交互流对数。
6)流 表 匹 配 成 功 率(Match/Look up Ratio,MLR)
DDoS攻击的形式决定了攻击发生时请求交换机转发的随机数据包会与交换机流表项不匹配。因此可通过MLR进行攻击检测。
其中Nmatcℎ为成功匹配数目,Ntookup为流表项总匹配数目。
7)目的端 口增速(Destination Port Growing Speed,DPGS)
在正常网络中,目的端口增速相对稳定。当DDoS攻击发生时目的端口增速会明显增大。
其中NDstPort为一个采样周期中目的端口数。
算法1:Relief权重计算
输入:带有类别标记的原始数据集T
1.根据数据标签对原始样本分类,其中D1 为攻击样本,D2为正常样本;
2.对D1、D2进行归一化处理;
3.置零所有特征权重w,置零特征权重集合X,设置迭代次数m,样本维度N,特征权重阈值∂;
4.FOR i=1 to m do
4.1 从总样本中随机不放回抽取样本R
4.2 在同类样本中寻找欧氏距离最近的样本H,在不同类样本中寻找欧式距离最近样本M;
4.3 FORj=1 toNdo
4.4 FOR A=1 toNdo
4.5 IFW(j)≥∂
将第j个特征添加到T中
4.6 End FOR
4.7 End FOR
5.End FOR
输出:每个特征值的特征权重集合X
如算法1,本文通过Relief 算法来度量攻击特征和数据包是否为异常两类别之间的相关性。设样本空间S={s1,s2,s3…sn} 中每个样本包含m 个特征,其中Si={si1,si2,si3…sim} ,1 ≤i≤n,特征值分为离散型和连续型;Si的类别为ci∊C,C={c1,c2}为样本的类别集合。对于两个样本Si和Sj(1 ≤i≠j≤n)在特征t(1 ≤t≤m)上的差值定义如下:
(1)特征t为离散型属性:
(2)特征t为连续型属性:
3.3 XGBoost分类检测
由于网络流量特征在正常状态与攻击状态下呈现不同特性,因此可将攻击检测问题看作一种特征分类问题。检测的流程为:对收集到的数据提取特征,并对样本标记正常或异常。本文采用XGBoost 算法依据特征样本序列构建检测模型,并利用该模型对样本中未经标记的数据进行分类检测。
算法2:贪心算法提取分割点算法
输入:I,instance set of current node
输入:d,feature dimension
1.gain←0
2.
3.FORk=1 to m do
4.GL←0
5.FOR j in sorted (I,by Xjk) do
6.GL←GL+gj
7.End FOR
8.GL←GL+gj
9.GR←G-GL
10.score←max(score,GL+GR-G)
11.End FOR
输出:Split with max score
XGBoost算法的目标函数定义如下:
目标函数式(10)由L(θ)与Ω(θ)两部分组成。其中表示可微损失函数,即预测值与目标值的误差,表明数据与模型的拟合程度,一般有均方损失函数和逻辑回归损失函数两种形式;是一个正则化项,用于反映模型的复杂程度,其中T 代表所构建树的叶子节点数,γ表示学习率,γ∊(0,1),T与γ的乘积为生成树的修剪参数。XGBoost算法为防止过拟合添加了正则化参数,其中w为叶子的权重,当被设为零时,XGBoost算法退化成传统的梯度提升树算法。
本文使用式(11)来优化目标函数(10):
通过式(11)构建树结构,使目标函数(10)在每次迭代中误差最小。此树结构于前棵树的结论和残差中学习,以适合当前的残差回归树,其中St(Ti)表示实例i在t次迭代中生成的树。
式(11)在求解平均损失函数的过程中可获得最优解,但在损失函数非二次函数的情况下无法计算其他函数的平方误差。因此,式(11)利用二阶泰勒展开式展开成二阶函数求解,得到式(12)。
最后,通过贪心算法迭代找到每棵树的最佳分割点,最小化目标函数,如算法2 所示。在算法2中,j是遍历该排序的所有特征值的索引,k定义遍历所有样本的次数。
3.4 基于BF的即时防御
为应对实时检测出的攻击数据包,依据已检测出的攻击源信息,通过在数据平面使用P4 将其映射为一个BF,实现对后续同类数据包的快速识别;与此同步,修改数据平面流表匹配操作,制定数据包丢弃策略,即时防御同一攻击源的数据包。
3.4.1 防御策略
本节在数据平面以P4 实现具有5 个哈希函数的BF。针对3.2节中检测到的异常数据包,通过记录其数据包的信息srcAddr,dstAddr,srcPort,dstPort,pro,构成基于数据包的交换机流表ID,Ta,Tname,Action,其中:S为IPsrc,IPdst,P,p;P为相应协议,具体包括IP,TCP,UDP,ARP;p为转发的端口号,见表1。基于上述信息,将异常数据包信息以哈希值的形式存入BF 数组中,同时修改流表匹配操作,以此实现对后续来自于同一攻击源数据包的防御。
表1 特征数据包元组
具体地,本文中使用的BF 是一个32bit 位的数组,采用5 个ℎi(i=1,2,3,4,5)由crc16 与crc32[13]以及相互组合构成的哈希函数。在此基础上,首先定义寄存器阵列位置(reg_pos_o,reg_pos_t,reg_pos_tℎ,reg_pos_f,reg_pos_fi),(reg_val_o,reg_val_t,reg_val_tℎ,reg_val_f,reg_val_fi)为其对应的取值;然后,将检测得到的异常数据包信息ip1,ip2,port1,port2,pro以数组的方式计算其哈希值,并映射到32 位初始值全为0 的bit数组中,ℎi映射的位置都将被设置为1,对应位数值保存至对应寄存器位变量处,如图3所示。
图3 哈希函数映射图
通过在数据平面解析器处定义有限状态机的方式解析数据包,根据不同的状态解析数据包包头。解析器通过有限状态机的方式判别ethernet,ipv4,tcp状态的有效性。待状态机工作完成则使用ℎi(i=1,2,3,4,5)以数据包的srcAddr,dstAddr,srcPortdstPort,pro信息进行5 次哈希运算,并根据具体映射得到的bit位置读取其在BF 中(reg_val_o,reg_val_t,reg_val_tℎ,reg_val_f,reg_val_fi)的值。若其值都为1,则可判定该数据包与BF 中的攻击数据包同源,从而在数据平面按照设定的处理策略予以丢弃,实现对攻击的即时防御。
3.4.2 性能分析
BF 在进行匹配防御时,由于其数据结构自身的特性,存在一定的假阳性率。在本文中,假定kn 由此可以推得,其假阳性率为式(14): 图4给出BF-h5在不同数据规模的假阳性率。 图4 BF-h5在不同数据规模下假阳性率 实验平台为Mininet,控制平面采用支持P4 的ONOS 控制器,该控制器支持P4runtime 南向协议;数据平面是由多个支持P4的Bmv2交换机组成。 实验样本采用加拿大网络安全研究所(CIC)的CICDDoS2019 公开网络流量数据集,下载地址为https://www.unb.ca/cic/datasets/ddos-2019[14]。该数据集包含了为期一周的网络流量,其中周一为正常流量;周三为各种形式的DDoS攻击流量。其中,每条记录都包含了时间戳、源IP 地址和目的IP 地址等完整的数据包信息,以pcap 格式保存。DDoS 攻击样本采用CIC DrDoS_NTP 数据集。通过设置不同的采样周期提取相应信息,最后整理成对应的流表项信息。正常样本与异常样本分布如表2所示。 表2 正常样本与异常样本数据集分布(单位:个) 根据本文所提攻击特征项,首先将不同样本类型的数据进行信息提取,形成两种类型的特征;然后通过Relief 算法对特征进行权重排序,选取特征权重高的6 个特征项;最后使用XGBoost 算法分类器对正常与异常特征子集进行相应的训练与测试。 4.2.1 Relief特征权重实验结果 通过对7个与攻击有关的特征项进行Relief权重计算,得出特征项权重见表3。根据特征权重排序结果,源端口增速与目的端口增速权重相近。考虑到DDoS 攻击对目标主机进行攻击时,攻击者使用多端口对目的主机进行攻击的效果更好,因此在“目的端口增速”与“源端口增速”中选择目的端口增速作为特征指标之一。对流比权重最小,但是考虑到在攻击发生初期,SDN交换机会对该数据包进行正常的流表匹配与应答处理,因此会导致该特征的权重较小的偶然结果,为避免偶然性,因此选取该特征作为特征指标之一。最终选取6 个特征项作为本实验的分类特征,见表3。 表3 特征权重表 4.2.2 XGBoost分类器检测结果与分析 利用XGBoost 算法构建算法分类器,并将检测结果与Random Forest[15]、SVM[16]以及GBDT[17]从检测准确率(Detect Accuracy Rate,DAR)(式(15))、假阳性率(False Acceptance Rate,FAR)(式(16)),以及检测时间3个指标进行了比较。表4给出了各算法分类器整体的性能。 表4 各算法性能比较 从图5 可以看出,与其他三种机器学习算法相比,在准确率方面,本文提出的RT-XB 方法效果明显,准确率逐步提升,最终取得接近99%的准确率。 图5 不同数据规模下的准确率比较 图6 显示,在假阳性率方面,RT-XB 方法相较于其他三种机器学习算法,在不同的数据集规模的情况下,取得最低的假阳性率,且持续下降。 图6 不同数据规模下的假阳性率比较 图7 显示,随着数据集规模的扩大,各算法检测时间随之增长,本文提出的RT-XB 方法优势更加明显。因此,综合三个指标,RT-XB 方法在SDN网络中对DDoS攻击具有较好的检测效果。 图7 不同数据规模下的检测时间比较 在SDN 仿真实验平台上,模拟正常网络流量,并利用Hping3 工具模拟攻击流量,以此测试在RT-XB 方法防御前后数据流量的变化情况。如图8所示。 图8 Bloom Filter防御效果 图8 显示,在正常状态下网络流量基本呈现稳定态势,波动不大。当不使用RT-XB 方法时,在第20s 时发动攻击后,攻击流量成倍增加,约60s 时攻击流量达到顶峰并相对稳定。当使用RT-XB 方法时,RT-XB 方法在攻击发生约4s后即启动,并根据定义的流表策略实现对攻击流量的防御,其后网络中的流量较攻击发生时流量逐步减少,并最终趋于稳定。 本文针对SDN 网络中的DDoS 攻击问题,设计并实现了一种能够实时检测与即时防御的RT-XB方法。与现有DDoS 攻击检测方法相比,该方法充分整合了SDN与机器学习的优点。实验结果显示,与现有同类方法相比,RT-XB 不仅实时检测效率高,假阳性率可控,而且即时防御功能较强。4 实验与有效性评价
4.1 实验数据集
4.2 实验结果与分析
4.3 防御结果
5 结语