一种基于SDN架构的DDoS攻击检测及防护方法和系统与流程

文档序号:15683646发布日期:2018-10-16 20:50阅读:205来源:国知局

本发明涉及一种基于sdn架构的ddos攻击检测及防护方法和系统,属于计算机应用技术领域。



背景技术:

ddos攻击全称为distributeddenail-of-service(分布式拒绝服务)攻击,该类攻击的目的是使目标系统无法响应正常用户的服务请求。最常见的一类ddos攻击为洪泛式ddos攻击,该类攻击所采用的主要手段是:攻击者操控多台机器构造大量的数据包发送给目标系统,耗尽目标系统的系统资源或者带宽资源,从而使正常用户的服务请求无法被处理甚至接收,最终导致目标系统无法响应正常用户的请求。ddos攻击大部分借助于僵尸网络来产生流量发起攻击,由于目前互联网中存在着大量的僵尸网络,发起ddos的攻击的门槛也随之降低。攻击者利用僵尸网络中的中心控制节点控制大量僵尸机执行相同的命令,产生重复无用的流量发往受害机,从而达到攻击目的。

目前针对ddos的攻击检测手段多样,根据其方法使用的数据类型我们将其分为基于数据包的方法和基于流的方法。基于数据包的检测算法根据数据包的包头信息或者数据包内容信息加以一定处理从而达到检测目的。数据包是网络中直接可得的数据格式,数据包包含流量的全部内容,可利用的信息最多,往往能达到较好的检测效果。因此基于数据包的检测算法是目前最常见的检测算法。但是该类型的检测算法使用的数据粒度很细,并且ddos攻击往往包含大量的攻击流量,因此此类算法的复杂度往往较高,检测耗时较长,可能会给系统带来更大的负载,甚至加剧ddos攻击对系统的影响。另一种方法是基于流的检测算法,该类方法采用的数据格式为网络中的“流”(flow)数据。在计算机网络中“流”数据是指一对端点之间双向传输的数据包的集合。因此一条tcp连接中所有的数据包对应着同一条“流”数据,因此其数据类型相较于数据包来说粒度更粗,因此将其作为检测ddos攻击的基本数据格式,具有检测效率高的优点。但是由于其想较于数据包来说较难获取,因此必须选择合适的网络架构从而可以较为简单的获取到“流”数据。

目前针对ddos的防护手段主要分为基于分流和基于过滤的两种。基于分流的方法主要采用大量的提供相同服务的服务器在ddos到来的时候按照某种分配策略将流量分摊到多台服务器上,从而分散每台服务器的压力。虽然此类方法较为简单且有效,但是耗费了大量系统资源去处理无用的攻击流量,必然会造成大量资源浪费。基于过滤的检测算法其目标在于区分攻击流量和正常流量,然后丢弃到攻击流量只处理正常用户的服务请求。采用此类算法可以节省大量的系统资源。但是必须巧妙的制定过滤规则才能使其适用于各种类型的ddos攻击。

为了适应互联网结构和应用的快速变化,sdn架构应运而生。sdn全称software-definednetworking又被称为软件定义网络。其相较于传统互联网架构的最大特点是数控分离。sdn架构由下到上依次由数据平面,控制平面、应用平面组成。控制平面和数据平面之间利用统一的通信接口进行通信,目前主要采用openflow协议。控制平面和应用平面之间的通讯接口按照实际需求定制开发。控制平面主要包含控制器负责运行控制逻辑策略。数据平面主要由多台交换机组成。每台交换机维护着一个流表,每一条表项对应一条“流”,记录着该“流”中的数据包的转发策略——正常转发、通过特定端口转发、丢弃等,并更新该表项的内容例如数据包个数,字节数等等。各交换机互相连接构成转发网且与控制器相连,流表中的转发策略由控制器及其上层应用决定。当新的数据包到达交换机,交换机会首先将其和流表中的表项依次匹配,如匹配成功则按照表项中规定的转发策略进行处理,如无匹配项则将该数据包信息转发给控制平面的控制器,由控制器及上层应用决定转发策略。并将该策略下发给对应数据平面中的所有交换机。由于其控制粒度是基于“流”,因此可以提供“流”信息而不会带来额外负担,极为适用于基于流的ddos攻击检测防护算法。



技术实现要素:

基于上述内容,本发明提供了一种基于sdn架构的ddos攻击检测及防护方法和系统,通过采用sdn架构,本方法可以直接获取互联网中的“流”数据且可快速下发过滤规则,从而达到快速检测和防护的效果。本发明通过系统现有流量使用非监督的聚类算法生成分类模型,因此可适用于不同种类的系统。检测到ddos攻击后,可根据分类结果抽取ddos攻击流量提取过滤规则,从而能防护不同类型的ddos攻击。

为了实现上述目的,本发明采用以下技术方案:

一种基于sdn架构的ddos攻击检测及防护方法,包括:

1)每个lan(局域网)对应一个安全保护单元——safeguardunit,简称sgu,用于ddos攻击的检测和防护。sgu根据现有的非ddos攻击时刻的流量数据集建立分类模型。

2)每隔一定时间(比如t秒),sdn数据平面的所有交换机将自己的流表发送给控制器,由控制器将收到的流表转发给上层应用进行整理,合并相同项等。然后由控制器将处理后的流表项按照目的地址发送给对应lan的sgu。

3)sgu根据收到的流表项,利用所述分类模型判定是否为ddos攻击,如果是则下发过滤规则列表给控制器。

4)控制器收到sgu发来的过滤规则列表,将过滤规则列表发送给其下属交换机,以过滤攻击流量。

进一步,步骤3)如果所述分类模型判定不是ddos攻击,则重复执行步骤1)-2)。

进一步,步骤1)具体包括:

1-1)sgu利用本lan现有的非ddos攻击时刻获取的流量数据集抽取其协议类型、持续时间、数据包平均长度、数据包个数作为特征,使用k-means进行聚类,将其分为k组,并获取k个分类簇的中心点作为分类模型m,并计算每个类中的数据所占比例,作为非ddos时刻的分类分布pn。

1-2)将本lan现有的非ddos攻击时刻获取的流量数据集,以时间t作为窗口,按照时间将其分组,假设结果为g组,计算每一组的d值、pktnum值。以第i组为例,di代表第i组的分类分布pi和pn之间的kl距离(参见公式1),用于刻画该时段内的流量分布和非ddos攻击时刻的流量分布之间的差异,该值越大,说明差异越大。pktnumi代表该时间段内的流量大小,单位为“数据包数目/秒”。

1-3)根据步骤1-2)中的计算结果,计算出三个门限值thresholdd,thresholdp,thresholdip,用于后续ddos攻击的判定和攻击特征的提取。thresholdd用来限制正常情况下的分类分布之间的最大差异,具体计算方法参见公式2。thresholdp用来限制正常情况下的最大流量,具体计算方法参见公式3。thresholdip用来限制正常情况下每个ip的最大发包速率,其取值为每个ip的发包速度的最大值,单位为“数据包个数/秒”,参见公式4,其中pktip表示源地址为参数ip的“流”所含数据包数目,durationip表示源地址为参数ip的“流”的持续时间,nip表示源地址为参数ip的“流”数目。

thresholdd=1.5×max(di:∈[1,g])公式2

thresholdp=10×pn公式3

进一步,步骤3)具体包括:

3-1)sgu依次处理表项,抽取其协议类型、持续时间、数据包平均长度、数据包个数,使用分类模型m将本次接收到的流表项分为k组,计算dt,pktnumt。如果dt,>thresholdd,pktnumt>thresholdp,则将本时段记录为异常时段。并且如果上一时段也为异常时段,则报告ddos攻击事件并执行步骤3-2),否则执行步骤3-7)。如果不满足条件dt,>thresholdd,pktnumt>thresholdp,则执行步骤3-6);

3-2)通过本时段内的流表项,获取分类结果中所含数据最多的簇c,从c中计算每个源ip发送数据包的速率pktrateip,如果pktrateip>thresholdip,则将其加入过滤规则列表。计算完成后,如果过滤规则列表长度为0,则执行步骤3-3),否则执行步骤3-5)。

3-3)过滤规则列表的长度为0说明攻击者使用了源地址欺骗来躲避攻击检测,因此可以利用其他信息来进行过滤。首先使用协议类型和数据包长度作为特征将c的所有流表项分组。

3-4)由于ddos攻击具有流量巨大且由于都是由同样的命令产生的,所以其产生的流量特征也近似。因此分组之后,抽取所含数据最多的组g,及和g所含“流”条目数目是同一数量级的组,并使用其对应的协议类型和数据包长度作为过滤依据。

3-5)报告ddos攻击事件,将生成的过滤规则列表发送给控制器,跳过步骤3-6)和3-7),算法流程结束。

3-6)将本时段流量存储到非ddos攻击时刻获取的流量数据集中,迭代训练分组模型。

3-7)sgu向控制器汇报无攻击发生。

本发明还提供一种实现上面所述方法的基于sdn架构的ddos攻击检测及防护系统,其特征在于,包括sdn的控制单元,sdn的数据单元,部署于局域网中的安全保护单元sgu,以及sgu所负责的终端和服务器;所述sdn的控制单元包含控制器,所述sdn的数据单元包含若干台交换机;所述交换机和所述控制器之间设置专用的安全信道,用于由交换机向控制器传输数据包信息以及控制器分发和转发过滤规则;所述控制器通过专用的通信信道与sgu相连,用于传输流表项及sgu的检测结果和过滤规则。

如上说述,本发明利用网络流量的自相似性,首先使用非ddos攻击时刻的数据集构造分类模型获取分类结果分布,将实时流量按照模型再次进行分类,对比非攻击时刻的分布结果和实时分布结果,如果差距超过一定限度则判定为ddos攻击,并根据分类结果提取攻击流量特征作为过滤规则。

本发明通过采用sdn架构,可以直接获取互联网中的“流”数据且可快速下发过滤规则,从而达到快速检测和防护的效果。本发明利用网络流量的自相似性和非监督学习的聚类算法,可适用于各类服务的安全防护,且可针对各种类型的ddos攻击。在检测ddos攻击的同时还可生成过滤规则,提早过滤攻击流量,减轻ddos攻击对系统的危害。

附图说明

图1本发明的整体系统结构图。

图2本发明的sgu模块结构图。

图3本发明的ddos攻击检测阶段流程图。

图4本发明制定过滤规则流程图。

具体实施方式

下面结合实施例和附图进一步阐述本发明所述的技术方案。

如图1所示为本系统的整体架构。本系统由三部分构成,sdn的控制平面(也可称为控制单元),数据平面(也可称为数据单元)和部署于局域网中的安全保护单元——sgu及其所负责的终端和服务器。其中sdn的控制平面包含一台控制器,数据平面包含若干台交换机,交换机和控制器间有专用的安全信道用于交换机向控制器传输数据包信息及控制器分发转发规则。控制器通过一条专用的通信信道与sgu相连,用于传输流表项及sgu的检测结果和过滤规则。

sgu可由普通计算机或服务器甚至虚拟机实现,sgu和控制器之间有一条单独的通讯通道,且不可被外部设备访问,因此当sgu负责的局域网遭受ddos攻击时不会对sgu造成影响,且不会影响控制器和sgu之间的数据通讯。

如图2所示sgu工作流程主要分为两个阶段,检测和过滤。首先利用非ddos时刻的“流”数据训练分类模型。当实时的“流”数据由sdn的控制器送达时,sgu根据分类模型进行分类结果分布分析,判断是否正在遭受ddos攻击。如果判定为本lan中的终端正在遭受ddos攻击,则根据分类结果制定过滤规则并发往控制器。

本实施例将公开的数据集mitdarpa2000dataset处理成符合要求的“流”格式作为测试数据。根据官网提供的信息抽取15%的非ddos时刻流量用来训练分类模型。首先抽取“流”特征,特征向量如表1所示。将协议类型拆分成3维向量,分别代表tcp,udp,icmp,该“流”属于哪类协议,该特征置位为1,否则置为0。将持续时间单独作为一维向量,值为该流的持续时间,并使用max-min将该维向量进行规范化。将数据包平均长度作为一维向量,并使用max-min将该维向量进行规范化。将该“流”所含数据包个数作为一维向量,并使用max-min将该维向量进行规范化。

表1.特征向量说明

获取特征向量集合之后,取分类数k=4,使用k-means将特征向量集合分为4类并获取中心点位置。同时取时间窗口t=3秒,将mitdarpa2000数据集分为2714个时间窗口,并使用与训练模型相同的数据按照前文步骤1-3)中所述方法计算三个门限值thresholdd,thresholdp,thresholdip。

模型训练完成之后,进入ddos攻击检测阶段,模拟sdn控制器,将除模型训练所使用流量之外的其他窗口内的流量每隔3秒依次发送给sgu。检测算法流程如图3所示,包括以下步骤:

1)抽取该时间窗口内所有“流”对应的特征向量,并使用max-min方式进行均一化;

2)sgu取该时间窗口内的一条“流”数据,根据分类模型的各个中心点,计算中心点和特征向量之间的欧式距离,选择距离最近的中心点所在簇作为本条目的分类结果;

3)判断是否已将该窗口所有的流处理完,如果处理完则执行步骤4),否则执行步骤2);

4)计算分类结果的每一类所占比例,生成分类分布pi;

5)计算pi和pn之间的kl距离di,参见公式1;

6)判断di是否大于thresholdd,如果大于则执行步骤7),否则执行步骤10);

7)计算该时段内的流量大小pktnumi;

8)判断pktnumi是否大于thresholdp,如果大于则执行步骤9),否则执行步骤10);

9)记录该时段异常,并查看上一时间段是否也为异常时段。如果是则报告ddos攻击事件进入过滤阶段,并跳过步骤10),11)算法流程结束,否则执行步骤11);

10)将本时段数据加入到非ddos时刻数据集当中进行迭代训练;

11)报告无ddos攻击,并等待下一窗口内数据。

检测到ddos事件之后,进行过滤规则抽取。根据检测阶段的分类结果可以很轻松的提取出ddos攻击流量及其特征。具体过滤规则制定流程如图4所示,包括以下步骤:

1)根据分类结果从中提取获取分类结果中所含数据最多的簇c;

2)从c中取出一条“流”数据,计算该流的源ip在该时段内的发包速率pktrateip,单位:个/秒;

3)查看pktrateip是否大于thresholdip,如果满足执行步骤4),否则执行步骤5);

4)将该ip加入过滤规则列表中;

5)判断是否已将该窗口所有的流处理完,如果处理完则执行步骤6),否则执行步骤2);

6)判断过滤规则列表中有无新添过滤规则,如果有则执行步骤9),否则执行步骤7);

7)将该时间窗口内的“流”数据根据协议和数据包平均长度分组;

8)选取包含数据最多的组g,以及和g所含数据在同一数量级的组。使用这些组对应的协议和数据包长度作为过滤规则,加入过滤规则列表中;

9)将过滤规则列表发送给sdn控制器。

经由本实验测得,使用本发明可在两个时间窗口(在本例中即为6秒)内发现ddos攻击,并提取出过滤规则,并可以根据过滤规则过滤掉之后攻击时间内99%的攻击流量。

以上便完成了ddos攻击的检测和防护任务。

本发明的其它实施例中,在步骤1-1)训练分类模型m时,可采用多种聚类算法,不仅限于k-means;在步骤1-2)中计算分类分布pi和pn之间距离时不仅限于使用kl距离,可使用多种距离计算方法;在步骤1-3)计算thresholdd,thresholdp,thresholdip时也可根据实际情况选取其他参数,采取其他计算方法。

尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

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