刘向举,刘鹏程,路小宝,徐 辉,朱晓娟
(安徽理工大学 计算机科学与工程学院,安徽 淮南 232001)
物联网技术的高速发展所带来的不只是更加便利的生产与生活方式,也会带来一些严峻的安全挑战,例如非法入侵、控制物联网感知层设备,进而发动分布式拒绝服务(distribute denial of service,DDoS)攻击是日益严峻的安全威胁之一,严重影响网络的数据正常转发与服务质量[1,2]。如何检测和防御物联网中的DDoS攻击,成为近年来研究的热门话题。一直以来由于传统物联网架构的局限性及物联网设备自身的资源、能量有限,导致防御的研究重点仍放在如何使防御算法更加轻量化上,但轻量化的算法无法很好应对物联网所面临的DDoS攻击。由此,众多学者将研究重点转向改变传统物联网架构上。软件定义物联网(software defined internet of things,SD-IoT)是一种新型的物联网架构,它是软件定义网络(software defined networking,SDN)与传统物联网相结合而形成[3-5],将SDN的集中管控能力、数据传输与控制分离和流表下发的运行模式[6]引入到传统物联网中。与物联网环境下的DDoS攻击有所不同的是,在SD-IoT中,DDoS攻击不但消耗受害设备的计算和存储资源,还会占用大量网络带宽,阻塞南向接口中带宽本就有限的安全通道,造成控制器的网络的管理能力与性能大幅下降。
由此本文根据SD-IoT运行模式的优势,利用SD-IoT的流表下发与集中控制的特性,提出将DDoS攻击防御方法放置在SD-IoT控制器内,以实现在SD-IoT中防御DDoS攻击。
在国内外防御传统物联网中的DDoS攻击的相关研究中:Muhammad等[7]提出了一个利用动态种群过程和点过程理论的模型,捕获网络上的恶意软件的渗透与协调过程,分析无线物联网中恶意软件在设备之间的传播特征。王睿[8]提出了一种由选举出的聚合节点收集邻域内其它节点的本地信任值、表现信任值与通信信任值的轻量级本地信任评估机制,根据计算得出的综合信任值,进行节点行为的判断,但是检测结果容易受到恶意节点的干扰。
从上面的研究可看出,在物联网架构不改变的前提下,防御DDoS攻击的途径多以研究轻量化、低功耗的算法来实现,所以有专家学者将SDN的运行模式与物联网相融合,在SDN环境中的攻击防御相关研究中:Jie Cui等[9]提出一种SDN下的DDoS攻击检测与防御机制,该机制建立了基于支持向量机(support vector machine,SVM)的、对攻击实时检测与防御的模型。Marcos等[10]通过使用博弈论方法,在控制器中对DDoS攻击进行缓解,实现快速防御。姜文醍等[11]在SDN环境中利用可调节的φ-熵增大不同特征的差异,从交换机的流表中提取出多维特征后对样本训练分类,实现DDoS攻击的检测。王杨俊杰等[12]通过统计SDN网络中packet_in报文的上传增长率,并结合卡方分布检测算法筛选攻击源后,下发新的流表封禁端口。陶蒙恩[13]通过自适应的将被攻击的交换机中的流量调度到相邻交换机中,使受害者交换机与相邻的交换机发送packet_in 报文的速率达到平衡,实现自适应流量调度防御。曾荣飞等[14]在SDN环境中实现了基于改进自组织映射(self organizing map,SOM)算法与多维条件熵的两段式防御机制,通过调整防火墙优先级过滤攻击流量,当改进的SOM算法遇到无法判断类型的报文时,会根据多维条件熵计算结果增加新的聚类中心。该算法虽然有效,但算法效率较低,当算法无法判断报文类型时,需要比较阈值和多维条件熵,并且阈值不能随网络状态动态调整。以上研究实现攻击防御大多是通过检测网络流量特征是否异常并启动防御措施,或是利用流量调度算法将攻击流量分流实现攻击防御,但是这些研究不适合SD-IoT环境,并且没有从源头解决如何防御DDoS的问题。
针对以上研究的不足之处,本文提出一种高效的、适用于SD-IoT的DDoS攻击防御方法:信任模型-自组织映射防御(trust model-self organizing map defender,TSD)。该方法能够较好溯源DDoS攻击节点并在不影响网络正常运行的同时有效防御DDoS攻击。
本文所提出的TSD方法由攻击检测、攻击溯源与攻击防御3个模块构成,并且以上3个模块全部放置在SD-IoT控制器中,如图1所示。其中攻击检测模块作为溯源的触发机制,负责实时监控交换机提交给SD-IoT控制器的流表信息,以检测网络内是否有DDoS攻击发生。攻击检测模块使用在前期工作中完成的均分取值区间长度-K均值(equal length of value range K-means,ELVR-Kmeans)算法[15]来检测是否有DDoS攻击发生。本文主要介绍溯源及防御模块。
图1 基于SD-IoT的DDoS攻击溯源防御架构
追根溯源是防御DDoS攻击最有效的方式,若要截断受害者和攻击发动节点之间的通信链路,通常需要得到攻击节点的IP地址或者是Mac地址。但是攻击节点的IP地址往往是伪造的,无法通过IP地址发现真正的攻击节点,而Mac地址是固定不变的,所以通过Mac地址可以准确定位攻击节点,根据拓扑信息实施防御策略。因此本文所提出的基于信任模型-自组织映射(trust model-self organizing map,T-SOM)算法的DDoS攻击溯源方法是通过定位攻击节点Mac地址实现攻击溯源。溯源方法分为:packet_in报文与流表信息收集、节点流量特征提取和DDoS攻击溯源3个步骤。
2.1.1 Packet_in报文与流表信息收集
当检测到网络中有DDoS攻击发生时,首先记录下当前的时间点t,并且收集该时刻内来自交换机提交的packet_in消息和流表信息,并将相关信息存入数据库中,例如,packet_in报文中封装的源、目的IP、源Mac地址、协议类型、报文长度、报文种类等。
2.1.2 节点流量特征提取
本文选择的节点流量特征,分为节点发送报文的数量特征和节点发送报文的熵值特征两类,如下所示:
(1)节点发送报文的数量特征,当网络内有节点发动DDoS攻击时,会产生大量具有随机源IP地址的报文,使报文总数与packet_in报文总数会急剧上升,此时,packet_out总数可以很好体现出控制器当前处理packet_in报文的性能压力,所以将packet_out数目作为特征之一可以提高溯源的准确度,具体如下:
1)节点i在Δt内的平均发送报文长度LAVGi(Δt)
(1)
其中,Δt是时间间隔,n为Δt内节点i发送的数据包总数。
2)节点i在Δt内发送报文的总量:NUMi(Δt)。
3)节点i在Δt内发送报文的packet_in报文个数:PINi(Δt)。
4)节点i在Δt内发送报文的packet_out报文个数:PONi(Δt)。
(2)节点发送流量的熵值特征:时间间隔Δt内交换机提交的与流表项匹配失败的数据包源、目的IP地址和协议类型的熵值变化,是判断节点所发送的流量是否为攻击流量的重要依据。所以选择Δt内,控制器接收到交换机提交的节点i发送流量中的源、目的IP地址、协议类型3个属性的香农熵作为节点流量特征。具体计算如式(2)~式(4)所示:
1)源IP地址熵SH
(2)
2)目的IP地址熵DH
(3)
3)协议类型熵PH
(4)
2.1.3 基于T-SOM算法的DDoS攻击溯源方法
在SD-IoT环境中,节点所发送的流量类型较多,会存在几种流量类型与攻击流量相似度接近,如果使用SOM算法[16]根据2.1.2节所提取的节点流量特征进行溯源,有可能导致将正常节点判定为攻击节点的情况发生。由此,为了增加节点发送流量的差异性,本文将信任模型与SOM算法相结合。信任模型可以评估Δt时间内,网络中的节点行为的最大可能性,消耗更少资源的同时,增大不同节点发送流量的特征之间的差别,可以提高非攻击节点信任值,而降低DDoS攻击节点的信任值(见表1),因此提出了T-SOM算法。
表1 不同节点的信任值表现
基于T-SOM算法的DDoS攻击溯源方法,通过聚类提取到的节点发送流量的7种特征,实现攻击源的追溯,过程如下:
(2)节点流量特征输入,输入2.1.2节中所提取的节点i,i=1,2,…,m发送流量的7种特征
ni=[SH,DH,PH,LAVG,NUM,PIN,PON]
(3)信任值计算:利用(2)中的节点流量特征,从中选取t时刻节点i发送的报文数量NUM、packet_in报文量PIN和源IP熵SH这3个参数计算节点的信任值,由发送、表现行为信任值二者计算得出节点信任值,过程如下:
1)发送信任计算
基于Bayes的信任模型其自身的轻量化减少了计算的复杂度,减轻了系统的压力,为了预测节点在未来行为的最大可能性,将Beta概率密度函数的期望E(Beta(p|x,y)) 作为发送信任值,发送信任的计算如式(5)所示
(5)
其中,xi(Δt)=NUMi(Δt)-PINi(Δt) 为控制器在Δt内收集节点i发送的非packet_in报文数量;yi(Δt)=PINi(Δt) 为packet_in报文数量。
2)表现行为计算
本文所规定的表现行为是指节点i在Δt内发送报文中的源IP地址的随机性,表现行为与随机性成反比,表现行为信任值越高,则源IP随机性越小,源IP熵值越低,反之表现行为信任值越低,则说明源IP地址随机性越大,源IP熵值越高。
BTi(Δt)为节点i在Δt内发送报文中的源IP的熵值SHi(Δt)+1的倒数,为了避免式(6)中分母为0的情况,将SHi(Δt)向上取整后加1
(6)
3)计算节点信任值
节点i的信任值Ti(Δt)由节点i的表现信任值BTi(Δt)、节点i的发送信任值Ei(Δt)两部分构成,如式(7)所示
Ti(Δt)=Ei(Δt)×BTi(Δt)
(7)
各节点的信任值T作为新的特征加入到输入的节点流量特征ni中
ni=[SH,DH,PH,LAVG,NUM,PIN,PON]
(8)
计算竞争层中的所有权值向量与当前输入的样本之间的相似性,本文算法采用欧氏距离作为相似性的评价标准,将与样本相似度最高的权值向量作为在竞争中取得优胜的节点,用j*标记
(9)
推导
从上面的推导中可知,两个单位向量点积最大,欧式距离最小,即
wij(t+1)=wij(t)+η(t,P)[ni-wij(t)]
(10)
式中:t为训练时间、η(t,P) 是t和邻域内第j个神经元与获胜神经元j’之间的拓扑距离的函数,该函数的一般规律为:t↑⟹η↓,P↑⟹η↓,η(t,P)=η(t)e-P。
算法描述如下:
输入:样本集N={n1,n2,…,ni};
ni=[SH,DH,PH,LAVG,NUM,PIN,PON],i=1,2,…,m。
过程:
(2)根据输入样本中的:SHi(Δt),NUMi(Δt),PINi(Δt) 计算节点信任值
信任值T作为新的特征,添加到输入的样本集N中。
(3)归一化处理输入的新样本集N,得到
(4)repeat
(5) fori=1,2,…,mdo
wij(t+1)=wij(t)+η(t,P)[ni-wij(t)]
(8) end for
(9)untilη(t)<ηmin
输出:聚类划分C={C1,C2,…,Ck}
为缓解攻击节点造成控制器处理packet_in报文的压力,本文提出的TSD方法的防御过程由端口封禁和packet_in报文过滤两个步骤组成。
(1)端口封禁:当防御方法收到2.1.3节溯源的结果后,利用网络拓扑和攻击节点的Mac地址,进而找出其通过端口P与交换机S通信,随后下发封禁端口P的流表项,使得交换机S丢弃从端口P接收到的所有消息,从源头上切断了攻击节点与整个网络的连接。由此交换机不会再因为收到匹配失败的报文而向控制器提交大量packet_in报文。
(2)过滤packet_in报文:由于DDoS攻击将产生大量具有虚假IP的数据包,交换机收到这些数据包后会以packet_in的方式提交给控制器,请求新的流表项以匹配这些数据包,在攻击开始到防御模块封禁端口的这段时间内,控制器仍然要响应大量packet_in消息,如果不对这些消息进行过滤,则会在响应这些packet_in消息上花费大量资源,并在处理完成后向网络内所有交换机下发封装在pac-ket_out内的新流表,造成报文数量居高不下,影响数据的正常转发,所以本文在防御方法中增加了过滤packet_in消息的步骤。
具体的防御过程描述如下:
输入:packet_in报文集合PI={pi1,pi2,…,pii}; 溯源得到的攻击节点mac地址集合Mac={mac1,mac2,…,mack}。
过程:
(1)根据控制器拥有的网络拓扑找出攻击节点所连接的交换机S={s1,s2,…,sn} 及其所连端口P={p1,p2,…,pm}。
(2)fori=1,2…n do
forj=1,2,…m do
ovs-ofctl add-flowsiin_port=pj, actions=drop
end for
end for
(3)计算PI与Mac集合的长度: Length(PI), Length(Mac)
(4) fori=1,2,…, Length(PI) do
fork=1,2,……, Length(Mac) do
ifpii.mac_address=mack
DROP(pii)
else
将pii加入集合PI’={pii’}
end if
end for
end for
输出: 过滤之后的packet_in报文集合:
PI’={pi1’,pi2’,…,pii’}
本节的主要内容分为:仿真实验环境的设置、溯源方法性能测试、防御方法性能和链路延时测试。首先单独测试溯源方法的性能是因为溯源结果直接影响到防御方法中的端口封禁操作,通过与相关溯源研究的对比,可以更好展现本文所提出的TSD方法的溯源能力。其次将整个防御实验拆分为3个部分,分别与该部分的相关研究对比测试,能够更好体现本文方法的性能。
本文使用运行在i5 CPU和20 GB RAM的PC上的VMware Workstation虚拟机,虚拟机内安装Ubuntu18.04LTS系统,SDN-WISE-CONTIKI和Mininet模拟SD-IoT环境,控制器选取开源控制器ONOS。网络中包含13台主机、6台OpenFlow交换机、8个软件定义传感网节点与2个Sink节点,网络拓扑如图2所示。使用经典的TFN2K工具发动DDoS攻击,使用Iperf3工具产生网络背景流量,同时测量相关的通信性能指标。
图2 实验拓扑
在溯源方法的仿真实验中,选择SYN-Flood、ICMP-Flood和UDP-Flood这3种较为常见的攻击手段发动DDoS。每次攻击测试持续时间为35 s,h1作为受害者节点,每组攻击节点的数量递增,攻击节点选择与溯源实验结果见表2。
溯源方法性能的评估使用F1分数(F1,F1 Score),如式(11)所示,因为F1分数可以找到精确率和召回率两者之间的平衡点,是在考虑精确率和召回率平衡的状态下达到二者最高值
(11)
由表2中的6组攻击节点分别在3种攻击手段下,测试溯源方法F1分数的结果可得到: SYN-Flood攻击方式下F1分数的平均值为98.80%;ICMP-Flood攻击方式下F1分数的平均值为97.24%;UDP-Flood攻击方式下F1分数的平均值为98.75%。
表2 攻击节点选择与溯源结果
比较本文提出的溯源方法与K-means算法、文献[11]中提出的基于φ-熵的K近邻(K Nearing Neighbor,KNN)算法和基于香农熵的SVM算法F1分数平均值,结果见表3。由表3可以看出K-means算法3种攻击方式下F1分数平均值为77.88%、基于香农熵的SVM算法F1分数的平均值为86.30%、基于φ-熵的KNN算法F1分数的平均值为96.20%,而本文所提出的溯源方法,在3种攻击方式下的F1分数平均值为98.27%,相较于基于φ-熵的KNN算法[11],F1分数在3种攻击方式下分别提升了2.2%、3.94%和0.05%,并且算法性能不会被攻击方式的变化所影响。
表3 平均F1分数/%
基于3.1节中的实验环境,对本文提出的TSD方法、基于卡方检验的防御方法[12]和无防御方法进行防御性能比较与结果分析。在h9中使用经典的DDoS工具TFN2K作为攻击节点,攻击流量的比例为1∶1∶1的SYN流量、ICMP流量与UDP流量,背景流量为h2与h13采用Iperf3工具产生,同时使用Iperf3监测网络的带宽变化状态和链路时间延迟。测试每次持续时间为50 s,DDoS攻击均在第10 s发动。
(1)防御实验结果分析
图3揭示了部署有本文方法与不部署任何防御方法的网络中的流量变化对比,在DDoS攻击发动后,在无防御方法的SD-IoT中,报文速率与在packet_in报文速率2 s内迅速上升,从发动攻击后至测试结束的40 s的时间内,报文速率始终远高于正常水平。由图中本文方法的报文总数和packet_in报文数折线可以看出,相同实验条件下,在攻击开始后,从第12 s至第16 s,每秒的报文总数与packet_in报文数迅速回落至正常水平,这是因为溯源方法很快找到DDoS攻击节点,并且防御方法根据攻击节点的Mac地址下发端口封禁流表项,隔离攻击节点。
图3 防御性能对比1
图4揭示了本文方法与基于卡方检验的方法[12]的防御性能比较,由图中的报文速率可以看出,基于卡方检验的防御方法[12]只封禁端口,在其防御机制启动后,报文速率依旧没有回归正常,因为控制器响应packet_in报文后需要广播大量的寻址消息,收到寻址应答后会将大量新流表项以packet_out消息的方式下发到OF交换机。而本文方法则考虑到了这个问题,在下发端口封禁流表项后,过滤控制器内收到的由交换机提交的包含伪造源IP的packet_in报文,所以由图中所示的本文方法的报文速率曲线得知,防御方法执行后,网络的报文速率大幅下降,2 s后下降到正常水平,packet_in报文速率也恢复正常。
图4 防御性能对比2
(2)链路延时结果分析
表4揭示了本文的防御方法与无防御、FloodDefender均匀调度算法、自适应调度算法[13]3种方法的链路延时对比情况。可以看出本文的防御方法的链路延时平均值为0.098 ms,好于FloodDefender算法的5.739 ms和自适应调度算法[13]的0.998 ms。不仅链路延时的平均值最小,最大值与和最小值也要少于其余的3种算法。
表4 链路时间延迟
本文对SD-IoT中如何防御DDoS的问题进行了研究,提出了TSD方法在SD-IoT中防御DDoS攻击。该方法使用基于T-SOM算法的DDoS攻击溯源方法,利用“节点流量特征”对网络内所有节点实现聚类操作,找出攻击节点,根据溯源结果,启动防御机制,封禁端口过滤packet_in报文,从而进行DDoS攻击防御。通过仿真实验检验本文提出的TSD方法防御DDoS攻击的效果,实验结果可以看出:TSD方法可以对DDoS攻击节点迅速准确溯源,在保证网络可用性与链路低延时的同时对DDoS攻击有效防御。由于本文所提出的TSD方法只适用于单控制器的SD-IoT环境,所以下一步计划研究如何在分布式的软件定义物联网环境实现对检测和防御DDoS攻击。