一种面向SDN控制器的实时DDoS攻击检测系统与方法与流程

文档序号:18081233发布日期:2019-07-06 10:05阅读:365来源:国知局
本公开涉及网络
技术领域
:,特别是涉及一种面向sdn控制器的实时ddos攻击检测系统与方法。
背景技术
::传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,所以大家希望将网络控制与物理网络拓扑分离,从而摆脱硬件对网络架构的限制。这样企业便可以向升级、安装软件一样对网络架构进行修改,满足企业对整个网站架构进行调整、扩容或升级、而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。为了满足这些需求,sdn便应运而生。软件定义网络(softwaredefinednetwork,sdn),是由美国斯坦福大学cleanslate研究组提出的一种新型网络创新架构,核心思想是:希望应用软件可以参与对网络的控制管理,满足上层业务需求,通过自动化业务部署简化网络运维。sdn架构通常分为三层:应用层、转发层和控制层。应用层通过开放的北向接口获取网络信息,采用软件算法优化、网络资源调度,提高全网的使用率和网络质量,同时将虚拟网络配置的能力开放给用户;集中部署的控制层可完成拓扑管理、资源统计、路由计算、配置下发等功能,获得全网资源使用情况,隔离不同用户的虚拟网络;转发层实现分组交换功能。分层的架构满足用户按需调整网络的需求,实现网络服务虚拟化;提高了全网资源使用率;加速了网络创新。发明人在研究中发现,随着sdn的广泛应用,sdn的安全问题引起了广泛的关注。sdn的集中控制特性极易引起单点失效,从而招致分布式拒绝服务(distributeddenialofservice,ddos)攻击。sdn网络中可以利用数据包与流表不匹配,openflow交换机向openflow控制器发送packet_in消息的特点,对控制器进行ddos攻击,连续不断地上传packet_in消息以至于超出控制器的处理能力,无法处理正常用户的数据包,造成网络拥塞。对于sdn控制器而言,ddos攻击依然是最为简单行之有效的攻击方式。因此,需要针对sdn的架构特征,需要不断研究和设计新型的ddos检测与防范技术。技术实现要素:本说明书实施方式的目的是提供一种面向sdn控制器的实时ddos攻击检测方法,实现实时ddos攻击的检测,利用本方法可以高效地实现sdn环境中ddos攻击流量检测并降低系统的误报率。本说明书实施方式提供一种面向sdn控制器的实时ddos攻击检测方法,通过以下技术方案实现:包括:解析sdn控制器收集的数据包,使用熵值判断检测流是否异常,若存在异常,进行异常警告;通过openflow协议来对流表信息进行收集:控制器通过设置向openflow交换机发送相应的报文来采集流表;每个流表由多个流表项组成,通过流表项信息分析单位时间内网络流量分布特性的变化,从而检测攻击,提取流表项相关信息并转换为有关ddos攻击的一维特征信息;采用深度学习算法训练数据集生成cnn-bilstm模型对实时流量进行分类,实现实时ddos攻击的检测。本说明书实施方式提供一种面向sdn控制器的实时ddos攻击检测系统,通过以下技术方案实现:包括:异常检测模块,被配置为:解析sdn控制器收集的数据包,使用熵值判断检测流是否异常,若存在异常,进行异常警告;流表收集模块,被配置为:通过openflow协议来对流表信息进行收集:控制器通过设置向openflow交换机发送相应的报文来采集流表;特征提取模块,被配置为:每个流表由多个流表项组成,通过流表项信息分析单位时间内网络流量分布特性的变化,从而检测攻击,提取流表项相关信息并转换为有关ddos攻击的一维特征信息;cnn-bilstm攻击检测模块,被配置为:采用深度学习算法训练数据集生成cnn-bilstm模型对实时流量进行分类,实现实时ddos攻击的检测。与现有技术相比,本公开的有益效果是:本公开首先使用熵值检测流是否异常,发出异常警告后,获取openflow交换机的流表项,分析sdn环境下ddos攻击特征,提取出与攻击相关重要特征;通过分析相关特征值的变化,采用cnn-bilstm神经网络算法训练数据集生成cnn-bilstm模型对实时流量进行分类,实现实时ddos攻击的检测,利用本方法可以高效地实现sdn环境中ddos攻击流量检测并降低系统的误报率。附图说明构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。图1为本公开实施例子的一种面向sdn控制器的实时ddos攻击检测系统的框图;图2为本公开实施例子的cnn模型图;图3为本公开实施例子的bilstm模型图;图4为本公开实施例子的基于cnn-bilstm的ddos攻击检测方法流程图。具体实施方式应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属
技术领域
:的普通技术人员通常理解的相同含义。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。软件定义网络(sdn,softwaredefinednetwork)作为一种新兴的网络架构,最主要特征就是数据转发和控制分离,在网络架构中增加一个控制器,由这个控制器来实现网络集中控制。对于sdn控制器而言,ddos攻击依然是最为简单且行之有效的攻击方式。针对这个问题,提出了一种面向sdn控制器的实时ddos检测攻击方法。该方法首先使用熵值检测流是否异常,发出异常警告后,获取openflow交换机的流表项,分析sdn环境下ddos攻击特征,提取出与攻击相关重要特征;通过分析相关特征值的变化,采用cnn-bilstm神经网络算法训练数据集生成cnn-bilstm模型对实时流量进行分类,实现实时ddos攻击的检测,利用本方法可以高效地实现sdn环境中ddos攻击流量检测并降低系统的误报率。实施例子一该实施例公开了一种面向sdn控制器的实时ddos攻击检测系统,具体系统框图参见附图1所示,包括异常检测模块、流表收集模块、特征提取模块、cnn-bilstm攻击检测模块。在该实施例子中,异常检测模块:通过解析控制器收集的packet_in包,检测窗口内数据包的目的ip的熵。每个窗口50个数据包,设定一个阈值c,连续检测5个窗口,共检测250个数据包,如果连续5个窗口的熵值下降到该阈值以下,则认为网络流量存在异常,发出异常警报。在该实施例子中,将熵用于ddos检测的主要原因是它能够测量到达网络数据包的随机性,随机性越高熵值越高。一般正常网络情况下主机之间通信的机会大致均等,当发生ddos攻击时,往往是多对一攻击,数台傀儡主机将攻击数据包发送到受攻击的目的主机,大量相同的目的地址的数据包降低了网络随机性。因此目的ip地址的熵将降到最低。若在一个窗口t内ip地址xi出现次数为yi次,窗口内每一个目的ip地址出现的概率:pi=yi/n。renyi熵的计算公式如下:其中,n表示一个窗口大小t内数据包的数量,q是可去任意非1正实数的一个参数。renyi熵的特点是高概率事件会对熵值产生更大的影响,其程度和参数q的大小有关;当每个ip地址只出现一次时,熵值将取得其最大值;通常ddos攻击的目的主机只有一个,则大量的数据包将被送到该目的主机,因此目的ip地址的熵降到最低。使用广义熵有利于更好地选择熵值,清晰高效地区分攻击和正常流量,增强检测能力。在一实施例中,异常检测模块步骤:1、统计到达的packet_in数据包的个数,每个窗口50个数据包;2、计算窗口中每一个目的ip地址出现的概率,若ip地址xi出现次数为yi次,则pi=yi/50;3、计算窗口中50个数据包的目的ip地址熵值4、如果连续5次计算出的熵值均低于阈值,则警告检测到ddos攻击,开始调用流表采集模块。在该实施例子中,关于流表采集模块:该模块主要通过openflow协议来对流表信息进行收集,流表是数据流转发的依据,当发生异常警报后,控制器通过设置会向openflow交换机发送ofp-flow-stats-request报文来采集流表,间隔太长会使网络在未发现攻击前就瘫痪,间隔太小会增加控制器的压力,设置采集的时间间隔为1s,当发生异常警报后流表采集模块将采集来的流表通过特征提取模块对流特征进行提取,之后通过攻击检测模块实施检测。在该实施例子中,关于特征提取模块:根据openflow协议,交换机的流表是数据包的转发依据,每个流表由多个流表项组成,流表项是数据转发的规则,因此可以通过流表项信息分析单位时间内网络流量分布特性的变化,从而检测攻击,提取流表项相关信息并转换为有关ddos攻击的一维特征信息。包括以下12个特征:流量平均持续时间(adf)、流量平均包数(apf)、流量平均比特数(abf)、端口增速(gp)、源ip地址增速(gip)、流表项增速(gfe)、单流增长速度(gsf)、流表匹配成功率(rfm)、对流百分比(ppf)、源ip地址熵(esa)、目的ip地址熵(eda)、协议熵(ept)。流量平均持续时间(averageofdurationperflow,adf):ddos攻击发生时,不同ip对应的持续时间较短,其中,n表示每个周期t内采集流表的数量,di表示i流的持续时间。流量平均包数(averageofpacketsperflow,apf):ddos攻击通过源ip欺骗,产生大量的、伪装不同ip的数据分组,且不同ip对应的数据分组数量较小,即每个流大约有3个数据包。其中,n表示每个周期t内采集流表的数量,pi表示i流中的数据包数量。流量平均比特数(averageofbytesperflow,abf):与定义流量平均包数相似,ddos攻击的另一个特点是不同ip对应的数据分组的比特数较小。其中,n表示每个周期t内采集流表的数量,bi表示i流中的数据分组比特数。端口增速(growthofport,gp):ddos攻击时会随机生成端口号,所以攻击发生时端口的增速会明显增大。其中,sport表示每个周期t内采集到的流表中不同端口号的流表数量,t为采样的时间间隔。源ip地址增速(growthofsourceip,gip):ddos攻击发生时,会产生ip欺骗,随机伪造产生的大量的攻击流发送数据包,其源ip地址快速增加。其中,sip-src表示每个周期t内采集到的流表中不同源ip地址的流表数量。流表项增速(growthofflowentries,gfe):ddos攻击发生时控制器会快速产生大量的流表信息。其中,sflow为流表项的总数。单流增长速度(growthofsingleflow,gsf):ddos攻击常以ip欺骗的方式发起攻击,他们使用假ip地址发送数据分组,该特征增加了单流进入网络的数量。其中,fsingle表示在时间间隔t内采集的流表中单流的数量。流表匹配成功率(therateofflowtablematching,rfm):发生攻击时,因为当有大量的新流产生存在,其匹配成功率将急剧下降。其中,mpacket为匹配成功的数据包数量,spacket为数据包总数。对比流比例(percentageofpair-flow,ppf):攻击发生时,网络中具有一定的交互性的对流比数量会减少。其中,fpair为网络中交互流的数量,fsum为流的总数。源ip地址熵(entropyofsourceipaddresses,esa):ddos攻击会产生大量的伪造的源ip地址,针对受攻击的主机为目的地址的攻击流,其源ip地址相对分散,随机性高,所以攻击流量的srcip的熵值比正常的srcip熵值大。源ip地址熵的公式为:其中,sipi为每个源ip地址出现的概率。目的ip地址熵(entropyofsourceipaddresses,eda):ddos攻击流量的dstip较正常流量相比更加的集中,随机性低,所以攻击流量的dstip的熵值比正常的dstip熵值低。目的ip地址熵的公式为:其中,dipi为每个目的ip地址出现的概率。协议熵(entropyofprotocoltype,ept):在ddod攻击中的流量协议类型通常是相同的,攻击流量越多,流量协议的随机性就越小,所以攻击流量协议的熵比正常流量的熵小。协议熵的公式为:其中,pti为每种协议出现的概率。在该实施例中,关于cnn-bilstm攻击检测模块:因为正常流量与攻击流量的特征是由区别的,所以攻击检测可以看作是一种分类问题,流表采集模块收集流表信息,特征提取模块从收集的流表信息提取的特征值作为训练样本对攻击检测模块进行训练,训练完成后可以进行ddos攻击检测,区分流量正常与否。在一实施例中,流表处理步骤为:1、实时采集流表,设定采集流表的时间间隔为1s;2、提取流表项相关信息并转换为有关ddos攻击的一维特征信息,包括以下12个特征,流量平均持续时间(adf)、流量平均包数(apf)、流量平均比特数(abf)、端口增速(gp)、源ip地址增速(gip)、流表项增速(gfe)、单流增长速度(gsf)、流表匹配成功率(rfm)、对流百分比(ppf)、源ip地址熵(esa)、目的ip地址熵(eda)、协议熵(ept);cnn-bilstm攻击检测模块使用的检测算法是基于cnn-bilstm神经网络。实施例子二该实施例公开了一种面向sdn控制器的实时ddos攻击检测方法,为基于cnn-bilstm的ddos攻击检测方法,流程如图4所示:1、将从流表提取特征模块获取的流表特征分别作为卷积神经网络和bilstm神经网络的输入,卷积神经网络的卷积层用不同的滤波器对记录序列矩阵进行卷积操作,提取局部特征;利用bilstm模型提取流量的历史信息和未来信息,提取流量的全局特征。2、卷积神经网络的池化层对卷积层提取的局部特征进行最大池化操作,提取关键特征,舍弃冗余特征,生成固定维度的特征向量,将池化操作输出的特征拼接起来,作为第一层全连接层输入特征的一部分。3、使用tensorflow框架中的concat()方法对cnn和bilstm输出的特征进行融合,融合代码为:output=tf.concat([output_cnn,output_blstm],axis=1)。4、将融合后的特征保存在output中,将其作为第一个全连接层的输入。5、再连接第二个全连接层,在第二个全连接层之后引入dropout机制,每次迭代放弃部分训练好的参数,使权值更新不再依赖部分固有特征,防止过拟合。6、最后输入到softmax分类器输出分类结果。softmax回归中将x分类为类别j的概率为:若检测结果是攻击,控制器下发指令至防火墙,更改防火墙配置,减少攻击流量,同时下发流表更改指令至openflow交换机,更改流表匹配项配置,并通过meter表控制流表速率,丢弃攻击数据包。在一实施例中,cnn基本网络单元包括:卷积层:卷积运算是两个向量之间的运算,对于一个输入向量x,用另一个向量f在向量x上滑动,每次滑动做一次点乘运算,所有步骤的输出作为一次卷积的输出c。池化层:该层通常仅仅跟在卷积层后面,用于减少卷积层得出的特征,使用一个窗口在特征图上移动,取窗口中最大的值或者去平均值,这两种做法分别称为最大池化和平均池化。全连接层:全连接层的每个神经元都与上一层的神经元连接,用来把前面提取到的特征综合起来,并把输出转化为一个一维向量用来分类,这一层可以学习更多的非线性依赖关系。softmax层:最后一层的输出传给softmax层以计算每一分类的概率分类。在一实施例子中,基于cnn的ddos攻击检测方法,工作流程分为以下几步:第一步:将特征流量向量输入到卷积神经网络的输入层,随之卷积层对其进行卷积操作,精确提取每条记录的特征信息,抽象出高维度特征。第二步:pooling层将小领域内的特征点进行整合处理,从而得到新的特征。池化操作主要用于加快网络训练速度。常用的池化方法有平均池化和最大池化。我们采用的是最大池化对邻域内特征点取最大值。第三步:通过全连接层输入到softmax分类器中对流量进行分类。在又一实施例中,基于bilstm的ddos攻击检测方法,循环神经网络(rnn)擅长处理序列数据,但该模型在训练过程中会出现梯度消失或梯度爆炸问题,以及长期依赖的问题。lstm模型中的长短期记忆模块可以解决rnn引发的长期依赖问题,长短期记忆模块是在rnn模型中的隐层增加了三个门(遗忘门、输入门、输出门)和一个细胞状态更新。遗忘门(forgetgate)对上一层细胞状态进行筛选,将有用信息留下,遗忘无用信息。公式为:ft=σ(wf·[ht-1,xt]+bf)其中,wf和bf分别是遗忘门的权重和偏置,ht-1为上层隐藏状,σ为sigmoid激活函数。输入门(inputgate)对信息进行重要性判断,将重要信息送入细胞状态更新处,完成对细胞状态的更新。该过程由两部分组成,一是利用sigmoid函数来确定需加入细胞状态的新信息。二是利用tanh函数生成一新的候选向量。公式如下:其中,wi和bi为输入门的权重和偏置,wc和bc是细胞状态的权重和偏置。经过以上处理,便将原细胞状态ct-1更新为当前细胞状态ct。公式如下:其中,ft*ct-1表示需删除信息,表示新添信息。输出门对该层细胞状态进行输出控制,决定哪些细胞状态输入到下一层细胞。公式为:其中,wo和bo为输出门的权重和偏置。bilstm模型结构:虽然lstm解决了rnn会发生梯度消失或者爆炸的问题,但是lstm只能学习当前流量之前的信息,不能利用当前流量之后的信息,因为ddos攻击会持续一段时间,不仅与之前的历史信息有关,跟之后的信息也有着密切的关系,所以利用bilstm代替lstm,既能克服了梯度消失或者梯度爆炸的问题,又能充分考虑当前流量的前后信息。bilstm模型是由两个lstm网络结构组成,一个正向lstm,一个反向lstm。其中正向lstm网络结构的输入信息为正序输入,反向lstm网络结构的输入为反序输入,最后将正向lstm网络结构的输出向量与反向lstm网络结构的输出的向量进行合并。合并之后的向量便含有来自上下文的信息。利用bilstm模型能够更好的考虑到序列数据中每个属性点的前后属性对其影响。在又一实施例子中,基于cnn-bilstm的ddos攻击检测方法。为了优化ddos攻击检测系统,提高ddos攻击检测的准确性和降低系统误报率,利用cnn-bilstm模型进行特征提取;为了提取更全面的局部特征,利用cnn提取局部特征;然后为了解决各属性特征点的前、后特征对该属性特征点的影响,采用bilstm对长距离依赖进行全局特征提取;使用concat()方法对cnn和bilstm输出的特征进行融合,经过全连接层,通过softmax分类器获得分类结果,从而提高了准确率,降低了误报率。cnn-bilstm神经网络:cnn神经网络:卷积层用大小为m×k的滤波器对特征流量矩阵s执行卷积操作,根据公式产生局部特征ci:特征流量矩阵的形式为:s={r1,r2,…,rn}ci=f(f·r(i:i+m-1)+bd)f(x)=max(0,x)其中,f代表m×k的滤波器,f通过relu进行非线性操作的函数,r(i:i+m-1)代表s中从i到i+m-1共m行向量,bd为偏置。随着滤波器依靠步长为1从上往下进行滑动,走过整个s,最终得到局部特征向量集合为c:c={c1,c2,…,cn-m+1}池化层:对卷积操作得到的局部特征采用最大池化的方法提取值最大的特征代替整个局部特征,通过池化操作大大降低特征向量的大小:di=max(c)最后将所有池化后得到的特征在全连接层进行组合输出向量u:u={d1,d2,…,dn}cnn模型图如图2所示:1、将n个一维12元流量特征向量映射为一个n*12的记录序列矩阵s={r1,r2,…,rn},其中,矩阵的行是一维流量特征的个数n(以n=5作为参考值,数值太大会使网络在未发现攻击前就瘫痪,数值太小会增加控制器的压力,),矩阵的列是通过流表项提取的12个流表特征值。2、卷积层通过取j种不同规格的滤波器,规格分别为m1*12、m2*12、…、mj*12滤波器(选取3*12、4*12、5*12三个滤波器作为参考),不同规格的滤波器的数目均为a(a=3作为参考值)个,步长stride大小设置为1,padding为valid,进行卷积运算,产生特征向量c;通过卷积操作来提取流量的局部特征。3、池化层进行最大池化操作,提取关键特征,舍弃冗余特征,生成固定维度的特征向量。4、将池化操作输出的特征拼接起来,作为第一层全连接层输入特征的一部分。在具体例子中,bilstm神经网络:为了捕获长距离依赖特征,将s输入到bilstm模型中,该模型由两个方向上的lstm模块连接而成,具有多个共享权值。在每个时间步上,bilstm模块的输出将由遗忘门(ft)、输入门(it)、输出门(ot)和一个细胞状态更新共同进行控制,每个门都由前一模块的输出ht-1和当前时刻的输入xt表示,三个门共同工作来完成对属性信息的选择、遗忘和细胞状态的更新。在时间步t上,用bilstm模块的正向部分对xt进行特征提取,公式如下:在时间步上,用bilstm模块的反向部分对xt进行特征提取,公式如下:其中,σ是sigmoid激活函数;tanh为双曲正切函数;*为元素乘运算,it为对输入信息进行选择操作,对信息的输入过程进行控制,ft是对前一模块需要被遗忘的信息进行遗忘操作,对信息遗忘过程进行控制。ct用来判断哪些信息应该存储到当前细胞状态,完成对信息的存储进行控制。ot则是输出门对输出信息进行选择,对输出的信息进行控制。在时间步上,bilstm层最终输出的特征向量pt为:pt=[正向lstm,反向lstm];bilstm模型图如图3所示。但是在某些情况下,正常的网络操作也会导致熵值比正常值低,所以这种方法不能确定网络中是否有攻击流。所以当异常检测模块检测到异常时就发出警告,调用流表采集模块,为进一步的ddos攻击检测做准备。实施例子三该实施例子公开了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现实施例子二的一种面向sdn控制器的实时ddos攻击检测方法的步骤。实施例子四该实施例子公开了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现实施例子二的一种面向sdn控制器的实时ddos攻击检测方法的步骤。本公开实施例子技术方案的创新点在于:1、流量特征的选取。选择流量平均持续时间(adf)、流量平均包数(apf)、流量平均比特数(abf)、端口增速(gp)、源ip地址增速(gip)、流表项增速(gfe)、单流增长速度(gsf)、流表匹配成功率(rfm)、对流百分比(ppf)、源ip地址熵(esa)、目的ip地址熵(eda)、协议熵(ept)12个流量特征经过预处理之后作为cnn-bilstm的输入,从而检测攻击流。2、cnn-bilstm模型的构建。利用cnn提取局部平行特征,给出了在cnn神经网络中具体的工作流程;然后为了解决各属性特征点的前、后特征对该属性特征点的影响,采用bilstm对长距离依赖进行特征提取;使用concat()方法对从cnn和bilstm神经网络分别输出的特征进行融合,经过全连接层,通过softmax分类器获得分类结果。3、ddos攻击检测系统的设计。提出一种sdn控制器的实时ddos攻击检测系统,该系统包括异常检测模块、流表收集模块、特征提取模块以及cnn-bilstm攻击检测模块。异常检测模块检测窗口内数据包的目的ip的熵,当发生异常警报后流表采集模块将采集来的流表通过特征提取模块对流特征进行提取,之后通过cnn-bilstm攻击检测模块实施ddos攻击检测。可以理解的是,在本说明书的描述中,参考术语“一实施例”、“另一实施例”、“其他实施例”、或“第一实施例~第n实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1