一种基于改进k近邻算法的SDN下DDoS攻击的检测防御系统

文档序号:25991997发布日期:2021-07-23 21:04阅读:122来源:国知局
一种基于改进k近邻算法的SDN下DDoS攻击的检测防御系统

本发明涉及网络安全领域,尤其是涉及一种基于改进k近邻算法的sdn下ddos攻击的检测防御系统。



背景技术:

随着大数据、云计算、移动互联网以及物联网的发展,给人们带来了极大的便利,同时对计算机网络架构也提出了更高的要求。传统网络将控制平面与数据转发耦合在一起,致使设备配置繁杂、使用灵活度低、扩展性差,难以满足科学技术发展的需求。软件定义网络(softwaredefinednetwork,sdn)的提出解决了当前网络技术发展的困境。

sdn是由美国斯坦福大学cleanslate研究组提出的一种新型网络架构,该种网络结构分离了网络设备控制层与数据转发层。sdn架构通常包括三层:应用层、控制层和转发层。在控制层中,通过控制器监控着整个网络,以此部署各种网络协议并分发转发规则。sdn具有可编程性和开放性,实现了网络流量的灵活控制,简化了网络设备的配置过程。但sdn与传统网络一样会遭到分布式拒绝服务(distributeddenialofservice,ddos)攻击。

ddos攻击是威胁互联网安全的重大因素之一,其通过消耗资源来阻断服务,给用户造成不可估量的损失,对企业用户而言更是如此。ddos攻击是以dos攻击为基础的,dos攻击是针对网络协议本身的不足进行攻击,或通过发送大量请求从而耗尽目标资源,致使其无法为用户提供服务的行为。ddos攻击通过伪造大量源ip地址,致使交换机无法找到相应匹配项转而将数据包转发给控制器,使其不断进行处理,直至资源耗尽。而新抵达的正常数据包由于控制器已无多余资源而无法送达,最终导致控制器宕机,sdn架构瘫痪。

针对sdn环境下ddos攻击的检测与防御问题,近年来学者们做了不少研究。主要分为基于信息熵的统计分析方法与基于模型训练的深度学习方法,基于信息熵的统计分析方法主要通过计算源ip地址与目的ip地址之间的信息熵来判别异常,该种方法由于利用的信息较少,因此会导致一定的漏检和误检;而基于模型训练的深度学习方法通过比较待检测数据与训练模型的吻合程度判别异常,该方法消耗的时间资源和存储资源较大。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于改进k近邻算法的sdn下ddos攻击的检测防御系统,可有效快速的识别出ddos攻击。

本发明的目的可以通过以下技术方案来实现:

一种基于改进k近邻算法的sdn下的ddos攻击检测防御系统,包括:

网络控制层:用于收集流表数据,并根据异常检测结果启动警报;

特征统计层:用于获取流表数据并进行特征处理,提取七元组样本特征序列;

异常检测层:基于改进k近邻算法对样本特征序列进行建模分析,判断是否异常。

进一步地,所述的网络控制层包括控制器和警报模块,所述的控制器用于收集流表数据,并以时间间隔t响应特征统计层发送的流表获取请求,所述的警报模块在异常检测层的异常检测结果为异常时启动;

所述的特征统计层包括数据接收模块和特征提取模块,所述的数据接收模块以时间间隔t向控制器发送流表获取请求,所述的特征提取模块用于提取描述流的七元组样本特征序列;

所述的异常检测层包括异常检测模块,所述的异常检测模块用于对进行特征提取后的七元组样本特征序列进行建模分析,判别是否异常。

进一步地,所述的异常检测层判断是否异常具体包括以下步骤:

s1:建立分类训练模块,利用分类训练模块将等比的正常流量和ddos攻击流量进行训练后得到等比的七元组样本点;

s2:运用kd树算法将分类训练模块产生的七元组样本点构建kd树结构;

s3:利用bbf算法在kd树结构中搜索特征统计层中实时生成的七元组样本特征序列的k个最近邻;

s4:根据步骤s33中搜索得到的k个最近邻中正常流量和ddos攻击流量的数量差别,判断占比多的流量种类为该七元组样本特征序列的类别。

更进一步地,步骤s2中,构建kd树具体包括以下步骤:

s21:计算七元组样本点在各自七个维度上的方差,选择方差最大的维度的中位数作为kd树的根节点;

s22:比较其他七元组样本点与根节点在方差最大维度上的值的大小,将小于该值的七元组样本点划分为根节点的左子树,否则划分为根节点的右子树;

s23:对左子树和右子树分别依次按照步骤s21和步骤s22的方法进行递归划分,直至所有七元组样本点均被放置到kd树上,完成kd树的构建。

更进一步地,步骤s3具体包括:

s31:建立一个优先队列,首先将kd树的根节点加入优先队列;

s32:取优先队列中优先级最高的节点,比较该优先级最高的节点与目标点的距离,更新目标点的k近邻;

s33:比较优先级最高的节点与目标点在划分域上值的大小,若目标点的值小,则将优先级最高的节点的右节点按优先级高低插入优先队列,并继续搜索其左节点后计算与目标点的距离,更新目标点的k近邻;否则反之;

s34:重复执行步骤s33,直至搜索至当前搜索节点为叶节点;

s35:重复步骤s32和s33,递归搜索至优先队列为空;

s35:最终输出目标点的k个近邻,依据其k个近邻的正常流量与ddos攻击流量的占比判别目标点是否异常。

更进一步地,步骤s35中,若判别结果为ddos攻击流量占比多,则在网络控制层启用警报,同时网络控制层下发丢弃数据包的指令,直至设定检测周期内判别结果为正常流量占比多后,解封网络控制层下发的丢包指令。

进一步地,所述的七元组样本特征序列依次包括:流表项平均包数apf、流表项平均字节数abf、流表项平均生存时间adf、流表项速率rfe、源ip地址增速gsip、端口增速gsp和交互流比率ppf。

更进一步地,所述的流表项平均包数apf记录的是单位时间内流表项的平均流包数,其表达式为:

其中,fnum表示时间间隔t内流的总数,pnumi表示第i条流中包含的数据包数量;

所述的流表项平均字节数abf记录的是单位时间内流表项的平均字节数,其表达式为:

其中,bnumi表示第i条流中包含的字节数;

所述的流表项平均生存时间adf记录的是单位时间内流生存的平均时长,其表达式为:

其中,stimei表示第i条流生存的时间;

所述的流表项速率rfe记录的是单位时间内流表项的增长速度,其表达式为:

其中,sflow表示流表项的总数,t为特征统计层向网络控制层发送流表获取请求的时间间隔;

所述的源ip地址增速gsip记录的是单位时间内源ip地址的增长速度,其表达式为:

其中,ssip表示源ip地址的个数;

所述的端口增速gsp记录的是单位时间内端口的增长速度,其表达式为:

其中,sports表示端口的总数;

所述的交互流比率ppf记录的是单位时间内具有交互性的流包数占总流包数的比例,其表达式为:

其中,spairfolw表示交互流对数,spackets表示总流包数,所述的交互流指源地址与目的地址交叉相等且使用相同的协议。

更进一步地,步骤s3中计算与目标点的距离为詹森-香农散度,其计算式为:

其中,p和q均表示七元组特征序列,j对应七元组相应的特征维数。

进一步优选地,所述的时间间隔t的取值为3s。

与现有技术相比,本发明具有以下优点:

本发明可有效及时的检测出ddos攻击,相对于基于信息熵的统计分析方法,利用了更多的有效信息,提高了检测准确率;相比较基于模型训练的深度学习方法,减少了传统knn算法搜索k个近邻的时间,提高了检测效率。

附图说明

图1为本发明系统结构和流程示意图;

图2为本发明异常检测模块的流程示意图;

图3为本发明构建kd树的流程示意图;

图4为本发明bbf算法搜索的流程示意图。

1、网络控制层,11、控制器,12、警报模块,2、特征统计层,21、数据接收模块,22、特征提取模块,3、异常检测层,31、异常检测模块。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

实施例

如图1所示,本发明公开了一种基于改进k近邻算法的sdn下ddos攻击的检测防御系统,其特征在于,包括:

网络控制层1:用于收集流表数据,并根据异常检测结果启动警报;

特征统计层2:用于获取流表数据并进行特征处理,提取七元组样本特征序列;

异常检测层3:基于改进k近邻算法对样本特征序列进行建模分析,判断是否异常。

具体地:

网络控制层1包括控制器11和警报模块12,控制器11用于收集流表数据,并以时间间隔t响应特征统计层2发送的流表获取请求,警报模块12在异常检测层3的异常检测结果为异常时启动;

特征统计层2包括数据接收模块21和特征提取模块22,数据接收模块21以时间间隔t向控制器11发送流表获取请求,特征提取模块22用于提取描述流的七元组样本特征序列;

异常检测层3包括异常检测模块31,异常检测模块31用于对进行特征提取后的七元组样本特征序列进行建模分析,判别是否异常。

本实施例中,为避免时间间隔t过大导致漏检以及过小导致控制器过载的问题,设定时间间隔t为3s。

如图2所示,异常检测层3判断是否异常具体包括以下步骤:

s1:建立分类训练模块,利用分类训练模块将等比的正常流量和ddos攻击流量进行训练后得到等比的七元组样本点;

s2:运用kd树算法将分类训练模块产生的七元组样本点构建kd树结构;

s3:利用bbf算法在kd树结构中搜索特征统计层(2)中实时生成的七元组样本特征序列的k个最近邻;

s4:根据步骤s33中搜索得到的k个最近邻中正常流量和ddos攻击流量的数量差别,判断占比多的流量种类为该七元组样本特征序列的类别。

如图3所示,步骤s2中,构建kd树具体包括以下步骤:

s21:计算七元组样本点在各自七个维度上的方差,选择方差最大的维度的中位数作为kd树的根节点;

s22:比较其他七元组样本点与根节点在方差最大维度上的值的大小,将小于该值的七元组样本点划分为根节点的左子树,否则划分为根节点的右子树;

s23:对左子树和右子树分别依次按照步骤s21和步骤s22的方法进行递归划分,直至所有七元组样本点均被放置到kd树上,完成kd树的构建。

如图4所示,步骤s3具体包括:

s31:建立一个优先队列,首先将kd树的根节点加入优先队列;

s32:取优先队列中优先级最高的节点,比较该优先级最高的节点与目标点的距离,更新目标点的k近邻;

s33:比较优先级最高的节点与目标点在划分域上值的大小,若目标点的值小,则将优先级最高的节点的右节点按优先级高低插入优先队列,并继续搜索其左节点后计算与目标点的距离,更新目标点的k近邻;否则反之;

s34:重复执行步骤s33,直至搜索至当前搜索节点为叶节点;

s35:重复步骤s32和s33,递归搜索至优先队列为空;

s35:最终输出目标点的k个近邻,依据其k个近邻的正常流量与ddos攻击流量的占比判别目标点是否异常。

在步骤s35中,若判别结果为ddos攻击流量占比多,则在网络控制层1通过警报模块12启用警报,同时网络控制层1中的控制器11下发丢弃数据包的指令,直至设定检测周期内判别结果为正常流量占比多后,解封控制器11下发的丢包指令。

计算与目标点的距离具体使用詹森-香农散度,其计算式为:

其中,p和q均表示七元组特征序列,j对应七元组相应的特征维数。

本实施例中,七元组样本特征序列依次包括:流表项平均包数apf、流表项平均字节数abf、流表项平均生存时间adf、流表项速率rfe、源ip地址增速gsip、端口增速gsp和交互流比率ppf。

具体地:

流表项平均包数apf记录的是单位时间内流表项的平均流包数,其表达式为:

其中,fnum表示时间间隔t内流的总数,pnumi表示第i条流中包含的数据包数量;

流表项平均字节数abf记录的是单位时间内流表项的平均字节数,其表达式为:

其中,bnumi表示第i条流中包含的字节数;

流表项平均生存时间adf记录的是单位时间内流生存的平均时长,其表达式为:

其中,stimei表示第i条流生存的时间;

流表项速率rfe记录的是单位时间内流表项的增长速度,其表达式为:

其中,sflow表示流表项的总数,t为数据接收模块21向控制器11发送流表获取请求的时间间隔;

源ip地址增速gsip记录的是单位时间内源ip地址的增长速度,其表达式为:

其中,ssip表示源ip地址的个数;

端口增速gsp记录的是单位时间内端口的增长速度,其表达式为:

其中,sports表示端口的总数;

交互流比率ppf记录的是单位时间内具有交互性的流包数占总流包数的比例,其表达式为:

其中,spairfolw表示交互流对数,spackets表示总流包数,交互流指源地址与目的地址交叉相等且使用相同的协议。

本发明系统的具体工作过程具体包括以下步骤:

1)在网络控制层1中,控制器11负责流表数据的收集,并以t为单位时间间隔响应特征统计层2中数据接收模块21发送的流表获取请求;

2)在特征统计层2中,数据接收模块21以t为时间间隔向控制器11发送流表获取请求;特征提取模块22对流表数据进行特征处理,提取描述流的七元组样本特征序列;

3)在异常检测层3中,异常检测模块31对进行特征提取后的数据进行建模分析,判别是否异常;

4)若为异常数据,则启动网络控制层1中的警报模块12。

如图2所示,步骤3)的具体过程为:

31)首先需要建立分类训练模块,该模块的原始数据由等比的正常流量和ddos攻击流量构成,原始数据通过该模块进行训练,得到等比的七元组样本点;

32)运用kd树算法将分类训练模块产生的样本点构建成kd树结构,为搜索待测样本点的k近邻做好准备;

33)利用bbf算法在kd树结构中搜索实时生成的待测七元组样本特征序列的k个最近邻,根据该七元组的k个近邻中正常流量和ddos攻击流量的数量差别,判断占比多的流量种类则为该组数据的类别。

如图3所示,步骤32)构建kd树的具体步骤如下:

321)计算分类训练模块产生的七元组样本点在各自七个维度上的方差,选择方差最大的维度h的中位数作为kd树的根节点kd_root;

322)比较其他七元组样本点与kd_root在维度h上值的大小,将小于该值的七元组划分为kd_root的左子树left_tree,否则划分为右子树right_tree;

323)对left_tree和right_tree依次按照上述步骤1进行递归划分,直至所有七元组样本点均被放置到kd树上,至此kd树构建完成。

如图4所示,步骤33)利用bbf算法搜索待测七元组的k个最近邻的具体步骤如下:

331)建立一个优先队列priority_list,首先将kd_root加入优先队列;

332)取priority_list中优先级最高的节点top_node,比较该点与目标点target_node的距离,更新target_node的k近邻;

333)比较top_node与target_node在划分域上值的大小,若target_node的值小,则将top_node的right_node按优先级高低插入优先队列,继续搜索其left_node,并计算其与target_node的距离,更新target_node的k近邻;否则反之;

334)重复步骤333)搜索至当前搜索节点为叶节点,则重复步骤332)和333)递归搜索至优先队列为空;

335)最终输出target_node的k个近邻,依据其k个近邻正常流量与ddos攻击流量的占比判别target_node是否异常。

最后根据步骤target_node是否为异常进行丢包指令的下发。若判别结果为ddos攻击流量,则启用网络控制层1的警报模块12,同时控制器11下发丢弃数据包指令;直至设定检测周期内的流量判别为正常流量则解封控制器11丢包指令。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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