SDN 环境下基于目的IP 地址熵的DDoS 攻击检测与易损机制研究
2020-07-19杨志,韩俐
杨 志,韩 俐
(天津理工大学 计算机科学与工程学院,天津300384)
SDN 是一种新型的网络架构,通常由应用层、控制器和转发层构成,逻辑集中的控制器与转发层分离[1-2].这种集中控制的架构模式为网络运营人员的管理带来方便的同时,也为网络安全造成了隐患,控制器受到攻击时,会影响整个网络的运行.与传统的DDoS 攻击类似,SDN 网络中的攻击者通常也是通过控制多个僵尸网络,利用伪造源地址隐藏身份、向目标主机发送大量无效数据,达到占用被攻击者服务,消耗目标网络资源的目的.不同的是,攻击者向SDN 网络发送攻击数据包时,OpenFlow 交换机通过查询流表发现无法进行匹配,于是向控制器发送PACKET_IN消息请求.DDoS 攻击产生时,大量PACKET_IN 消息阻塞了控制器与交换机的通信,导致正常数据包无法转发,造成了拒绝服务的攻击[4].
熵是反映集合中数据离散程度的变量,本质为表示随即变量不确定的度量,是对所有可能发生的事件产生的信息量的期望[5].当网络中的某一特定IP地址受到DDoS 攻击时,整个网络中的数据流量过于集中于某一个IP,从而导致了网络整体中的随机性下降,熵值降低.因此,通过熵值的降低可以用于检测网络中是否存在DDoS 攻击.
在参考文献[6]中,作者选用了基于源IP 地址信誉的缓解办法,但在现实场景中,DDoS 攻击的发起者通常会控制大量的傀儡主机,从而导致源IP 地址不可查,大量的源IP 地址也会给控制器增加较大的负担. 据此提出易损目的IP 地址的评判机制,在缓解DDoS 攻击方面达到了较低的丢包率,同时能够有效降低控制器的负载.该技术由基于目的IP 地址的熵值检测模块与易损机制评判模块组成.通过检测目的IP 地址熵值的变化,判断是否有DDoS 攻击存在,将检测出受到攻击的目的IP 地址统计到易损目的IP 地址表中,进行易损评判,根据易损值的大小,决定保持该目的IP 地址的通信或关闭该目的IP 地址对应的端口.
1 相关工作
随着网络技术的发展,SDN 作为一种新型的网络架构体系,受到了学术界和工业界的青睐. 但SDN在DDoS 攻击检测与缓解方面仍面临一些问题.
R.Braga 等通过利用自组织网络进提出了一种基于流量特性的轻量级DDoS 攻击检测方法,通过使用自组织映射网络进行流量分析,获得了较高的检测率和较低的误报率.但是该方法仅适用于较低速率下的DDoS 攻击,当攻击速率较高时,不能达到较好的检测率.Jie Cui 等[8]通过提出一种基于双地址熵认知启发计算的DDoS 攻击检测与防御模型,将提取出的流表特征,结合支持向量机分类算法,该模型可以在DDoS 攻击的初期实现实时检测和防御,并能及时恢复正常通信.但是该方法只能针对于单个主机受到DDoS 攻击时的检测,应用到多个主机或者整个SDN 网络时,对控制器的负载增加较大,并不能得到较高的检测率.刘振鹏等[9]提出了一种SDN 环境下基于广义信息熵和GA-RBFNN 的DDoS 攻击检测方法,利用熵检测流量,根据划分的阈值把检测结果分为正常、异常和攻击,对于异常流量,利用GARBFNN 来检测是否发生DDoS 攻击.这种检测方法主要应用于数据平面的DDoS 攻击检测,对于针对控制器的攻击并不能进行有效的检测,并缺乏相应的恢复机制.肖甫等[10]提出一种在SDN 环境下基于KNN算法的模块化DDoS 攻击检测方法,该方法选取SDN网络的5 个关键流量特征,采用优化的KNN 算法对选取的流量特征进行流量异常检测.该算法在DDoS攻击初期可以有效检测出攻击的存在,但是在应对持续大规模DDoS 攻击时,所选取的特征值并不能有效检测出DDoS 攻击的存在.桂兵祥等[11]提出了一种基于全局信息熵背离度的协作探测方法和IP 回溯跟踪算法,获得了比香农熵更高灵敏度的实验结果,并能进行IP 回溯跟踪所有攻击源直到其所在的局域网络.但该方法的算法复杂度相对较高,一定程度上增加了网络的负载,并且对于伪造源IP 地址的DDoS 攻击,并不能进行有效溯源.
现有的DDoS 检测方法大多基于机器学习与神经网络,检测前需要经过大量的样本训练检测模型,特定的检测模型通常只能应用于单一固定的网络中,这一点与SDN 网络的灵活性相冲突.
梅梦喆等[12]通过多维条件熵检测算法进行DDoS攻击的检测,提出可溯源攻击路径算法,对接近攻击源的边缘交换机进行过滤处理,达到缓解DDoS 攻击的目的. 但在伪造源IP 地址的攻击中,寻找攻击路径树会存在较高的误报率,针对此建立的黑白名单也会比较庞大,在查找过程中会浪费较多系统资源.陈超等[13]通过监控受害者的流表,查找攻击者IP地址,并对此进行下发流表项的阻塞操作,但这种方法仅适用于攻击者数目较少的情况,当受害主机遭受大规模DDoS 攻击时,仅能检测出网段范围,并会对网络中的正常通信造成影响.田俊峰等[14]通过收集用户在路由器中的信息,建立用户信誉值防御的模型,路由器根据用户信誉值防御模型将恶意用户过滤掉,并按照信誉值大小排列访问的优先级.这种方法对边界路由器的安全性要求比较高,而且没有考虑到恶意用户使用伪造的源IP 地址来发动攻击的情况.许传丰等[15]通过提出判断网络中用户是否存在背叛策略,对没有采取背叛策略的主机进行奖励,并基于信誉值进行资源分配,提高了在受到DDoS 攻击时整个网络的资源分配率,但是这种协作式DDoS 防御技术只能应对与正常流量大小差距不是特别大的攻击,对于急剧增加的DDoS 流量应对能力较差.
针对以上文章中提出的方法与不足,本文提出一种SDN 环境下基于目的IP 地址熵变化的DDoS 攻击检测与易损机制研究方法,通过信息熵的变化进行DDoS 攻击检测,并对检测结果进行易损机制评判,以达到在下一次攻击发生的初期及时发现受损主机的目的.
2 基于信息熵的DDoS 攻击检测与易损机制设计
2.1 系统整体架构
本系统主要架构如图1 所示,主要由信息熵检测模块、易损机制评判模块和攻击缓解模块组成.OpenFlow 交换机收到不能匹配流表的报文后,发送PACKET_IN 消息给控制器,控制器中信息熵检测模块接收到PACKET_IN 消息后,判断SDN 网络是否受到DDoS 攻击.受到攻击时,将受攻击目的IP 地址信息发送给易损机制评判模块,攻击缓解模块根据目的IP 地址易损值大小,下发相应的缓解策略,达到防御DDoS 攻击的目的.
图1 系统整体框架Fig.1 System Overall Framework
2.2 信息熵的应用
信息熵是由香农于1948 年提出的反映对产生的信息量的期望,可以通过信息熵判断一个系统的复杂程度,如果一个系统越复杂,出现不同情况的种类越多,那么它的信息熵是比较大的.反之,一个系统越简单,出现的情况种类很少,那么此时的信息熵较小.
设属性X的特征值表示为N(N个不同的数据),X={ni,i=1,2,3,…,N}表示在数据的统计过程中特征值i出现了ni次.表示特征值出现的总次数.通过公式(1)和公式(2)计算属性X的熵:
当所有元素出现的概率相等时,熵将达到最大值.如果pi等于0 或1,此时熵值为0.当网络中流量正常,所有主机以均等的概率接收数据包,则整个网络的熵值将处在一个较高的水平上.而当DDoS 攻击发生时,某一个或者几个主机收到大量的攻击数据包,会导致熵值的迅速降低.可以利用熵值的变换来检测网络是否处于一个较为稳定的状态.
使用信息熵的变化来进行DDoS 攻击检测,需要确定两个基本条件:窗口大小与阈值.窗口大小的选择通常有两种方法,一种是基于时间窗口,一种是基于数据包的数量[16].由于DDoS 攻击通常会在短时间内产生大量的数据包,当基于时间的窗口选择较大的时候,不能及时发现攻击,会导致检测不及时而造成网络受到攻击较为严重,基于时间的窗口较小时,正常流量的过程中会加剧控制器的负担,从而影响SDN 整体网络的工作效率.综上原因,选择了基于数据包数量的窗口值[17].阈值选取通过测定正常流量的熵值变化与低速率攻击中阈值的变化,确定合适的阈值,保证检测率达到较高水平,同时误警率较低.
同时,为了避免网络中的正常流量集中于某一目的IP 地址而导致误警率升高,将连续五个窗口的目的IP 熵值低于阈值的情况判断为网络正在遭受DDoS 攻击.
2.3 易损目的IP 地址的评判机制算法
2.3.1 评判机制流程
根据参考文献[6,12-14],本文提出了易损机制的概念.易损机制是通过对受到攻击的目的IP 地址进行判断,综合以往该目的IP 地址在网络中的行为方式,根据其在正常网络流量和异常网络流量中出现的次数与频率,判断其是否容易受到攻击.在大规模流量进入网络时,通过计算目的IP 地址的易损值,优先选择易损值较低的目的IP 地址进行连接.对于易损值越高的目的IP 地址,当大规模流量进入网络时,控制器选择屏蔽该目的IP 地址的转发,从而过滤掉异常网络流量,达到缓解DDoS 攻击的目的.
易损机制的流程图如图2 所示:
2.3.2 评判机制算法
根据2.3.1 节介绍的易损目的IP 地址的评判机制,首先建立一个易损目的IP 地址存储表. 通过统计每一个窗口内收到数据包数量最多的目的IP 地址,并将该IP 地址存储在该表内.
当目的IP 地址的信息熵出现突然下降,低于阈值的情况,说明该网络正在受到DDoS 攻击,将此时出现次数最多的目的IP 地址统计在被攻击目的IP地址列表中.
为了保证网络流量的顺利转发,同时建立易损目的IP 的缓解机制. 通过一定的奖励机制,连续五个窗口内,如果该目的IP 地址没有受到攻击,则相应降低其易损值.
在参考文献[6]中源地址信誉评判算法的基础上,综合考虑目的IP 地址在窗口内出现的次数与每次出现的时间间隔,通过不同的权重值将数据归一化,二者相加共同影响易损值的大小.在上一个窗口易损值大小的基础上,通过设定恢复系数,保证连续窗口内未再次受到攻击的IP 地址易损值降低.易损目的IP 地址的评判机制使用公式(3):
图2 易损机制流程图Fig.2 Vulnerability mechanism flow chart
其中V(i)为目的IP 地址的易损值,易损值越高,受到攻击的风险越大;LI为上一窗口计算出的该目的IP 地址易损值;ni为该目的IP 地址在该窗口内出现的次数,出现次数越多,易损程度越高;T为该目的IP 地址出现的平均时间间隔,平均时间间隔越低,易损程度越高;K1、K2分别为不同的权重系数:K3为恢复系数,用于每五个窗口计算完成后,降低其易损值.
如上述伪代码所示,易损目的IP 地址的评判机制具体的流程为,首先建立易损目的IP 地址存储表和受攻击目的IP 地址表,每当接收数据包的数量到达窗口值时,根据2.2 中基于熵的DDoS 检测算法,计算目的IP 地址的熵值,如果目的IP 地址的熵值低于阈值,统计出现次数最多的目的IP 地址添加到受攻击目的IP 地址表Sa 中,否则,统计出现次数最多的目的IP 地址添加到易损目的IP 地址存储表Sv中.对比易损目的IP 地址存储表Sv 和受攻击目的IP 地址表Sa,如果被攻击的目的IP 地址不在易损目的IP 地址存储表Sv 中,表明该目的IP 地址在该网络中并非承担大规模的网络服务功能,直接关闭此目的IP 地址对应的端口,否则通过公式计算该目的IP 地址的易损值,如果得出的计算结果大于设定的阈值,则关闭此目的IP 地址对应的端口,否则保持该目的IP 地址的通信.
3 实验与结果分析
3.1 实验环境
本次实验在8GB 内存、Intel Xeon CPU 的Ubuntu 16.04 操作系统的计算机上进行.使用Mininet 仿真软件建立实验拓扑,Mininet 是SDN 网络实验中通常选择的网络仿真平台[18],可以模拟真实网络环境的运营与架构,并可以将开发代码迁移应用到真实网络中来. 使用了基于Python 实现的POX 控制器作为SDN 网络的核心控制器,POX 是在NOX 的基础上开发的控制器,具有高吞吐量和低延时性. 使用支持OpenFlow 协议的Open vSwitch 交换机作为网络交换机.实验中通过Scapy 工具进行发包测试,Scapy 发包工具可以很好的实现数据包的生成并发送,达到模拟真实网络流量的效果.搭建一个如图3 所示的深度为2 的树形仿真实验网络,该网络中包括1 个核心POX 控制器、9 个交换机和64 个主机.
图3 仿真实验网络拓扑图Fig.3 Network topology diagram of simulation experiment
3.2 熵值检测结果
3.2.1 窗口值大小确定
在控制器页面很容易控制窗口值的大小,这也是SDN 的优势.在确定基于数据包数量的窗口值大小的过程中,初步选取了窗口大小分别为20,50,100,200 的情况下进行了测试,测试结果如表1.
表1 不同窗口值下测试的熵值Tab.1 Entropy values of tests under different window values
在窗口值大小为20 的检测过程中,因为正常流量与攻击流量熵的差值较小,并且攻击流量中数据包的数量比较少,检测过程中出现误警率的几率比较高.虽然窗口值为200 的检测过程中熵值的差距较大,但是当连续五个窗口的熵值低于阈值时,网络已经受到了较长时间的DDoS 攻击,与在DDoS 攻击早期检测出攻击存在的想法相冲突.窗口值为50 与100 的检测方法均可以较好的满足实验要求,考虑到在SDN 网络中,一旦建立了链接,数据包通过查找流表进行转发工作,除非有新的转发请求,否则不再经过控制器,实验网络中主机数量少于100 台,所以选择了窗口值为50 的检测方法.
3.2.2 确定阈值
在阈值选取过程中,通过检测网络在正常运行时的熵值变化范围与低速率攻击中阈值的变化,得出表2.
表2 正常流量与攻击流量下阈值变化Tab.2 Threshold changes under normal traffic and attack traffic
由表中的数据可以得出,正常流量下熵的最小值与均值的差值为0.118,占最小值的百分比为11.2%,在最小值的基础上向下取11.2%的置信区间,得出熵的阈值为0.937.检测到的25%速率下的攻击流量熵的最大值低于该阈值,因此符合阈值的确立.
3.3.3 信息熵检测结果
通过实验先后模拟了正常流量下、25%攻击速率下、50%攻击速率下的攻击检测结果,由图5、图6可以看出,在第25 个窗口处,分别对该SDN 网络发送25%与50%的攻击流量,此时检测到网络中的熵值急速下降,经过五个窗口的熵值低于阈值的情况后,该机制封闭了受到攻击的主机端口,整个网络的熵值恢复到正常水平.综上可以得出结论,该检测机制能够在DDoS 攻击的前五个窗口识别出攻击流量,并对特定的端口进行封闭,保证网络流量的熵值能够回复到正常水平,从而保证了网络的正常通信.
3.3 检测率与误报结果分析
在上述实验环境下,进行了50 次25%攻击速率下的发包测试,基于这50 次模拟进行该系统的成功率测试,共有两次实验结果与预期分析有偏差,其中包含一次正常流量的误报与一次DDoS 攻击的漏检.基于上述实验可以得出结论,该系统的检测率为98%,误警率为2%.同时进行了50%攻击流量和75%攻击流量的检测,均及时检测出了DDoS 攻击.
图4 正常流量下信息熵变化Fig.4 Information entropy change under normal flow
图5 25%攻击速率下信息熵变化Fig.5 Information entropy change at 25%attack rate
图6 50%攻击速率下信息熵变化Fig.6 Change of information entropy at 50%attack rate
3.4 易损主机的恢复分析
在上述实验环境下,将主机h64(IP 地址为10.0.0.64)作为被攻击主机,在第15 个窗口处对该SDN 网络进行DDoS 攻击,通过检测这两台主机在受到DDoS 攻击时,控制器是否屏蔽该目的IP 地址,并能够在停止攻击后一段时间内主动恢复其通信,作为易损主机评判机制的检测方法[19].
在实验过程中测试网络的丢包率,实验结果如图7 所示.受到攻击时,检测到网络的整体丢包率在3%左右,效果优于使用源IP 地址信誉的缓解方法.而在未部署缓解方法的网络中,受到攻击后丢包率激增,从第20 个窗口开始,丢包率趋近于100%.此项实验表明,易损主机的恢复机制检测到了网络中的DDoS 攻击,并进行了有效缓解,降低了网络中的丢包率.
图7 不同缓解机制下丢包率比较Fig.7 Comparison of packet loss rates under different mitigation mechanisms
4 结 论
本文将信息熵与易损主机的评判机制结合,利用信息熵的降低来检测针对某一个或者多个目的IP地址的DDoS 攻击,在控制器中添加检测模块,能在DDoS 攻击的前期及时发现攻击,并及时对受到攻击的主机进行端口封闭处理.通过易损主机的评判机制,能够对网络中潜在的、易受DDoS 攻击的目的IP地址做出风险预测,在DDoS 攻击前期对容易受到攻击的目的IP 地址进行防范处理,减少了DDoS 攻击对网络造成的影响.该方法在Mininet 仿真实验网络中得到验证.在后续工作中,我们将会进一步将此方法应用部署到真实的网络环境中,并验证其有效性.