一种SDN中基于信任值的自适应启动的ddos防御方法和系统与流程

文档序号:11156657阅读:312来源:国知局
一种SDN中基于信任值的自适应启动的ddos防御方法和系统与制造工艺

本发明属于下一代网络安全技术领域,涉及一种SDN中基于信任值的自适应启动的ddos防御方法和系统。



背景技术:

作为影响检测效率和系统性能的重要因素,针对防御系统的启动机制研究的很少。目前,大多数的ddos防御系统采用的是基于周期性检查流表项的机制去启动ddos的检测。大多数方法中,控制器对流表项的收集周期性收集。周期性的缺点很明显,周期过长,会导致检测ddos不及时,周期过短,会导致控制器负荷增大。不同于以上方法,本发明提出了一种基于packet_in到达速率的自适应启动机制。

目前,大多数的研究集中在ddos攻击的检测方面。主要有两种,一种是基于包的检测,另一种是基于流表的检测。通过比较基于包的检测和基于流表的检测,我们发现基于流表的检测更好。因为基于包的检测会在没有ddos攻击发生的情况下,依然收集包的信息去判断此包是否为ddos攻击包,这样会使控制器花费很多的时间和资源去处理大量的正常的信息。作为对比,基于流表的ddos检测如果设计一个合适的启动机制,当没有ddos攻击时,检测机制就不会启动,所以可以极大的减少控制器的负荷。另外,本发明采用的是神经网络的分类检测方法,神经网络算法的特点是有一定的理论保证、适用性强且是一种无模型的计算机学习方法。将神经网络应用于ddos检测,可以提升检测的准确性,另外,改变训练数据,可以检测出不同种类的ddos攻击。

现今,国内外主要的恢复方法是改变流表的处理指令,或者是添加一个新的流表。例如将ip地址和端口号匹配成功的包的流表项处理指令被设置为丢弃或者采用一个速率限制和黑名单的方式,本发明在以上方法的基础上提出了基于信任值的队列管理的方案,可以灵活的处理ddos攻击。



技术实现要素:

本发明目的在于提供一种基于信任值自适应启动的ddos检测与防御方法,该方法利用人工神经网络作为异常流量的分类检测方法,在保障检测的准确性的前提下,确保不占用控制器大量的资源,采用一种自适应的启动机制。首先,控制器终端计数器计算packet_in的到达速率,根据其到达速率,决定是否启用人工神经网络检测流量。当检测完成后,控制器根据其信任值修改packet_in在队列中的位置,从而达到防御ddos,提升服务质量的目的。

为达到上述目的,本发明采用的技术方案是一种SDN中基于信任值自适应启动的ddos防御方法,包括如下步骤:

步骤1:交换机接收到一个无法匹配的包,发送packet_in数据包至控制器;

步骤2:在SDN控制器中部署一个计数器,该计数器预先设定packet_in数量值,每当到达的packet_in数量等于该设定值时,计算此时间段packet_in的到达速率;

步骤3:判断packe_in到达速率是否异常,具体做法如下:建立一种数据结构,将步骤1发来的packet_in到达速率作为一个节点顺序存储在该数据结构中,每个节点设立生存周期范围为10-20秒,若两个节点的速率值差小于一个值,则这两个节点互为相近节点,对于每一个新到的节点,更新其前向相近节点数量;相对的,也要更新之前到达节点的后继相近节点数量,若一个节点的前向相近节点数量与后继相近节点数量之和小于一个值,即该节点相近节点数量低于正常值,则判断该节点可疑,执行步骤4;否则,执行步骤5;

步骤4:利用反向神经网络分类器对packet_in对应的交换机上的流量进行精确检测,建立一个中间层为50*50的神经网络,首先,利用网络上的ddos攻击数据对该分类器进行训练,提取攻击数据流表的头域信息,计算出六个特征值:apf即每个流的平均包的数量、abf即每个流的平均比特量、adf即每个流的平均持续时间、ppf即每个流成对包的比例、gsf即每个流单一包的增长率、gdp即每个流不同端口的增长率,将上述六个特征值作为分类器的输入,进行训练,然后利用训练完成的神经网络,将步骤3中可疑packet_in对应交换机上的流量的六个特征作为输入值,若神经网络输出值介于0.5和1之间,则判定该流量为ddos攻击;

步骤5:建立用户信任值数据库,用来存储每个用户的信任值,若精确检测模块检测出是ddos攻击,则减小用户信任值,若检测出不是ddos攻击,则查看控制器状态,若控制器正在遭受攻击也减小其信任值;否则增加其信任值,最后,根据信任值,重新排列packet_in在队列中的位置。

进一步,上述步骤2中,根据packet_in包到达速率,自适应地启动ddos精确检测,具体做法如下:

2-1:在控制器上部署一个计数器,用于计算packet_in的到达数量;

2-2:packet_in计数器的所述设定值为2000,每2000个packet_in包到达时,则计算此时间段packet_in的到达速率。

上述步骤3中,判断packet_in到达速率可疑的具体步骤如下:

3-1:设步骤2计算出的packet_in到达速率为velocity,对于每个新到velocity,建立一个新的节点ncurrent.obj,将该节点与数据库中的每个节点进行比较,若两节点的速率之差小于150,则将该新到节点的前向相近节点数量加1,同时,将对应的前向相近节点的后继相近节点数量加1,并将ncurrent.obj存储至数据库;

3-2:每隔一段时间,范围为5-20秒检查一次数据库中的节点,对于数据库中的每一个节点,prec_neighs为该节点前向相近节点的数量,succ_neighs为该节点后继相近节点的数量,若(prec_neighs+succ_neighs)<25,则判定该节点可疑。

又进一步,上述步骤3-2中所述一段时间优选为10秒。

上述步骤4中,所述神经网络一共四层,输入层为第0层,50*50的中间层为第1、2两层,输出层为第3层,输出神经元为第2层神经元输出的算数平均值,即第2层到第3层权值都为1且处理函数为求平均函数,第l层第n个神经元的输出为中间层神经元处理函数,即每一个神经元的输出都要经过此函数的处理,保证输出在0到1之间,为从第l-1层第k个神经元到第l层第n个神经元的权值,为第l-1层第k个神经元的输入,神经网络可以准确的检测出ddos攻击,具体步骤如下:

步骤4-1:训练阶段:首先给出神经网络训练的初始数据,学习速率参数η=0.5、目标值tn=0.75,接着运行一次神经网络获得各层的输出,根据实际输出值和目标输出值的比较,得出输出误差,然后判断该误差是否达到了预期误差,如果在预期误差之内,则退出训练;否则继续调整学习速率和权值,继续运行神经网络进行训练,直到误差小于预期的误差,具体做法如下:

步骤4-1-1:根据网络上数据库中的攻击流量,提取六个流表特征X1X2X3X4X5X6,作为神经网络的输入,所述六个特征值的计算方法如下:

apf计算方法:

将所有的流按每个流所含包的数量升序排列

其中函数f(x)为第x个流的包的数量,n为所有流的数量,

abf计算方法:与1式相同,但是此时的f(x)代表每个包的比特量,

adf计算方法:与1式相同,但是此时的f(x)代表每个流的持续时间,

ppf计算方法:

其中若两个流的源ip相同,目的ip相同且两个流的通信协议相同,则成这两个流为一对pairflow,num_pairflows为所有流中pairflow数量,num_flows为所有流的数量,

interval为固定时间间隔,控制器每隔该固定时间间隔提取一次流信息,

gsf计算方法:

num_ports为流中所有不同的源端口和目的端口的数量,

gdp计算方法:

步骤4-1-2:对误差函数求偏导,化简得为第2层第n个神经元的输出,tn为第2层第n个神经元输出的目标值,统一取值0.75,然后更新第1层到第2层的所有权值其中,Wkn为第1层第k个神经元到第2层第n个神经元的权值,对于输入层到第1层,根据W′ik=Wik-ηXiδk,更新权值,其中,Wik为第0层第i个神经元到第1层第k的神经元的权值,这里i的取值范围是1-6,即6个输入,

步骤4-1-3:重复以上步骤直至E≤0.001,分类器训练完成;

步骤4-2:收集可疑交换机流表信息,在交换机和控制器建立连接的初始阶段,每一个交换机都会被控制器分配一个id,所以控制器很容易就获得交换机中的流表信息;

步骤4-3:根据流表中的每一条流匹配域中的信息,提取异常交换机上流的六个特征值作为神经网络的输入;

步骤4-4:若神经网络输出在0.5和1之间,则该流量为ddos攻击,控制器修改交换机流表对相应用户随后发来的包操作都为丢弃,执行步骤5。

上述步骤5中,改变控制器对于用户请求默认的先到先服务的方式,根据用户信任值的大小处理服务请求,其中,信任值的计算方法考虑到精确检测模块的检测结果和控制器是否正在遭受攻击两方面因素,具体步骤如下:

步骤5-1:当一个packet_in数据包到达时,在信任值数据库中查找出相应的用户i的信任值,若无此用户信任值,则令tvi=1;

步骤5-2:若精确检测模块检测出是ddos攻击,则令tvi=α*tvi-1,若检测出不是ddos攻击,则查看控制器状态,若控制器正在遭受攻击,则令tvi=α*tvi-1,否则,令tvi=α*tvi+1,α为信任值改变率,在0-1之间;tvi为用户i的信任值;

步骤5-3:若tvi<Tmin,则将发送者i列入黑名单,并通知交换机,Tmin为设定的用户最低信任值,范围为1-5,低于此信任值的用户将被列入黑名单;

步骤5-4:将缓冲区所有队列编号,队列首部编号为Nq,尾部编号为1,所有队列数量为Nq,在每一个packet_in到达缓冲区的时候,令其队列序号qi越大,优先级越高;

步骤5-5:Lj为第j个缓冲队列包的数量,若则将packet_in加入第i队列的第i的序位,并令Li=Li+1,Lmax为所有队列包数量上限,若若qi≠1,则拒绝队列尾部,即队列序号为1中的一个请求包,并令L1=L1-1,然后将此packet_in请求加入第qi个队列,并令若qi=1,则拒绝此请求包。

作为优选,上述用户最低信任值为3。

本发明还进一步提出一种可以实施上述SDN中基于信任值的自适应启动的ddos防御方法的系统,该系统包含启动模块、精确检测模块、队列管理模块,启动模块作为精确检测模块的启动机制,自适应地决定是否启动精确检测模块,当启动模块检测出Packet_in到达速率异常时,则启动精确检测模块,精确检测模块检测流量是否为ddos攻击,队列管理模块根据精确检测模块的检测结果,调整用户的信任值,改变Packet_in请求的队列位置,从而解决针对SDN控制器的ddos攻击。

与现有技术相比,本发明的有益效果在于:

1.本发明中提出的防御系统是基于SDN的,与传统网络相比,SDN控制层和数据层分离,是一种新型的网络。本发明该充分利用SDN的特性:数据层的流表信息,控制层控制器对整个网络的控制等,有效防御SDN中ddos攻击。

2.本发明提出了一种自适应的启动方案,根据packet_in速率的大小来决定是否启动精确检测模块。该方案在保证检测准确性的同时减少对控制器的资源占用。

3.本发明采用反向神经网络的方法检测流量,反向神经网络可以发掘输入信息特征之间隐藏的关系,较传统方案有更高检测的准确性,并且反向神经网络通过不同的训练数据,可以识别不同类型的攻击,较传统方案有更高的可移植性。

4.本发明对控制器缓冲区的服务方式进行改进,以请求的信任值高低来决定服务的优先级,而不是默认的“先到先服务”的服务方式。保证合法用户的请求优先得到服务,从而消除ddos攻击产生的影响。

附图说明

图1为一种基于信任值自适应启动的ddos防御系统与方法图。

图2为精确检测模块反向神经网络图。

图3为本发明系统具体实施场景图。

具体实施方式

现结合说明书附图对本发明的具体实施方式作进一步详细说明。

本发明针对的问题是要考虑到检测的准确性,确保不产生误报漏报,影响用户的体验,降低服务质量。此外,在保证检测准确的同时,又要考虑到检测效率的问题,是否占用大量的资源,是否对交换机的性能有影响。最后,在发现攻击之后,采取什么样的措施才能快速,完整的解决攻击产生的问题。

本发明解决其技术问题所采用的技术方案是:采用人工神经网络进行异常流量分类,确保误报少,漏报少。采用自适应的启动机制来保证极少的占用控制器的资源。采用基于信任值的队列管理方案,从根本上保证服务质量,消除ddos攻击产生的影响。本发明的符号及其含义:

方法流程:

步骤1:交换机接收到一个无法匹配的包,发送packet_in数据包至控制器。

步骤2:在SDN控制器中部署一个计数器,该计数器预先设定packet_in数量值,根据具体情况一般为1000-3000,这里我们取2000。每当到达的packet_in数量等于2000时,计算此时间段packet_in的到达速率。

步骤3:判断packe_in到达速率是否异常。具体做法如下:建立一种数据结构,将步骤1发来的packet_in到达速率作为一个节点顺序存储在该数据结构中。每个节点设立生存周期为10-20秒,这里我们设为15秒。若两个节点的速率值差小于一个值,一般为100-400,本发明取150,则这两个节点互为相近节点。对于每一个新到的节点,更新其前向相近节点数量;相对的,也要更新之前到达节点的后继相近节点数量。若一个节点的前向相近节点数量与后继相近节点数量之和小于一个值,一般为10-60,本发明中取25,即其相近节点数量太的少,则判断该节点可疑,执行步骤4;否则,执行步骤5。

步骤4:利用反向神经网络分类器对packet_in对应的交换机上的流量进行精确检测。建立一个中间层为50*50的神经网络。首先,利用网络上的ddos攻击数据对该分类器进行训练,提取攻击数据流表的头域信息,计算出六个特征值:apf(每个流的平均包的数量)、abf(每个流的平均比特量)、adf(每个流的平均持续时间)、ppf(每个流成对包的比例)、gsf(每个流单一包的增长率)、gdp(每个流不同端口的增长率)。将上述六个特征值作为分类器的输入,进行训练。然后利用训练完成的神经网络,将步骤3中可疑packet_in对应交换机上的流量的六个特征作为输入值,若神经网络输出值大于介于0.5和1之间,则为该流量为ddos攻击。

步骤5:建立用户信任值数据库,用来存储每个用户的信任值。然后,若精确检测模块检测出是ddos攻击,则减小用户信任值。若检测出不是ddos攻击,则查看控制器状态,若控制器正在遭受攻击也减小其信任值;否则增加其信任值。最后,根据信任值,重新排列packet_in在队列中的位置。

进一步的,本发明步骤1作为一种自适应的启动机制,当packet_in到达速率过大时将会启动ddos精确检测,而不是用一个固定的时间间隔t去启动ddos检测。因为t过大,将会导致检测不及时,当发现ddos攻击时,控制器已经瘫痪;t过小,将会使控制器的负荷增大,消耗控制器的资源。本发明提出的自适应的启动方案,可以有效的解决上述问题。

进一步的,本发明上述步骤2的具体做法包括:

2-1:在控制器上部署一个计数器,用于计算packet_in的到达数量。

2-2:设置packet_in计数器计数值为2000,每2000个packet_in包到达时,则计算此时间段packet_in的到达速率。

进一步的本发明上述步骤3用一种数据结构来存储packet_in的到达速率,便于程序化。该数据结构将packet_in的到达速率顺序存储为一个个节点,若节点的相近节点数量太少,则判断packet_in到达速率可疑。

进一步的,本发明上述步骤3的具体做法包括:

3-1:设步骤2计算出的packet_in到达速率为velocity,对于每个新到velocity,建立一个新的节点ncurrent.obj,将该节点与数据库中的每个节点进行比较,若两节点的速率之差小于150,则将该新到节点的前向相近节点数量加1,同时,将对应的前向相近节点的后继相近节点数量加1,并将ncurrent.obj存储至数据库。

3-2:每隔一段时间(一般为5-20秒,经实验取10秒最佳)检查一次数据库中的节点,对于数据库中的每一个节点,prec_neighs为该节点前向相近节点的数量,succ_neighs为该节点后继相近节点的数量。若(prec_neighs+succ_neighs)<25,则判定该节点可疑。

进一步的,本发明上述步骤4利用反向神经网络来检测ddos。ddos攻击通常通过伪造IP,向受害机发送大量的数据包,以耗尽被攻击主机资源和网络资源的攻击方式。这些攻击用一般的病毒检测是无法检测出的,因为他们的数据包是正常的数据包。虽然这些伪造的攻击数据包看似随机发送的,无规律可循,但是通过对数据包的分析,仍然可以得到他们的特征。神经网络算法的主要思想是把学习过程分为两个阶段:第一阶段(正向传播阶段),输入信息经过输入层通过隐含层逐层处理并计算每个单元的实际输出值;第二阶段(负向反馈),若输出未能得到期望的输出值,则逐层递归的计算实际输出与期望输出之间的差值(即误差),以便根据此差值来调节权值。神经网络可以准确的检测出ddos攻击,但神经网络检测时间长,本发明提出的启动机制有效的解决了这一问题。如图2所示,本方法神经网络一共四层。输入层为第0层,50*50的中间层为第1、2两层。输出层为第3层,输出神经元为第2层神经元输出的算数平均值(即第2层到第3层权值都为1且处理函数为求平均函数)。第l层第n个神经元的输出为中间层神经元处理函数,即每一个神经元的输出都要经过此函数的处理,保证输出在0到1之间。为从第l-1层第k个神经元到第l层第n个神经元的权值。为第l-1层第k个神经元的输入。神经网络可以准确的检测出ddos攻击,具体做法如下:

进一步的,本发明上述步骤3具体做法如下:

步骤4-1:训练阶段:首先给出神经网络训练的初始数据,学习速率参数η=0.5、目标值tn=0.75(η为神经网络的学习速率,影响权值的更新速度,tn是第2层神经元输出的目标值,用于之后的误差计算,从而更新权值)。接着运行一次神经网络获得各层的输出,根据实际输出值和目标输出值的比较,得出输出误差,然后判断该误差是否达到了预期误差,如果在预期误差之内,则退出训练;否则继续调整学习速率和权值,继续运行神经网络进行训练,直到误差小于预期的误差,具体做法如下:

步骤4-1-1:根据网络上数据库中的攻击流量,提取六个流表特征X1X2X3X4X5X6,作为神经网络的输入。这六个特征分别是:apf(每个流的平均包的数量)、abf(每个流的平均比特量)、adf(每个流的平均时间)、ppf(每个流成对包的比例)、gsf(每个流单一包的增长率)、gdp(每个流不同端口的增长率)。

apf计算方法:

将所有的流按每个流所含包的数量升序排列

其中函数f(x)为第x个流的包的数量,n为所有流的数量。

abf计算方法:与1式相同,但是此时的f(x)代表每个包的比特量。

adf计算方法:与1式相同,但是此时的f(x)代表每个流的持续时间。

pairflow定义:若两个流的源ip相同,目的ip相同且两个流的通信协议相同,则成这两个流为一对pairflow。num_pairflows为所有流中pairflow数量,num_flows为所有流的数量。

ppf计算方法:

interval为固定时间间隔,一般为3s-10s,本发明取值为5s,控制器每隔5s提取一次流信息。

gsf计算方法:

num_ports为流中所有不同的源端口和目的端口的数量。因为在ddos攻击的时候,攻击者会产生大量随机的端口号。

gdp计算方法:

步骤4-1-2:对误差函数求偏导,化简得为第2层第n个神经元的输出,tn为第2层第n个神经元输出的目标值,我们统一取0.75。然后更新第1层到第2层的所有权值其中,Wkn为第1层第k个神经元到第2层第n个神经元的权值。对于输入层到第1层,根据W′ik=Wik-ηXiδk,更新权值。其中,Wik为第0层第i个神经元到第1层第k的神经元的权值,这里i的取值范围是1-6,即6个输入。

步骤4-1-4:重复以上步骤直至E≤0.001,分类器训练完成。

步骤4-2:收集可疑交换机流表信息。在交换机和控制器建立连接的初始阶段,每一个交换机都会被控制器分配一个id,所以控制器很容易就获得交换机中的流表信息。

步骤4-3:根据流表中的每一条流匹配域中的信息,提取异常交换机上流的六个特征值作为神经网络的输入。

步骤4-4:若神经网络输出在0.5和1之间,则该流量为ddos攻击,控制器修改交换机流表对相应用户随后发来的包操作都为丢弃。执行步骤5。

进一步的,本发明上述步骤5提出了一种通过改变请求优先级的方法来处理控制器遭受的ddos攻击。我们的目的是使合法用户免遭ddos攻击的影响。本发明提出的方案是,改变控制器处理packet_in请求的默认方式:先到先服务。这种方式,在控制器缓冲区满的情况下会使合法用户的包被丢弃。如果合法用户的请求具有比较高的优先级的话,那么服务质量就会有很大的提升。基于此,本发明提出了根据信任值来改变合法用户请求在队列中的位置。

进一步的,本发明步骤5的详细步骤如下:

步骤5-1:当一个packet_in数据包到达时,在信任值数据库中查找出相应的用户i的信任值。若无此用户信任值,则令tvi=1。

步骤5-2:若精确检测模块检测出是ddos攻击,则令tvi=α*tvi-1若检测出不是ddos攻击,则查看控制器状态,若控制器正在遭受攻击,则令tvi=α*tvi-1。否则,令tvi=α*tvi+1。α为信任值改变率,在0-1之间,我们取0.7;tvi为用户i的信任值。

步骤5-3:若tvi<Tmin,则将发送者i列入黑名单,并通知交换机。Tmin为设定的用户最低信任值,低于此信任值的用户将被列入黑名单,一般设为1-5,本发明其取值为3。

步骤5-4:将缓冲区所有队列编号,队列首部编号为Nq,尾部编号为1,所有队列数量为Nq。在每一个packet_in到达缓冲区的时候,令其队列序号qi越大,优先级越高。

步骤5-5:Lj为第j个缓冲队列包的数量,若则将packet_in加入第i队列的第i的序位,并令Li=Li+1,Lmax为所有队列包数量上限。若若qi≠1,则拒绝队列尾部(即队列序号为1)中的一个请求包,并令L1=L1-1,然后将此packet_in请求加入第qi个队列,并令若qi=1,则拒绝此请求包。

如图1所示,一种基于信任值自适应启动的ddos防御系统由三个模块组成:启动模块、精确检测模块、队列管理模块。

启动模块内置一个计数器,用来计算packet_in的到达速率,根据packet_in到达速率,采用异常检测算法,自适应的启动精确检测模块。

精确检测模块采用反向神经网络如图2所示。分为输入层,中间层,输出层。每一次都可以为一个或多个神经元。在输入层,每一个神经元代表接受的输入信息的一个特征,通加权求和,传送至中间层。隐藏层又称计算层,对输入进行复杂的计算。输出层输出结果。如果输出的结果与预期结果的差值没达到标准,负向反馈将会启动,负向反馈将会调整每一层的权值,直至误差在规定范围内。

本发明中输入层为6个神经元,分别对应提取的六个流特征。隐藏层本发明采用50*50的神经元,输出为0.5-1或0-0.5,分别代表是ddos攻击和正常流量。实际应用分为两个阶段:训练阶段和检测阶段。一旦系统启动,预先准备好的大量攻击数据将会用来训练神经网络,训练完成后,神经网络将会检测实际流量是否为ddos攻击。

队列管理模块对每一个到达的请求对应的用户标记上信任值,根据其是否攻击控制器,相应的增加或减少其信任值,然后,控制器会优先处理信任值高的packet_in请求。

具体实施场景如图3所示,当攻击者发送大量交换机无法匹配的请求时,交换机会会发送大量的packet_in包请求控制器处理。但控制器处理请求的缓冲区大小是有限的,如果被大量攻击者的packet_in请求占据,就会造成拒绝服务。本发明防御系统布置在控制器上,当packet_in到达速率异常时,该防御系统将会启动。

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