刘 涛 尹 胜
(西安科技大学通信与信息工程学院 陕西 西安 710054)
移动设备数量激增导致网络规模不断壮大,研究学者们提出软件定义网络(Software Define Network,SDN)解决方案缓解网络压力[1]。尽管SDN有很多优点,但仍有一些问题需要解决。在SDN网络中,控制器遭受故障可能对整个网络造成恶劣影响,但SDN网络易被攻击的控制节点数要比传统网络少两个数量级[2-3],因此可以将抵御攻击的目标放在重要的节点上,从而把恶意攻击阻止在网络外。
针对SDN中的DDoS攻击,本文提出一种分阶段多层次的DDoS攻击识别模型。包含基于CPU使用率触发检测模块、目的IP交叉熵值、PACKET_IN数据包的预警检测模块和流量特征识别模块。引入交换机CPU使用率的初检方法,期望在降低常态化监控负荷的同时,能够及时发现异常;引入交叉熵值的知识,对正常与异常流量特征分布上的相似性进行定量分析,验证是否能提高灵敏度,降低漏报率和误报率,以期提升攻击识别检测效果。
近年来,学者们对SDN中的DDoS攻击识别展开了相关研究。Giotis等[4]提出在SDN中提取流特征信息,采用信息熵的算法进行检测。Basicevic等[5]引入广义熵值区分异常攻击,但计算负荷也随之上升。Mousavi等[6]对目的IP信息熵值进行计算,并与指定阈值对比判断网络是否正在遭受攻击。Ma等[7]采用源IP和目的IP的信息熵来检测攻击流量,Jun等[8]在此基础上添加了对数据包速度的监控检测DDoS攻击。但单一的属性检测对攻击的覆盖面不够广,且信息熵值只能表明两种分布分散程度的差异性,无法体现相似性。
武泽慧等[9]提出在SDN中对交换机进行吞吐率检测,当大于指定阈值时报警,触发交换机洗牌算法筛选正常流量,但监控负荷重。姚琳元等[10]使用基于神经网络的检测方法,对流量的七元组特征进行提取,通过对特征进行分类处理来检测DDoS攻击。Yan等[11]将流表项的部分特征进行收集,利用模糊综合评判方法进行模糊评价,但该方法初始最优权重确定困难,且自适应能力较差。
1948年,香农在信息论中引入信息熵(Information Entropy),定量地表征一个随机变量X的随机性及取值的分散程度。变量的分散程度越高、随机性越大,则信息熵值越大。其计算公式定义为:
(1)
式中:X表示随机变量,其取值集合域为{x1,x2,…,xn};取值xi的概率(或频率)为p(xi),i=1,2,…,n。
根据式(1)的相关定义,可进一步给出相对熵的概念,计算公式定义如下:
(2)
相对熵又被称为KL散度,可体现不同概率分布p和q的差异性,定量分析相似程度。当差别大时,相对熵值增加;如果两个分布相同,则相对熵为零。
为了简化计算,对式(2)变形可得:
(3)
式(3)第一项为分布p(x)信息熵的相反数,定义式(3)的第二项为交叉熵:
(4)
当H(p(x))为常量时(即p(x)为给定的真实分布),交叉熵的值等于相对熵的值与给定的真实分布的信息熵值相加。交叉熵H(p,q)等价于KL散度DKL(p‖q)。
在攻击识别过程中,需区分待检异常流量和正常流量的差异。KL散度值DKL(p(正常)‖p(待检异常))可衡量正常流量分布p(正常)与待检异常流量分布p(待检异常)的相似性,相比信息熵值得出分布分散程度的差异,其精准度更高,可更好地识别异常攻击流量。因为交叉熵等价于KL散度,为了简化计算量,本文采用交叉熵。
在SDN网络中,攻击者制造大量网络设备流表项无法匹配的高流量伪造数据,设备缓存未匹配分组机制,严重消耗设备的CPU资源及带宽;同时大量的PACKET_IN数据包导致控制器计算资源紧张。攻击者不需知道控制器的位置就可发动攻击,任何可产生PACKET_IN数据包的方式都可作为攻击控制器的手段。攻击特点分析如下:
1) 分布式:发起的攻击流量的来源由大量的主机组成,同时还伪造源IP地址、随机伪造源端口等参数构成无用的数据包,所以攻击流量分组中的来源是分散的。
2) 无规律:在进行攻击时使用常见的协议和服务,导致从协议和服务的类型上很难对攻击进行区分。且攻击数据包的一些信息都是经过伪造的,对攻击地址确定困难。
3) 多样性:不论是利用协议漏洞、伪造数据流量等,任何产生PACKET_IN数据包的形式都可发动攻击,从而对目标所处的网络造成拥堵直至瘫痪。攻击形式可能是一对一映射、一对多映射、多对一映射、多对多映射等。
3.2.1触发及预警阶段检测特征
1) SDN交换机CPU使用率:攻击者伪造攻击流量或占用带宽的DDoS攻击,网络设备的CPU使用率会有变化。与传统网络不同,SDN交换机只负责转发功能,因此具有丰富的计算能力用于CPU使用率监控。
2) PACKET_IN生成速率:对异常交换机PACKET_IN数据包监控可确定目标交换机是否遭受攻击,在遭受攻击时,设备中PACKET_IN数据包生成速度会上升。
3)目的IP交叉熵值:如3.1节分析,若发生了DDoS攻击,攻击者产生的异常流量的特征分布情况与正常流量会有一些差异,根据第2节可知,交叉熵可以灵敏地检测到正常流量分布及异常待检分布的相似性,区分异常流量。
3.2.2攻击识别阶段特征
1) 流数据包平均长度:攻击者发出的流量数据,是为了耗尽攻击目标的资源处理能力,而不是请求服务,所以攻击流量的数据包平均长度较短。而针对带宽的攻击,数据包的平均长度较长。
2) 流数据包数量均值:与数据包平均长度特征类似,单流数据包的数量较少。若是针对流量带宽的攻击,则每个流中数据包数量将会增加。
3) 双向流的比例:流量传输是为获取或提供服务,数据流的交互请求是双向的。而攻击流量不具备交互性,攻击者的地址A和攻击目标的地址B之间的流量传输呈现单向性。
4) 协议的交叉熵值:当攻击者注入攻击流量时,很难兼顾到攻击目标网络中不同协议的数据包比例,所以协议的交叉熵值可体现正常流量协议分布与异常流量协议分布的相似性。
5) 目的端口的交叉熵值:与协议的交叉熵值类似的表现,目的端口的交叉熵值可作为检测两种流量分布的相似性的一个特征。
6) 目的IP的交叉熵值:如3.2.1节介绍,目的IP的交叉熵值可作为识别攻击流量的一个特征。
本文提出常态化监测交换机设备的CPU使用率,与传统网络不同,SDN交换机只负责转发功能,因此具有丰富的计算能力可用于监控;当发现异常,通过进一步对PACKET_IN数据包及目的IP交叉熵值进行分析,对网络中是否遭受攻击进行预警;最后通过对流量中的特征进行分析,判断当前是否遭受DDoS攻击。攻击检测方案如图1所示。
图1 DDoS攻击检测方案
3.3.1触发检测阶段
SDN设备的CPU使用率可反映转发进程负载情况。当网络正常,CPU使用率处于稳定的值;当受到攻击行为,则CPU使用率将上升。设定阈值R,当CPU增量值高于R,满足触发条件。
若长时间处于满负荷情况,转发进程则无法及时处理流量请求而造成丢包现象。设定警戒线Z,CPU使用率达到警戒线Z时,触发紧急状态,直接进入攻击识别模块,预防高流量攻击。阈值R及警戒线Z根据具体的网络情况进行相应的调整。
本文将SDN交换机转发进程的CPU使用率作为触发特征,不需要过多的计算负荷,且能有效检测到异常情况,以较低的监控成本来监测网络。
3.3.2预警检测阶段
引起CPU使用率变化的不都是攻击行为,误警率较高,所以需进一步对PACKET_IN数据包及网络流量中目的IP的交叉熵进行检测分析。
对触发异常交换机的PACKET_IN数据包进行统计,计算每秒钟发出的PACKET_IN数据包数。若单位时间数据包数变化值达到阈值Q,则发出预警。
同时收集异常交换机的流量数据,设置检测窗口n,计算流量中目的IP交叉熵值,当其变化差值大于阈值P,进行攻击预警。由第2节可知,待检流量与正常流量的相似性越低,其交叉熵值越大。若后期检测结果为正常,则对阈值P、Q进行反馈调整,提升检测灵敏度。
3.3.3攻击识别阶段
当攻击预警之后,启动攻击识别模块。本阶段通过收集异常交换机的数据分组信息及流表项信息,对流量进行特征提取,得到攻击识别所需要的6元组特征,进行攻击流量识别,如果发现攻击行为,生成检测报告。
实验在基于i5 CPU,4 GB内存计算机的Ubuntu 16.04系统上进行,使用Mininet仿真软件搭建SDN实验网络拓扑,用OpenDaylight控制器作为SDN网络的控制器,使用Open vSwitch交换机作为SDN网络转发设备。网络拓扑如图2所示。
图2 网络拓扑结构图
拓扑中共有5台OVS交换机和16台主机,s4交换机中连接10台主机。为了尽可能模拟真实的网络流量,使用Mininet中的iperf工具编程以随机流量模型生成正常流量,各主机向另一任意主机以随机的方式建立连接,连接带宽设置为0.5 MB。
实验时选择主机h16作为受害主机,采用hping3作为产生异常流量的攻击工具,其可生成SYNflood、UDPflood、ICMPflood等一系列攻击流量。使用wireshark工具统计收集流量,并用tshark做相应的数据处理后,使用开源软件weka对统计流量进行处理分析。
4.2.1SDN交换机CPU使用率分析
为了测试交换机CPU使用率检测的有效性,本文进行了一些实验。使用top命令行工具对CPU使用率进行监测。Top命令通过在规定周期t秒内测量进程使用的CPU时间t1,将t1与t的比值作为该进程的CPU使用率。因设备实现转发功能的是ovs-vswitch进程,所以以该进程的CPU使用率作为转发进程的CPU使用率。
根据攻击强度进行2组实验,第一组为低强度攻击实验,攻击强度分别为30%、40%、50%,攻击强度为攻击分组流量占总流量中的比例。第二组为高强度攻击实验,攻击强度分别为60%、70%、80%、90%。前30 s为正常状态,然后进行60 s的流量攻击,同时测量攻击结束后30 s内的CPU使用率。实验结果如图3和图4所示。
图3 低速率攻击时CPU变化情况
图4 高速率攻击时CPU变化情况图
可以看出,在0~30 s,设备的CPU使用率处于稳定状态,此时设备CPU使用率较低,在19%左右。启动攻击后,设备的CPU使用率瞬间增长,从图3可得不同的攻击强度会引起CPU不同程度的稳定增长;从图4可看出,当攻击强度为80%和90%时无更明显的变化,稳定在一个峰值。
根据实验结果可知,设备的CPU使用率可作为预警设备是否遭受DDoS攻击的特征。CPU使用率变化值设置阈值R,当变化值大于阈值时,触发预警检测,若监测到CPU使用率达警戒线Z,则直接跳过预警检测,进入识别检测模块。
4.2.2PACKET_IN包与目的IP交叉熵值分析
对预警交换机发送PACKET_IN数据包进行监测统计。同样做了两组实验,攻击强度、实验环境等与上述实验环境一致。被攻击交换机产生的PACKET_IN数据包变化如图5和图6所示。
图5 低速率攻击时PACKET_IN数据包
图6 高速率攻击时PACKET_IN数据包数
可以看出,在0~30 s,PACKET_IN数据包处于稳定状态。随着未知流的进入,PACKET_IN数据包骤升,攻击结束后,PACKET_IN数据包的速率慢慢恢复至攻击前的正常状态。另外,攻击强度高时,波峰与波谷差距明显,分析发现,当交换机负载过高时,未匹配流数多,此时数据包会携带更多未匹配的流信息。
同时,对目的IP的交叉熵值与信息熵值进行对比分析,模拟正常流量连接单个主机约每秒发出1 000个数据包,设置检测窗口为2 000,计算目的IP的交叉熵值及信息熵值,不同攻击强度下计算5次熵值的平均值,实验结果如表1所示。
表1 不同攻击强度下的信息熵及交叉熵
可以看出,针对攻击流量温和变化的情况,本文引入的交叉熵值度量标准与使用信息熵值相比,增大了正常流量与攻击流量间的信息敏感距离。对于攻击的前期以及攻速较慢的DDoS攻击,可放大攻击特征信息,提升区分准确度,降低误警率,更快地发出预警。
4.2.3攻击识别实验与分析
实验收集8 500个样本,训练集中正常样本3 000个,攻击样本2 000个,测试集中正常样本2 000个,攻击流量样本1 500个。为了比较引入交叉熵分类特征的效果,与文献[12]中所提出的8元组和文献[13]的4元组进行了对比实验,同时对C4.5决策树、KNN算法及BayesNet算法进行了实验,结果如表2所示。
表2 检测率对比 %
实验结果显示本文引入交叉熵的6元组特征具有最高检测率98.2%,因为交叉熵值可体现正常流量分布与异常流量分布的相似性,而信息熵值只体现出分散程度的差异,但不能体现相似性,所以本文基于交叉熵值的特征区分度好。
从表3检测时间来看,虽然本文6元组比文献[13]中的4元组检测时长,但检测效果好,耗费时长属于可接收的范围。综上,本文在检测特征上引入交叉熵值,对正常流量与待检异常流量分布的相似性量化体现,取得了更好的检测效果。
表3 检测时间对比 ms
本文提出一种在SDN网络环境中的基于交叉熵的分阶段多层次DDoS攻击检测模型,采用基于交换机设备CPU使用率的初检方法,检测转发进程CPU的使用率,减轻计算资源使用率,又可快速定位异常交换机;引入交叉熵值的理论,将正常与攻击流量在特征分布上的相似性定量分析,有效增加数据间的信息距离,提升检测准确度;预警检测模块使用目的IP交叉熵值及PACKET_IN数据包联合检测,降低了漏报率。实验结果验证了检测特征的良好表现。
后期的工作将对特征筛选进行研究,使用优化算法选取最优特征集,同时考虑对比更多的特征,根据攻击报告进行攻击溯源研究。