一种软件定义网络中DDoS攻击检测与防御方法与系统与流程

文档序号:16276563发布日期:2018-12-14 22:37阅读:268来源:国知局
一种软件定义网络中DDoS攻击检测与防御方法与系统与流程

本发明属于网络安全领域,更具体地,涉及一种软件定义网络中的ddos攻击检测与防御方法与系统。

背景技术

软件定义网络(softwaredefinednetwork,sdn)是一种新型的网络架构,具有控制转发分离、集中控制和可编程性的特点。其集中控制的特性,给软件编程提供了极大的便利的同时,也带来了一系列安全问题。sdn控制器集中管理网络资源,一旦控制器单点失效,整个网络将面临瘫痪的风险。

在各种网络安全问题中,ddos(distributeddenialofservice,分布式拒绝服务)攻击是一种分布式、大范围协同作战的网络攻击方式,这种攻击方式易于发动、难于防御、极易对网络造成严重的危害。而sdn网络中的ddos攻击不仅会对目标主机造成严重危害,更会对网络中交换机和控制器产生严重影响,严重时整个sdn网络将彻底崩溃。

当前已经有学者致力于sdn网络中的ddos攻击检测研究,可分为基于机器学习方法的攻击检测和基于统计学方法的攻击检测。(1)基于机器学习的攻击检测方式周期性收集交换机流表项的统计数据,利用机器学习方法对统计数据进行判别。机器学习的攻击检测方式分析ddos攻击连接特征,在控制器上维护一个收集线程,周期性向全网中交换机发送请求消息以获取流表中的统计信息。机器学习方法数据收集方式给控制器造成一定负载,且网络规模越大,对控制器造成负载越大。(2)基于统计学方法的攻击检测方式,收集packet_in数据包,提取数据包中的一个或多个特征,采用统计学方法对特征序列进行判别。当采用目的ip熵值这一特征量来检测攻击时,在实验网络中多次测试确定一个阈值。但是,该方式必须考虑单一特征量如何确定一个合理阈值,且该方式不具有自适应性且特征单一,容易制造一种攻击绕过检测。当采用多维信息熵值来检测攻击时,综合考虑目的ip、目的端口、源ip三个特征量。然而该方式必须考虑如何合理评估三个特征量之间的关系来检测ddos攻击。



技术实现要素:

针对现有技术的缺陷,本发明的提供一种软件定义网络中ddos攻击检测与防御方法与系统,该方法结合五元特征的熵值和机器学习算法,检测ddos攻击,定位并及时采取防御措施,从转发层面过滤大量恶意流量,保护sdn控制器和交换机。

为实现上述目的,一方面,本发明实施例提供了一种软件定义网络中的ddos攻击检测与防御方法,该方法包括以下步骤:

s1.收集交换机上发给控制器的packet_in数据包;

s2.采取滑动窗口机制,提取每个窗口中数据包的源ip、源端口、目的ip、目的端口和协议类型五元特征,并计算每个窗口的五元特征的熵值;

s3.判断每个窗口的源ip熵值是否超过阈值,若否,则过滤该窗口的流量,若是,则判定该窗口的流量为可疑流量;

s4.采用机器学习算法判别可疑流量是否存在攻击,若是,则判定为攻击流量,否则,过滤该可疑流量;

s5.将攻击流量中源ip熵值最大的交换机端口标志为可疑端口,被重复检测为可疑端口判定为攻击端口;

s6.防御规则下发至攻击端口所在的交换机,从转发层面过滤攻击流量。

具体地,依据所述网络中主机的数量设定滑动窗口的大小。

具体地,所述阈值为所述网络中最大的源ip熵值。

具体地,机器学习算法为核函数为rbf的svm。

具体地,所述防御规则并非直接下发到攻击端口所在交换机上,而是经过规则缓存队列,具体为:

判断规则缓存队列中是否存在该防御规则,若存在,则不必下发;否则,则将该防御规则添加到规则缓存队列中,并在控制器上下发该防御规则到攻击端口所在的交换机上。

为实现上述目的,另一方面,本发明实施例提供了一种软件定义网络中的ddos攻击检测与防御系统,所述系统包括以下模块:

收集模块,用于收集交换机上发给控制器的packet_in数据包;

特征提取模块,用于采取滑动窗口机制,提取每个窗口中数据包的源ip、源端口、目的ip、目的端口和协议类型五元特征,并计算每个窗口的五元特征的熵值;

攻击检测模块,用于判断每个窗口的源ip熵值是否超过阈值,若否,则过滤该窗口的流量,若是,则判定该窗口的流量为可疑流量;采用机器学习算法判别可疑流量是否存在攻击,若是,则判定为攻击流量,否则,过滤该可疑流量;

定位模块,用于将攻击流量中源ip熵值最大的交换机端口标志为可疑端口,被重复检测为可疑端口判定为攻击端口;

防御模块,用于将防御规则下发至攻击端口所在的交换机,从转发层面过滤攻击流量。

具体地,依据所述网络中主机的数量设定滑动窗口的大小。

具体地,所述阈值为所述网络中最大的源ip熵值。

具体地,机器学习算法为核函数为rbf的svm。

具体地,所述防御规则并非直接下发到攻击端口所在交换机上,而是经过规则缓存队列,具体为:

判断规则缓存队列中是否存在该防御规则,若存在,则不必下发;否则,则将该防御规则添加到规则缓存队列中,并在控制器上下发该防御规则到攻击端口所在的交换机上。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

(1)本发明通过改进基于机器学习方法的攻击检测中数据收集的方式,收集交换机上发给控制器的packet_in数据包,复用了控制器的消息接收机制,与周期性收集流表项信息相比,有效的降低了控制器负载。

(2)本发明通过采用两级攻击检测的方式,一级检测模块通过源ip熵值过滤大量正常流量,二级检测模块通过svm检测模型判别网络中是否存在攻击,定位并及时采取防御措施,从转发层面过滤大量恶意流量,保护sdn控制器和交换机,检测准确率更高。

(3)本发明通过源ip、源端口、目的ip、目的端口和协议类型五元特征描述网络中源ip和目的ip的分散性,能在攻击发生的早期检测出来并进行防御。

附图说明

图1为本发明提供的一种软件定义网络中的ddos攻击检测与防御方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为本发明提供的一种软件定义网络中的ddos攻击检测与防御方法流程图。如图1所示,该方法包括以下步骤:

s1.收集交换机上发给控制器的packet_in数据包;

s2.采取滑动窗口机制,提取每个窗口中数据包的源ip、源端口、目的ip、目的端口和协议类型五元特征,并计算每个窗口的五元特征的熵值;

s3.判断每个窗口的源ip熵值是否超过阈值,若否,则过滤该窗口的流量,若是,则判定该窗口的流量为可疑流量;

s4.采用机器学习算法判别可疑流量是否存在攻击,若是,则判定为攻击流量,否则,过滤该可疑流量;

s5.将攻击流量中源ip熵值最大的交换机端口标志为可疑端口,被重复检测为可疑端口判定为攻击端口;

s6.防御规则下发至攻击端口所在的交换机,从转发层面过滤攻击流量。

步骤s1.收集交换机上发给控制器的packet_in数据包。

sdn网络中ddos攻击不仅对目标主机造成危害,更对交换机和控制器产生影响。攻击者在sdn网络中发起伪造源ip的ddos攻击时,交换机接收到大量不同源ip的攻击数据包,这些数据包在流表上匹配失败,触发交换机上发大量packet_in消息。控制器接收到这些异常的packet_in消息,消耗大量资源处理,并向交换机下发流表项,这些无用流表项占据交换机的流表空间。根据sdn网络中ddos攻击特征,数据收集模块能直接收集的数据有:网络中攻击者直接发送的异常流量、攻击流量产生的反射packet_in消息、交换机中大量无用的流表项。

控制器收集交换机中的流表项,需要在控制器上维护一个周期性线程,网络规模增大,对控制器负载加大。收集packet_in消息复用控制器的消息接收机制,不需要开启额外的数据收集线程,与周期性收集流表项相比,降低了控制器负载。本发明收集交换机上发给控制器的packet_in消息。

步骤s1之后、步骤s2之前,还可以包括对packet_in数据包的预处理。

原始packet_in数据中包含了大量无用信息和冗余信息,需要进行精简和提炼。主要包括三个方面:

1.过滤不合法的数据包

不同类型ip地址的数据包会对检测结果产生一定干扰。本发明选用ipv4类型数据包,因此,广播包和非ipv4类型的数据包均被视为不合法的数据包,这类数据包将被过滤。

2.过滤大量连续相同packet_in数据包

从交换机上发packet_in消息到控制器下发flow_mod消息这一段时间内,交换机接收到相同数据包时会再次匹配失败,将上发相同packet_in数据包,这种连续相同数据包不包含有效信息,将被过滤。

3.填补缺失信息

将packet_in数据包中某些缺失字段填充为null。

s2.采取滑动窗口机制,提取每个窗口中数据包的源ip、源端口、目的ip、目的端口和协议类型五元特征,并计算每个窗口的五元特征的熵值。

(一)特征选取的说明

当发生ddos攻击时,攻击者为了绕过网络防护设备,通常会伪造源ip,网络报文中源ip类型增加,目的ip分布集中。为了验证这种规律,分别统计mitlincoln实验室开发的darpa1999和2000数据集中的共14万条数据。结果如表1所示。

表1

从表1中可知,正常状况下,网络中源ip和目的ip种类相当,源端口和目的端口种类相当,且源ip、源端口、目的ip、目的端口分布在一定范围内;当发生ddos攻击时,网络中源ip、源端口和目的端口种类陡然增大,目的ip分布集中。

在sdn网络中,发送的攻击数据包采用伪造ip的方式,在流表上匹配失败,控制器接收到大量反射产生的packet_in数据包,这些packet_in数据包包含攻击数据包的包头信息,因此,本发明选用源ip、源端口、目的ip、目的端口和协议类型这五元组作为sdn网络中ddos攻击检测的特征量。

(二)特征熵值的说明

正常情况下,网络流量具有稳定性和对称性,当网络中发生伪造ip的ddos攻击时,源ip被大量伪造,目的ip分布集中。采用信息熵来衡量网络中通信流量的丰富程度。

在信息论中,熵是随机程度的度量,一个系统随机程度越高,信息分布越分散,熵值越高,反之,系统随机程度越低,熵值越低。shannon公式:i(a)=-p(a)*logp(a),其中,i(a):事件a发生所提供的信息量;p(a):事件a发生的概率。

为了详细说明特征的熵值计算,以源ip熵值计算为例说明基本流程。一个窗口中,不同的源ip分别记为1,2,3…n,概率分别为p1,p2,...,pn,则该窗口中源ip熵值如下:熵值e越大,源ip分布越广泛,差异越大;熵值e越小,源ip互异性越小。

(三)特征熵值的计算

本发明采取滑动窗口机制计算熵值,窗口大小是采样数据包的数目和计算熵值的单位。窗口可以依据时间划分,也可以根据数量划分。由于网络数据中数据包的发送和接收并不是恒定的,采用时间划分的方式数据包数量浮动较大,此时熵值的计算难以显示出规律,因此本发明依据sdn网络中主机的数量设定窗口大小。

采用基于数量的滑动窗口机制,设置一个窗口大小为size,计算过程如下:

1.当前窗口作用于控制器接收到的packet_in数据包序列,窗口内包含size个packet_in数据包,每个数据包对应一组五条特征。

2.统计当前窗口内各特征出现的次数,根据次数和窗口大小计算每个特征出现的概率。

3.根据每个特征出现的概率,计算当前窗口内各特征的熵值。

4.滑动窗口向后移动,去除第一项,添加进最后一项,重复步骤1-3。

本发明在实验网络中采用10、20、50、75、100、150、200、255、300、350这10种窗口大小,做对比实验。最终结果显示,当滑动窗口大小为50时,检测模型检测效果最佳,因此本发明选择50作为滑动窗口大小。

s3.判断每个窗口的源ip熵值是否超过阈值,若否,则过滤该窗口的流量,若是,则判定该窗口的流量为可疑流量。

源ip熵值检测作为一级检测,用于过滤大量正常流量,阈值采用网络中最大的源ip熵值作为阈值。当网络规模一定时,控制器根据网络中主机数目和熵值公式计算最大的源ip熵值。sdn控制器集中管理sdn网络,能动态感知网络中主机数量,因此,本发明每隔1s更新一次阈值。

s4.基于机器学习判别可疑流量是否存在攻击,若是,则判定为攻击流量。

基于机器学习的攻击检测作为二级检测,本发明选用svm算法,该算法作为一种经典的模式识别算法,泛化能力强,无论对大样本还是小样本都有较好的分类效果。具体包括以下步骤:

s401.收集实验网络中正常流量和攻击流量,结合darpa数据集中正常流量和攻击流量,作为训练数据;

训练数据采用离线数据和sdn网络在线数据相结合。离线数据采用darpa2000中的lls_ddos_2.0.2的攻击流量作为负样本,darpa1999中第一周的部分正常流量作为正样本;在线数据采用实验拓扑中的模拟流量数据,在实验sdn网络环境中基于正常网络通信流量的特性,制造背景流量作为正样本,在网络中发起synflood、udpflood和icmpflood不同混合比例的攻击,数据收集模块收集此时的数据作为负样本。将离线和在线的数据混合,提取训练样本的五元特征。

s402.使用svm算法对训练数据进行训练,得到svm攻击检测模型;

本发明采用rbf核函数,该核函数的参数更少,能有效的降低模型的复杂程度,还能减少数值上的运算难度。为了确定rbf核函数最优的c和g,使c在[0.001,0.01,0.1,1,10,100,1000]范围内,g在[0.0001,0.0005,0.001,0.005,0.01,0.1,1]范围内,采用三层交叉验证,使用网格参数寻优的方法,确定范围内最优的c和g。

训练过程:将sdn网络中ddos攻击训练样本映射到高维空间中,利用svm算法思想在特征空间中寻找最优化的ddos攻击检测超平面,形成ddos攻击检测函数。

s403.利用svm攻击检测模型判别将可疑流量是否存在攻击,若是,则判定为攻击流量。

提取可疑流量的五元组特征,并通过rbf核函数映射到特征空间中,作为攻击检测函数的输入,利用ddos攻击检测函数判别五元组是否存在攻击。

s5.将攻击流量中ip熵值最大的交换机端口标志为可疑端口,被重复检测为可疑端口判定为攻击端口。

攻击定位利用了滑动窗口队列,给每个滑动窗口的五元组添加对应的交换机端口号,作为五元组的端口标志。分别计算每个滑动窗口中交换机端口的packet_in数据包的源ip熵值,将源ip熵值最大的交换机端口作为本次滑动窗口的交换机端口标志。当本次滑动窗口生成的五元组熵值被检测为攻击流量时,则该交换机端口标志为可疑端口。

考虑当ddos攻击发生时,靠近攻击源的接入交换机上发的packet_in数据包最多且源ip最分散,因此,选用源ip熵值最大的交换机端口作为五元组端口标志。

当攻击检测模块检测到某条五元组为攻击数据时,对应的五元组端口标志被定义为可疑端口,加入可疑端口队列。只有持续一段时间内被重复检测为可疑端口的交换机端口升级为攻击端口。

可疑端口队列是为了降低误判。只有持续一段时间内都被定义为可疑端口的交换机端口是攻击端口。可疑端口队列保存10s内的可疑端口数目,当一个可疑端口在该队列中出现次数大于3时,该可疑端口升级为攻击端口。

基于端口熵值的攻击定位,优先定位sdn网络中最接近攻击源的接入交换机端口。接入交换机发送的packet_in消息最猛烈,且控制器批量下发一条路径上的flow_mod消息,中间层的交换机上发packet_in消息比接入层少。

步骤s6.防御规则下发至攻击端口所在的交换机,从转发层面过滤攻击流量。

防御规则采用流表项的形式存在于交换机中,该条流表项比普通转发流表项优先级高,生存时间为30s。当30s内ddos攻击停止,则该流表项自动失效,保证攻击结束后网络通信能正常进行。对于定位的攻击端口,防御模块选用了流表项的ingressport、priority、hard_timeout、ide_timeout和action几个属性,其生成的防御规则表示从交换机攻击端口进入的数据包不被转发,直接丢弃。与启用控制器的防火墙相比,从转发层面过滤攻击流量这种方式对控制器负载更小。

防御规则并非直接下发到攻击端口所在交换机上,需要经过一个规则缓存队列,主要从以下两个方面考虑:

1.当该攻击端口被多次定位时,若每次都向该交换机端口下发相同规则,浪费控制器资源。

2.当缓存队列中同一条规则的下发时间相差超过3s,则应重新下发规则。这说明上一条规则没有下发成功或者没有生效,需要重新下发,保证攻击端口能安装相应防御规则。

判断规则缓存队列中是否存在该防御规则,若存在,则不必下发;否则,则将该防御规则添加到规则缓存队列中,并在控制器上下发该规则到攻击端口所在的交换机上。

规则缓存队列长度动态变化,为3s内生成规则的数量。缓存队列避免了相同规则一定时间内被多次下发,同时保证了攻击端口的防御规则下发成功。

对于来自多个接入层交换机上的ddos攻击,优先定位攻击最强的交换机端口,下发防御规则过滤此端口的攻击流量,接着定位下一个攻击端口并采取防御措施,直至定位防御所有攻击端口。

相应地,一种软件定义网络中的ddos攻击检测与防御系统,所述系统包括以下模块:

收集模块,用于收集交换机上发给控制器的packet_in数据包;

特征提取模块,用于采取滑动窗口机制,提取每个窗口中数据包的源ip、源端口、目的ip、目的端口和协议类型五元特征,并计算每个窗口的五元特征的熵值;

攻击检测模块,用于判断每个窗口的源ip熵值是否超过阈值,若否,则过滤该窗口的流量,若是,则判定该窗口的流量为可疑流量;采用机器学习算法判别可疑流量是否存在攻击,若是,则判定为攻击流量,否则,过滤该可疑流量;

定位模块,用于将攻击流量中源ip熵值最大的交换机端口标志为可疑端口,被重复检测为可疑端口判定为攻击端口;

防御模块,用于将防御规则下发至攻击端口所在的交换机,从转发层面过滤攻击流量。

以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1