一种面向软件定义网络的DDoS攻击防御系统与方法转让专利

申请号 : CN201610976137.X

文献号 : CN106572107B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 阳小龙张乾

申请人 : 北京科技大学

摘要 :

本发明属于网络安全技术领域,特别涉及一种软件定义网络安全防御技术领域。其技术方案是:一种面向软件定义网络的DDoS攻击防御系统,包括:数据采集模块、训练模块、识别模块、流表下发模块。其防御方法是:对SDN网络中交换机上的OpenFlow流表数据进行采集,将不同种类的流量进行训练分类,把DDoS攻击流量进行识别标记,并以OpenFlow阻拦流表下发的形式进行流量拦截。本发明可以很好地在SDN网络环境中部署,对DDoS攻击流量拦截的有效性高,对伪造源IP地址类型的攻击同样能够有效拦截。

权利要求 :

1.一种面向软件定义网络的DDoS攻击防御方法,其特征在于,采用面向软件定义网络的DDoS攻击防御系统,所述面向软件定义网络的DDoS攻击防御系统包括:数据采集模块、训练模块、识别模块、流表下发模块;

所述数据采集模块定时采集网络中的训练数据、实时数据,并将数据信息传递给所述训练模块与所述识别模块;

所述训练模块接收所述数据采集模块输出的数据,进行K-Means聚类训练,获得用于质心判断的质心信息,并将所述质心信息向所述识别模块输出;

所述识别模块接收所述数据采集模块的实时数据和所述训练模块的质心信息,对每个交换机每个目的主机划分多个并发进程进行身份识别,当异常身份在下一个采集时刻点得到二次确认的时候,对该进程上的信息展开分析,提取异常主机信息,将异常主机信息向所述流表下发模块输出;

所述流表下发模块接收来自识别模块异常主机信息,下发对攻击者的阻拦流表,模块采取了溯源下发的方式,利用OpenFlow流表的特点,对攻击包裹来源逐级确定,在攻击包裹到达控制器所控制的网络时进行DDoS攻击拦截;

所述面向软件定义网络的DDoS攻击防御方法包括以下步骤:

A.数据采集步骤

数据采集模块从OpenFlow流表中进行数据采集,采集的数据信息包括:相邻时刻字节计数差值、相邻时刻包裹计数差值、新增流表主机个数与交换机个数比值、记录时刻双向字节差值、相邻时刻双向字节差值的差值,将所述数据信息传递给所述训练模块与所述识别模块;

B.训练步骤

所述训练模块对接收的所述数据信息进行K-means聚类训练,获得用于类别判断的质心信息,并将所述质心信息向所述识别模块输出;并对数据采集模块数据采集量作出反馈;

C.识别步骤

采用了K-means聚类算法训练后的质心信息对网络内实时的数据流身份进行判断,将攻击者主机地址HSource,受害主机地址HDest告知流表下发模块;

D.流表下发步骤

使用溯源下发OpenFlow阻拦流表的方式,对DDoS攻击数据流进行拦截。

2.如权利要求1所述的一种面向软件定义网络的DDoS攻击防御方法,其特征在于,步骤D的所述流表下发步骤为:D1:流表下发模块以主机地址HDest为起点,向其周围SDN交换机发送OpenFlow阻拦流表,ACTION=drop,流表内容包含攻击者主机地址HSource,受害主机地址HDest,当有攻击包裹匹配了这两条信息,即将其丢弃;

D2:在下一个时刻点,对步骤D1中下发的阻拦OpenFlow流表信息进行数据提取,如果发现在某一SDN交换机上面的阻拦OpenFlow流表packett字段不为0,则认定该SDN交换机处于此DDoS攻击流量的攻击路径之上,设此SDN交换机地址为S1;

D3:删除步骤D1中除了S1上其余SDN交换机上下发的多余OpenFlow阻拦流表;

D4:再以SDN交换机S1为起点,重复步骤D2-D3类似的过程,直至最后控制交换机Sp周围SDN交换机上的OpenFlow阻拦流表packett字段全部为0,且控制交换机Sp的控制器只有一个,则认为攻击主机HSource不通过周围SDN交换机将包裹传递给控制交换机Sp,实现了仅在控制交换机Sp下发对攻击主机HSource的OpenFlow阻拦流表,达到最快速地拦截攻击流量;

D5:若控制交换机Sp还受其他控制器控制,则将控制交换机Sp、主机地址HSource、受害主机地址HDest信息传递给所述其他控制器;

D6:所述其他控制器执行步骤D1-D4,直至其他控制交换机Sq周围SDN交换机上的OpenFlow阻拦流表packet-count字段全部为0,且控制交换机Sq的控制器只有一个,则认为攻击主机HSource不通过周围交换机将包裹传递给交换机Sq,实现了仅在Sq下发对攻击主机HSource的OpenFlow阻拦流表而最快速地拦截攻击流量。

说明书 :

一种面向软件定义网络的DDoS攻击防御系统与方法

技术领域

[0001] 本发明属于网络安全技术领域,特别涉及一种软件定义网络安全防御技术领域。

背景技术

[0002] 近年来,软件定义网络(SDN,Software Defined Network)作为新一代网络架构成为新兴的研究热点。SDN网络架构的出现弥补了传统网络架构中的很多缺陷,SDN网络区别于传统网络的分布式控制,是由统一的控制器来控制SDN网络交换机转发行为,同时,SDN网络具有可编程性,网络管理员可以更加灵活地管理网络。不可忽视的是,在实际应用中,SDN网络虽然提供了网络管理上极大的便利性,但是在SDN网络环境中安全问题同样不能忽视。传统网络针对DDoS攻击的实时防御方案大多围绕流量清洗和防火墙阻拦,针对SDN网络除了提出一些和传统网络相同原理的防御方案之外,还可以研究其他防御方法。

发明内容

[0003] 提供一种面向软件定义网络的DDoS攻击防御系统和方法,实现在SDN网络环境中对DDoS攻击流量进行实时识别、拦截。
[0004] 为了实现上述目的,本发明采用如下技术方案:
[0005] 一种面向软件定义网络的DDoS攻击防御系统,其特征是包括:数据采集模块、训练模块、识别模块、流表下发模块;
[0006] 所述数据采集模块控制器定时采集SDN交换机上OpenFlow流表信息,形成训练数据、实时数据,并将所述数据传递给所述训练模块与所述识别模块;
[0007] 所述训练模块接收所述数据采集模块输出的数据,进行K-Means聚类训练,获得用于质心判断的质心信息,并将所述质心信息向所述识别模块输出;
[0008] 所述识别模块接收所述数据采集模块的实时数据和所述训练模块的质心信息,对每个交换机每个目的主机划分多个并发进程进行身份识别,当异常身份在下一个采集时刻点得到二次确认的时候,对该进程上的信息展开分析,提取异常主机信息,将异常主机信息向所述流表下发模块,进行DDoS攻击拦截;
[0009] 所述流表下发模块接收来自识别模块异常主机信息,下发对来自攻击者的阻拦流表,采取了溯源下发的方式,利用OpenFlow流表的特点,将攻击包裹来源逐级确定,在攻击包裹到达控制器所控制的网络时立即拦截。
[0010] 一种面向软件定义网络的DDoS攻击防御方法,其特征是采用如上所述的一种面向软件定义网络的DDoS攻击防御系统,并包括以下步骤:
[0011] A.数据采集步骤
[0012] 数据采集模块从OpenFlow流表中进行数据采集,采集的数据信息包括:相邻时刻字节计数差值、相邻时刻包裹计数差值、新增流表主机个数与交换机个数比值、记录时刻双向字节差值、相邻时刻双向字节差值的差值,将所述数据信息传递给所述训练模块与所述识别模块;;
[0013] B.训练步骤
[0014] 所述训练模块对接收的所述数据信息进行K-means聚类训练,获得用于质心判断的质心信息,并将所述质心信息向所述识别模块输出;并对数据采集模块数据采集量作出反馈;
[0015] C.识别步骤
[0016] 采用了K-means聚类算法训练后的质心信息对网络内实时的数据流身份进行判断,将攻击者主机地址HSource,受害主机地址HDest告知流表下发模块;
[0017] D.流表下发步骤
[0018] 使用溯源下发OpenFlow阻拦流表的方式,对DDoS攻击数据流进行拦截。
[0019] 可选的,如上所述的一种面向软件定义网络的DDoS攻击防御方法,其特征是步骤D所述流表下发步骤为:
[0020] D1:流表下发模块以主机地址HDest为起点,向其周围SDN交换机发送OpenFlow阻拦流表,ACTION=drop,所述流表内容包含攻击者主机地址HSource,受害主机地址HDest,当有攻击包裹匹配了这两条信息,即将其丢弃;
[0021] D2:在下一个时刻点,对步骤D1中下发的阻拦OpenFlow流表信息进行数据提取,如果发现在某一SDN交换机上面的阻拦OpenFlow流表packett字段不为0,则认定该SDN交换机处于此DDoS攻击流量的攻击路径之上,设此SDN交换机地址为S1;
[0022] D3:删除步骤D1中除了S1上其余SDN交换机上下发的多余OpenFlow阻拦流表;
[0023] D4:再以SDN交换机S1为起点,重复步骤D2-D3类似的过程,直至最后控制交换机Sp周围SDN交换机上的OpenFlow阻拦流表packett字段全部为0,且控制交换机Sp的控制器只有一个,则认为攻击主机HSource不通过周围交换机将包裹传递给控制交换机Sp,实现了仅在控制交换机Sp下发对攻击主机HSource的OpenFlow阻拦流表达到最快速地拦截攻击流量;
[0024] D5:若控制交换机Sp还受其他控制器控制,则将控制交换机Sp、主机地址HSource、受害主机地址HDest信息传递给所述其他控制器;
[0025] D6:所述其他控制器执行步骤D1-D4,直至其他控制交换机Sq周围SDN交换机上的OpenFlow阻拦流表packet-count字段全部为0,且控制交换机Sq的控制器只有一个,则认为攻击主机HSource不通过周围交换机将包裹传递给交换机Sq,实现了仅在Sq下发对攻击主机HSource的OpenFlow阻拦流表而最快速地拦截攻击流量。
[0026] 可选的,如上所述的一种面向软件定义网络的DDoS攻击防御方法,其特征是包括以下步骤:
[0027] A.数据采集步骤
[0028] A1.模块初始化:设初始时刻t=0,生成SDN网络拓扑并启动控制器,向网络中所有的SDN交换机指定控制器;依据OpenFlow1.3协议对网络中转发规则进行设定,针对数据包裹给SDN交换机下发OpenFlow转发流表;
[0029] A2.导入背景流量:导入背景流量,所述背景流量模拟向SDN网络中指定主机随机产生HTTP网络请求,最大程度上模拟正常用户上网行为;控制器会依据用户对指定主机的请求,在其传输链路上下发OpenFlow流表;
[0030] A3.采集前6项正常流量训练数据:将SDN网络中交换机上存在的因正常用户请求而下发的OpenFlow流表,开始训练数据采集工作;通过REST方法进行流表数据信息提取,提取的信息包括OpenFlow流表的统计数据字段(flow-statistics)中的字节计数(byte-count)、包裹计数(packet-count),把这些信息存储到Dt中,Dt为一种数据格式为DataFrame的数据表格(见表1),行数据存储记录时刻t,列数据分为12项,第1列存储记录时间;2-4项列数据分别存储(Si,HDest,HSource)信息,其中Si为流表所在交换机ID,HDest为流表所匹配的目的主机IP地址,HSource为流表所匹配的源主机IP地址;第5项列数据为字节计数bytet,第6项列数据为包裹计数packett;前6项数据为直接获得的数据;
[0031] A4.采集第7项正常流量训练数据:相隔相同时间Δt,对步骤A3所述数据重新采集,得到此时新的数据Dt+Δt;并在Dt+Δt中对每一条行数据添加第7项列训练数据,标签数据label,其中label为流表所对应的数据流量身份,定义Label=Normal;
[0032] A5.采集第8、9项正常流量训练数据:对比前后两个记录时间点的数据Dt和Dt+Δt,对(Si,HDest,HSource)相同的每一行记录,计算字节计数、包裹计数在时间间隔Δt产生的变化,将字节计数的变化量byteDifft+Δt、包裹计数的变化量为packetDifft+Δt存储在Dt+Δt第8项、第9项列数据中:
[0033]
[0034] 其中:其中bytet+Δt代表t+Δt记录时刻字节计数,byteDifft+Δt代表t+Δt记录时刻与t记录时刻字节计数的差值,packett+Δt代表t+Δt记录时刻包裹计数,packetDifft+Δt代表t+Δt记录时刻与t记录时刻包裹计数的差值;
[0035] A6.采集第10项正常流量训练数据:对比前后两个记录时间点的数据Dt和Dt+Δt,对(Si,HDest,HSource)记录只在t+Δt时刻出现时(这些数据代表t+Δt时刻相比t时刻新增的流表记录,即出现新用户发送包裹给网络中的某一主机),统计这些(Si,HDest,HSource)信息,将数据 存储到Dt+Δt第八项列数据中,其中NH为不同Hk出现的个数,NS为不同Si出现的个数;
[0036] 说明:在主机遭受到DDoS攻击期间,攻击肉鸡通常采取伪造随机源IP地址的形式大量从一台主机发包,但其发出的所有的包裹在数据链路层上所经过的SDN交换机是相同的,所以会出现NH数值巨大,而NS数值不变的情况;若为正常用户在访问时,由于用户访问时间、访问地点的随机性,新用户出现时,包裹所经过的交换机路径是呈现广泛分布的,这就出现NH数值大,而NS数值也大的情况;因此两者比值 具有差异性,有利于聚类过程;
[0037] A7.采集第11、12项正常流量训练数据:根据(Si,HDest,HSource)找到其反向流量记录所对应的数据记录,设所使用的数据表格Dt列中包含的数据行中2、3、4列数据项为(Si,Hj,Hk),其中(Si,Hj,Hk)表示流表是从交换机Si提取,该条流表的目的主机是Hj,源主机是Hk,则其反向流量记录所对应的数据记录即为(Si,H'j,H'k),(Si,H'j,H'k)表示流表是从交换机Si提取,该条流表的目的主机是H'j,源主机是H'k,其数值相对应关系为:H'j=Hk,H'k=Hj,(Si,H'j,H'k)所对应的流表信息将在数据表格Dt中存在。对两者进行差值计算,将byteBackt+Δt、byteBackDifft+Δt存储在Dt+Δt第11项、第12项列数据中,
[0038]
[0039] 其中byteBackt+Δt代表t+Δt记录时刻双向字节差值,byteForwardt+Δt代表t+Δt记录时刻(Si,Hj,Hk)所对应的Dt+Δt数据行第五列字节计数,byteBackwordt+Δt代表t+Δt记录时刻(Si,H'j,H'k)所对应的Dt+Δt数据行第五列字节计数,byteBackDifft+Δt代表t+Δt记录时刻双向字节差值与t记录时刻双向字节差值。
[0040] 分析:byteBackt+Δt代表了流量的正向反向行为差异,在DNS反射放大式攻击中,由于攻击者采用伪造源IP地址的形式请求几十倍大小的响应报文,体现在数据链路层上可以观察到正向反向两条流表字节技术差值较大或者其中一方为零;byteBackDifft+Δt则代表了该行为在时间上的持续性;
[0041] A8.采集Flood Attack流量训练数据:选择时间点tattack1,停止注入背景流量,注入DDoS洪流攻击流量,攻击流量模拟指定数目肉鸡发送大量带有伪造源IP地址的HTTP请求报文,与此同时持续采集数据,并在记录中Dt+Δt第7列中添加标签Label=Flood;Dt+Δt中其余列数据项计算方法不变;
[0042] A9.DNS Attack流量训练信息采集步骤;选择时间点tattack2,停止注入DDoS洪流攻击流量,开始注入DNS反射放大式攻击流量,攻击流量模拟攻击者发送带有伪造源IP地址的DNS请求报文给多台DNS主机,DNS主机响应这些报文,并将响应报文发送给受害者;与此同时持续采集数据,并在记录Dt+Δt第7列中添加标签Label=DNS;Dt+Δt其余列数据项计算方法不变;
[0043] A10.停止攻击流量注入,合并D0,D1,...,Dt+Δt为D,使用数据D进行K-Means聚类计算;
[0044] A11.对D执行每一列数据执行数据极值标准化操作;
[0045]
[0046] 其中data所对应的是数据D中每一列的数据的统称,dataold代表列数据原来的数据内容,datamin代表所使用的列数据中的最小值,datamax代表所使用的列数据中的最大值,datanew代表列数据极值标准化操作后的计算值,对原有的dataold将进行覆盖。
[0047] A12.采集实时网络数据:t时刻采集Dt中的前6项信息,t+Δt时刻采集信息之后结合Dt进行8-12列数据项的计算;第7项为空,不进行设置;设在t+Δt时刻处理得到的数据为D't+Δt;结合训练数据中的极值对实时采集的数据进行步骤A11中的数据极值标准化操作;将D't+Δt数据输出给识别模块;
[0048] B.训练步骤
[0049] B1.随机取3个初始质心坐标;
[0050] C0={(x10,x20,x30,x40,x50),(x11,x21,x31,x41,x51),(x12,x22,x32,x42,x52)}[0051] 其中:C0所代表的是初始质心坐标,由三个质心坐标组成,每一个质心坐标代表一类数据流身份,x0=(x10,x20,x30,x40,x50)代表正常用户流量数据流,x1=(x11,x21,x31,x41,x51)代表FloodAttack流量数据流,x2=(x12,x22,x32,x42,x52)代表DNS Attack流量数据流;
[0052] B2.设数据采集模块中受攻击的网络主机为Hattack,DDoS攻击流量通过交换机Sattack汇集到Hattack处,在D中提取第2-3列数据项为(Sattack,Hattack)的数据记录,设其为DtoCluster;
[0053] B3.对DtoCluster中的每一行yj=(y1,y2,...,y5),与初始质心C0中每一个质心分别计算距离 其中yj=(y1,y2,...,y5)为第j行数据表格8到12列的数据,若三个di值中一个计算结果最小,说明其与初始质心xi的距离最近,那么此数据行属于这个质心xi所对应的数据流类别;
[0054] B4.在记录时刻t的数据全部处理结束之后,更新质心,将质心移动到这个质心的群的中心位置;
[0055] 分析:此时DtoCluster中t时刻的数据处理完毕,t时刻所包含数据行每行都有所对应的群,更新各个群的质心的坐标:对于所有标记为i的数据,重新计算质心中的数值(所有被标记为i的数据之和除以被标记为i的个数;
[0056] B5.重复步骤B3-B4,每循环一次质心信息将会更新一次,直至DtoCluster数据处理完毕,且质心的位置不再发生变化,保存最终的质心信息至CCluster;
[0057] B6.对CCluster的有效性进行测试验证:在DtoCluster中,分别取Label不同的三个连续片段组成新的测试数据Dtest,对Dtest每一行yj=(y1,y2,...,y5),计算其与质心CCluster的距离 若三个di值中一个计算结果最小,说明其与xi其距离最近,那么此点属于关于质心xi的群,比对xi群类别和数据行第7列字段Label是否相同,得到聚类的准确度,如果准确率不高,则将信息反馈给数据采集模块加大训练数据量,继续聚类步骤;
[0058] 进一步的:步骤B6、C1所述归类计算方法、准确度计算方法是:对输出的训练数据、实时数据、测试数据每一行yj=(y1,y2,...,y5),计算其与质心CCluster的距离若三个di值中一个计算结果最小,说明其与xi其距离最近,
那么此点属于关于质心xi的群;其中,准确度测试部分计算方法还包含:比对测试数据行数据所计算出的di所对应的群类别和测试数据生成时所对应的生成数据流类型(Label),依据此得到聚类的准确度:结果相同个数/测试数据总行数。
[0059] B7.聚类结果对测试数据正确率结果达到100%,将最终质心信息CCluster传递给识别模块进行实时流量信息的识别;
[0060] C.识别步骤
[0061] C1.开启多个计算进程,使每个进程处理D't+Δt中第2-3项列数据(Si,HDest)相同的数据内容,若构成D't+Δt数据中有m个交换机,n个目的主机的话,则开启进程为m×n个,进程中对来自不同的源IP地址信息进行数据计算;对数据的每一行yj=(y1,y2,...,y5),计算与质心CCluster的距离 其中yj=(y1,y2,...,y5)为数据表格7到11列的数据,xi为CCluster中的数据项,每一项的代表一类数据类别(Normal/Flood/DNS),若三个di值中一个计算结果最小表示其与CCluster其中一个质心项xi的距离最小,输出该质心所指向的数据类别;
[0062] C2.若数据表明在交换机Si,主机HDest方向上遭受到了DDoS攻击(Flood/DNS),则在下一个时间点对其进行状态确认,如果连续两个时间点状态相同,将确认在交换机Si,主机HDest方向上遭受到了DDoS攻击;
[0063] C3.如果发现遭受到DDoS攻击,提取当前所使用的D't+Δt中相关数据,根据被判断为攻击的流表信息提取HSource作为攻击者对象;
[0064] C4.对上步骤中提取的HSource下发OpenFlow阻拦流表,将攻击者主机地址HSource,受害主机地址HDest告知流表下发模块;
[0065] D.流表下发步骤
[0066] D1:流表下发模块以主机地址HDest为起点,向其周围SDN交换机发送OpenFlow阻拦流表,ACTION=drop,所述流表内容包含攻击者主机地址HSource,受害主机地址HDest,当有攻击包裹匹配了这两条信息,即将其丢弃;
[0067] D2:在下一个时刻点,对步骤D1中下发的阻拦OpenFlow流表信息进行数据提取,如果发现在某一SDN交换机上面的阻拦OpenFlow流表packett字段不为0,则认定该SDN交换机处于此DDoS攻击流量的攻击路径之上,设此SDN交换机地址为S1;
[0068] D3:删除步骤D1中除了S1上其余SDN交换机上下发的多余OpenFlow阻拦流表;
[0069] D4:再以SDN交换机S1为起点,重复步骤D2-D3类似的过程,直至最后控制交换机Sp周围SDN交换机上的OpenFlow阻拦流表packett字段全部为0,且控制交换机Sp的控制器只有一个,则认为攻击主机HSource不通过周围交换机将包裹传递给控制交换机Sp,实现了仅在控制交换机Sp下发对攻击主机HSource的OpenFlow阻拦流表达到最快速地拦截攻击流量;
[0070] D5:若控制交换机Sp还受其他控制器控制,则将控制交换机Sp、主机地址HSource、受害主机地址HDest信息传递给所述其他控制器;
[0071] D6:所述其他控制器执行步骤D1-D4,直至其他控制交换机Sq周围SDN交换机上的OpenFlow阻拦流表packet-count字段全部为0,且控制交换机Sq的控制器只有一个,则认为攻击主机HSource不通过周围交换机将包裹传递给交换机Sq,实现了仅在Sq下发对攻击主机HSource的OpenFlow阻拦流表而最快速地拦截攻击流量。
[0072] 本发明通过对SDN网络中交换机上的OpenFlow流表数据进行采集,将不同种类的流量进行训练分类,把DDoS攻击流量进行识别标记,并以OpenFlow阻拦流表下发的形式进行流量拦截。该DDoS攻击防御方法很好地在SDN网络环境中部署,对DDoS攻击流量拦截的有效性高,对于伪造源IP地址类型的攻击同样能够有效拦截。经过在仿真平台sdnSim下进行的验证和性能分析,结果表明在本发明中SDN网络环境下的DDoS攻击防御方案具有有效性。

附图说明

[0073] 图1为本发明流程示意图;
[0074] 图2为本发明的一种网络拓扑图。

具体实施方式

[0075] 结合附图对本发明的技术方案作说明如下。
[0076] 以下通过具体实例对本发明的技术方案作进一步的详细说明。
[0077] 实例1:
[0078] 为使本发明要解决的技术问题、技术方案更加清楚,下面将结合附图及门户网站防御DDoS攻击的实施例进行详细描述。
[0079] 一种面向软件定义网络的DDoS攻击防御系统,实现在SDN网络架构环境中对DDoS攻击流量进行识别、拦截。本发明分为SDN网络数据采集部分、DDoS攻击识别部分、DDoS攻击拦截部分三部分。前一部分为后一部分提供决策依据,数据采集部分使用了SDN网络中交换机的OpenFlow流表数据,通过控制器对这部分数据作实时的数据提取分析,进而识别出异常DDoS攻击流量;攻击拦截部分依据前一部分的判断结果,针对该流量在其攻击路径上下发阻拦流表溯源,达到拦截异常流量的目的。
[0080] 在门户网站正常运行期间,其正常用户在访问时间、在访问地理位置上具有随机性,其用户可能在全球任意地区、任意时间访问。门户网站经常是攻击者执行恶意DDoS攻击的攻击对象,受攻击期间,DDoS攻击者利用其控制的大量肉鸡模拟正常用户访问行为,对门户网站发送访问请求,攻击者利用伪造IP技术更能使一台主机模拟N台主机的请求行为,其对门户网站服务器造成的负荷非常之大,会导致正常用户的正常请求响应延迟或者网站崩溃。
[0081] 如图1、图2所示,一种面向软件定义网络的DDoS攻击防御方法,包括以下步骤:
[0082] 步骤1:先使用sdnSim软件进行训练数据的采集,训练数据提供给训练模块进行聚类训练,门户网站服务器、控制器开启后采集网络中SDN交换机上的网络数据,此部分数据作为实时数据提供给识别模块。
[0083] 具体来说:初始时刻t=0,启动SDN网络仿真软件sdnSim,生成SDN网络拓扑并启动OpenDayLight控制器,启动OpenDayLight控制器,启动sdnSim软件中背景流量发生模块,该模块向SDN网络中指定主机随机产生HTTP网络请求,最大程度上模拟正常用户上网行为。通过REST方法进行流表数据信息提取。可提取的有效信息包括OpenFlow流表的统计数据字段(flow-statistics)中的字节计数(byte-count)、包裹计数(packet-count)等,把这些信息存储到Dt中。Dt是一种数据格式为DataFrame的数据表格,见表1,列数据分为12项,第1列存储记录时间,2-4项列数据分别存储(Si,HDest,HSource)信息(Si代表流表所在交换机ID,HDest代表流表所匹配的目的主机IP地址,HSource代表流表所匹配的源主机IP地址),第5项列数据为字节计数(byte-count),第6项列数据为包裹计数(packet-count)。这前6项数据是可以直接获得的数据。
[0084] 表1 Dt数据格式
[0085]
[0086] 重新采集数据,得到此时新的数据Dt+Δt。并在Dt+Δt中对每一条行数据添加第7项列数据——标签数据(Label=Normal),代表流表所对应的数据流量身份。对比前后两个记录时间点的数据Dt和Dt+Δt,针对(Si,HDest,HSource)相同的每一行记录,使用字节计数(byte-count)、包裹计数(packet-count)进行计算,将byteDifft+Δt、packetDifft+Δt存储在Dt+Δt第7项、第8项列数据中: 对比前后两个记录时间点的数据
Dt和Dt+Δt,其中(Si,HDest,HSource)记录只在t+Δt时刻出现的数据,统计这些(Si,HDest,HSource)信息,将数据 存储到Dt+Δt第八项列数据中,其中NH代表不同Hk出现的个数,NS代表不同Si出现的个数。再根据(Si,HDest,HSource)所对应的物理意义(指流表是从交换机Si提取,该条流表的目的主机是HDest,源主机是HSource),找到其反向流量记录所对应的数据记录即(Si,HSource,HDest)(指流表是从交换机Si提取,该条流表的目的主机是HSource,源主机是HDest),对两者进行差值计算。将byteBackt+Δt、byteBackDifft+Δt存储在Dt+Δt第11项、第12项列数据中: 选择合适记录时间点tattack1,关闭背
景流量产生模块,启动sdnSim软件中Flood攻击模块,引入DDoS洪流攻击流量,该模块流量模拟指定数目肉鸡发送大量带有伪造源IP地址的HTTP请求报文,与此同时持续采集数据,并在记录中Dt+Δt中添加标签(Label=Flood)。Dt+Δt中其余列数据项计算方法不变。选择合适记录时间点tattack2,关闭flood攻击模块,启动sdnSim软件中DNS攻击模块,引入DNS反射放大式攻击流量,该模块模拟以下过程:攻击者发送带有伪造源IP地址的DNS请求报文给多台DNS主机,DNS主机响应这些报文,并将响应报文发送给受害者。与此同时持续采集数据,并在记录Dt+Δt中添加标签(Label=DNS)。Dt+Δt中其余列数据项计算方法不变。关闭DNS攻击模块,合并D0,D1,...,Dt+Δt为D,使用数据D进行K-Means聚类计算。对D执行每一列数据执行数据极值标准化操作,
[0087] 对门户网站服务器的实时网络数据瘾采集:采集内容与训练数据的采集过程一致,t时刻采集Dt中的前6项信息,t+Δt时刻采集信息之后结合Dt进行8-12列数据项的计算。第7项为空,不进行设置。设在t+Δt时刻处理得到的数据为D't+Δt。结合训练数据中的极值对实时采集的数据进行数据极值标准化操作。将D't+Δt数据输出给识别模块。
[0088] 步骤2:利用K-Means聚类算法将训练数据训练分类,得出每一类流量的质心用于后续的身份判断,将质心信息传递给识别模块进行身份识别。
[0089] 具体来说:随机取3个初始质心坐标:
[0090] C0={(x10,x20,...,x50),(x11,x21,...,x51),...,(x1k,x2k,...,x5k)}(k=2)。设数据采集模块模块中受攻击的网络主机为Hattack,DDoS攻击流量通过交换机Sattack汇集到Hattack处,在D中提取第2-3列数据项为(Sattack,Hattack)的数据记录,设其为DtoCluster。对DtoCluster中的每一行(y1,y2,...,y5)(y1,y2,...,y5为数据表格8到12列的数据)计算其与初始质心的距离 若其与其中一个质心的距离最小,说明其与其距离最近,那么此点属于这个质心的群。在一个记录时刻的数据全部处理结束之后,更新质心,将质心移动到这个质心的群的中心位置,更新各个质心的坐标。重复以上步骤,直至DtoCluster数据处理完毕且质心的位置不再发生变化,保存各质心信息至CCluster。对CCluster的有效性进行测试验证。在DtoCluster中,分别取Label不同的三个连续片段组成新的测试数据Dtest,对Dtest每一行(y1,y2,...,y5)(y1,y2,...,y5为数据表格8到12列的数据)计算其与质心CCluster的距离若其与其中一个质心的距离最小,说明其与其距离最近,那么此点属于
这个质心的群,比对群类别和Label是否相同,可依据此得到聚类的准确度,如果准确率不高,则将信息反馈给数据采集模块加大训练数据量,继续聚类步骤。聚类结果对测试数据正确率结果达到100%时,将质心信息传递给识别模块进行实时流量信息的识别。
[0091] 步骤3:使用上述步骤得到的质心信息对后续门户网站访问流量(即实时采集信息)判断,得到分类结果,对被归到遭受到DDoS攻击的对象二次验证,再根据当前时刻网络数据对攻击源进行确定,将攻击源信息交给流表下发模块。
[0092] 具体来说:开启多个计算进程,每个进程处理D't+Δt中第2-3项列数据(Si,HDest)相同的数据内容(即内容来自同一个交换机,流表目的地址为同一个主机地址,如果构成D't+Δt数据中有m个交换机,n个目的主机的话,则开启进程为m×n个),进程中对来自不同的源IP地址信息进行数据计算。对数据的每一行(y1,y2,...,y5)(y1,y2,...,y5为数据表格7到11列的数据)计算其与质心CCluster的距离 若其与其中一个质心的距离最
小,输出该质心所指向的数据类别(Normal/Flood/DNS)。若数据表明在交换机Si,主机HDest方向上遭受到了DDoS攻击(Flood/DNS),则在下一个时间点对其进行状态确认,如果连续两个时间点状态相同,将确认在交换机Si,主机HDest方向上遭受到了DDoS攻击(Flood/DNS)。如果发现遭受到DDoS攻击(Flood/DNS),提取当前所使用的D't+Δt中相关数据,根据被判断为攻击的流表信息提取HSource作为攻击者对象。对上步骤中提取的HSource下发OpenFlow阻拦流表,将攻击者主机地址HSource,受害主机地址HDest告知流表下发模块。
[0093] 步骤4:流表下发模块对攻击源下发阻拦OpenFlow流表,并对攻击源进行溯源(如图2中箭头从上至下)对进入网络的攻击流量进行拦截。
[0094] 具体来说:下发模块以主机地址HDest为起点,向其周围节点(SDN交换机)发送OpenFlow阻拦流表(ACTION=drop)。在下一个时刻点,对步骤20中下发的阻拦OpenFlow流表信息进行数据提取,如果发现在某一SDN交换机上面的阻拦OpenFlow流表packet-count字段不为0,则认定该SDN交换机处于此DDoS攻击流量的攻击路径之上,设此SDN交换机地址为S1。删除除了S1上其余SDN交换机上下发的多余OpenFlow阻拦流表。再以SDN交换机S1为起点,重复上述流表下发删除过程,直至最后Sp周围SDN交换机上的OpenFlow阻拦流表packet-count字段全部为0且控制交换机Sp的控制器只有一个,则认为攻击主机Hj不通过周围交换机将包裹传递给交换机Sp,则仅在Sp下发对攻击主机Hj的OpenFlow阻拦流表将可以最快速地拦截攻击流量。若交换机Sp还受其他控制器控制,则将信息(交换机Sp,主机地址Hj(源地址),受害主机地址Hk(目的地址))传递给相关控制器。相关控制器执行溯源流表步骤,直至Sq周围SDN交换机上的OpenFlow阻拦流表packet-count字段全部为0且控制交换机Sq的控制器只有一个,则认为攻击主机Hj不通过周围交换机将包裹传递给交换机Sq,则仅在Sq下发对攻击主机Hj的OpenFlow阻拦流表将可以最快速地拦截攻击流量。
[0095] 本发明在SDN网络环境仿真器sdnSim下,进行了方案部署,并对DDoS攻击数据处理及识别完成了后端操作模块。流表下发使用OpenDayLight控制器外部应用的形式进行了实验,可以很好地实现对DDoS攻击拦截的效果。