针对SDN控制平面的DDoS攻击检测方法与流程

文档序号:14942889发布日期:2018-07-13 21:30阅读:318来源:国知局

本发明涉及网络中攻击对象的检测方法,具体涉及针对sdn控制平面的ddos攻击检测方法。



背景技术:

ddos(distributeddenialofservice)攻击作为网络中最具有威胁的攻击之一,会严重影响网络性能,增加网络时延,造成合法报文的丢包。在传统网络中,攻击者通过发送大量的报文用于耗尽目标主机或者服务器资源,从而导致目标服务器负载过高不能为合法用户提供相应的服务甚至瘫痪。

相较于传统网络,软件定义网络sdn(softwaredefinednetworking,sdn)由于其集中控制特性,产生了针对控制平面的新型ddos攻击。研究人员提出一种新型的针对sdn控制平面的ddos攻击,该攻击方式为资源耗尽型攻击,通过攻击网络中的主机节点之后伪造大量攻击流注入网络,由于伪造的攻击流无法在交换机上匹配到流表项用于数据报文的转发,短时间内向控制平面发送大量packet-in消息,从而耗尽控制平面与交换机之间的带宽、控制器处理能力或交换机存储空间资源,使得整个sdn网络不能正常工作。

针对控制平面的ddos攻击最明显的特征就是短时间内有大量的流量进入控制平面。对于ddos攻击,最简单的检测机制就是在控制器端检测packet-in消息速率,若packet-in速率超过一定的阈值则认为存在攻击。但是只基于packet-in消息速率由于检测指标单一、粗略,会导致较高的检测误差。为了提高检测精度,现有的检测机制主要利用统计方法或机器学习算法进行攻击检测。

其中,基于机器学习的检测算法,譬如基于som(self-organizingmaps)、深度学习的检测算法,其原理为基于攻击过程中的攻击特征指标训练得到一个攻击检测模型,在检测过程中基于该模型判断攻击发生与否。其中基于som的检测算法比较具有代表性,该检测算法检测之前需要利用采集得到的训练数据集对som模型进行训练,训练结束之后得到一个检测模型。在检测阶段通过周期性地采集交换机流表项信息,计算出apf、abf等指标代入攻击模型中,用于判断是否存在攻击。

上述方法能够在一定程度上检测到ddos攻击,对于基于机器学习的在线检测算法(即在检测过程中不断获取数据进行训练),由于训练过程需要占用较多cpu、内存资源,会对控制器造成较大的负担。

对于基于机器学习的离线检测算法,其检测精度严重依赖于训练数据集,在实际过程中,由于攻击方式的不同会导致攻击产生的特征会有较大的差异,较难采集到较为完备的训练数据集用于训练检测算法,尤其无法有效的区分突发流与攻击流,从而导致检测准确性较低。



技术实现要素:

针对现有技术中的上述不足,本发明提供的针对sdn控制平面的ddos攻击检测方法能够有效地区分攻击流与突发流。

为了达到上述发明目的,本发明采用的技术方案为:

提供一种针对sdn控制平面的ddos攻击检测方法,其包括:

接收来自于交换机的openflow报文;

当openflow报文为packet-in报文时,采用窗口计数器累计packet-in报文数量;

当窗口计数器累计的packet-in报文数量达到预设数量时,计算预设数量packet-in报文的packet-in速率:

ratepacket_in=n/(tend-tbegin)

其中,ratepacket_in为packet-in速率;n为预设数量;tbegin为窗口计数器记录第一个packet-in报文的时间;tend为窗口计数器记录第n个packet-in报文的时间;

当packet-in速率小于设定阈值时,则packet-in报文对应的主机不存在攻击,将窗口计数器更新为零;

当packet-in速率超过设定阈值时,基于packet-in报文的熵值提取packet-in报文中的可疑攻击源;

获取可疑攻击源的流表统计数据,并将流表项匹配报文数小于报文阈值的流标记为可疑流,之后计算可疑攻击源的可疑程度:

rattack=nsuspect/n

其中,rattack为可疑程度;n为从可疑攻击源进入交换机的总流数目;nsuspect为可疑流的数目;

当可疑程度小于可疑阈值时,则可疑攻击源对应的主机出现突发流,将窗口计数器更新为零;

当可疑程度大于等于可疑阈值时,则可疑攻击源对应的主机为被攻击对象,同时将窗口计数器更新为零。

进一步地,采用窗口计数器累计packet-in报文数量之前还包括对进入控制器的packet-in报文进行冗余packet-in报文过滤和/或对进入控制器的packet-in报文进行伪造源ip/mac的攻击报文过滤。

进一步地,所述对进入控制器的packet-in报文进行冗余packet-in报文过滤的方法进一步包括:

提取packet-in报文的流五元组信息用于表示一条流;

当控制器中未记录packet-in报文的流五元组信息时,则控制器记录packet-in报文的流五元组信息,并设置流五元组信息的过期时间;

当控制器中已记录packet-in报文的五元组信息,且packet-in报文的上报时间大于等于流五元组信息中设置的过期时间时,则控制器重新记录packet-in报文的流五元组信息,并设置流五元组信息的过期时间;

当控制器中已记录packet-in报文的五元组信息,且packet-in报文的上报时间小于流五元组信息中设置的过期时间时,丢弃packet-in报文。

进一步地,所述对进入控制器的packet-in报文进行造源ip/mac的攻击报文过滤的方法进一步包括:

提取packet-in报文的源ip、源mac信息、dpid和in-port,其中以dpid与in-port唯一表示交换机端口,并判断packet-in报文中的交换机端口是否已绑定源ip和源mac信息;

若未绑定,则将packet-in报文中的源ip和源mac信息与packet-in报文中的交换机端口进行绑定,并进入采用窗口计数器累计packet-in报文数量步骤;

若已绑定,则判断packet-in报文的源ip和源mac信息是否与packet-in报文中的交换机端口绑定的源ip和源mac信息相匹配;

若不匹配,则packet-in报文中的交换机端口对应的主机为被攻击对象;否则,进入采用窗口计数器累计packet-in报文数量步骤。

进一步地,所述基于packet-in报文的熵值提取packet-in报文中的可疑攻击源进一步包括:

计算预设数量的packet-in报文的熵值;

当熵值小于预设熵值时,统计不同源ip发送的packet-in报文数量,并根据每个源ip对应的packet-in报文数量进行降序排序;

根据源ip发送的packet-in报文数量降序顺序,依次去除源ip对应的packet-in报文后,计算剩余packet-in报文的熵值,直至剩余packet-in报文的熵值大于等于预设熵值,停止去除源ip对应的packet-in报文;

当剩余packet-in报文的熵值大于等于预设熵值时,将已删除的packet-in报文对应的交换机端口定位为可疑攻击源。

进一步地,所述packet-in报文的熵值的计算公式为:

其中,h为熵值;si为第i个源ip发出的packet-in报文数量;n为packet-in报文总数量,n≤预设数量;k为n个packet-in报文对应源ip的种类。

进一步地,当数据包为port-status报文时,且port-status报文中的port_down位存在置位时,删除控制器记录的交换机的端口与主机源ip/mac信息。

与现有技术中的统计方法或机器学习算法进行攻击检测相比,本发明的有益效果为:

(1)优化性:本发明通过综合packet-in速率、熵值和流表统计数据对攻击进行检测,同时本发明能够有效的区分攻击流与突发流,有效地提高了检测的精度。

(2)高效性:本发明在检测过程中使用的采用的检测指标如packet-in速率、熵值等计算方式简单,耗费的cpu以及内存资源很少,不会对控制平面造成额外的负担,同时由于检测过程轻量级,能快速检测到攻击,因而检测效率高。

附图说明

图1为针对sdn控制平面的ddos攻击检测方法的流程图。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

参考图1,图1示出了针对sdn控制平面的ddos攻击检测方法的流程图,如图1所示,该方法100包括步骤101至步骤114。

在步骤101中,接收来自于交换机的openflow报文,此处的openflow报文存在packet-in报文和port-status报文两种类型。

在步骤102中,判断openflow报文是否为packet-in报文,若是,则进入步骤105,否则进入步骤103。

在步骤103中,当openflow报文为port-status报文时,判断port-status报文中的port_down位是否存在置位,若存在,则进入步骤104中。

在步骤104中,删除控制器记录的port-status报文对应的交换机的端口与主机源ip/mac信息。

在步骤105中,采用窗口计数器累计packet-in报文数量。

在本发明的一个实施例中,采用窗口计数器累计packet-in报文数量之前还包括对进入控制器的packet-in报文进行冗余packet-in报文过滤和/或对进入控制器的packet-in报文进行伪造源ip/mac的攻击报文过滤。

实施时,本方案优选所述对进入控制器的packet-in报文进行冗余packet-in报文过滤的方法200进一步包括步骤201至步骤205。

在步骤201中,提取packet-in报文的流五元组信息用于表示一条流。

在步骤202中,判断控制器中是否记录packet-in报文的流五元组信息,若记录则进入步骤204,若未记录,则进入步骤203。

在步骤203中,控制器记录packet-in报文的流五元组信息,并设置流五元组信息的过期时间。

在步骤204中,判断packet-in报文的上报时间是否小于流五元组信息中设置的过期时间,若是,则进入步骤205,否则,进入步骤203。

在步骤205中,丢弃packet-in报文。

实施时,本方案优选所述对进入控制器的packet-in报文进行造源ip/mac的攻击报文过滤的方法300进一步包括步骤301至步骤306。

在步骤301中,提取packet-in报文的源ip、源mac信息、dpid和in-port,其中以dpid与in-port唯一表示交换机端口。

在步骤302中,判断packet-in报文中的交换机端口是否已绑定源ip和源mac信息,若是未绑定,则进入步骤303,若已绑定则进入步骤304。

在步骤303中,将packet-in报文中的源ip和源mac信息与packet-in报文中的交换机端口进行绑定,并进入采用窗口计数器累计packet-in报文数量步骤。

在步骤304中,判断packet-in报文的源ip和源mac信息是否与packet-in报文中的交换机端口绑定的源ip和源mac信息相匹配,若匹配,则进入步骤306中,否则,进入步骤305中。

在步骤305中,packet-in报文中的交换机端口对应的主机为被攻击对象。

在步骤306中,进入采用窗口计数器累计packet-in报文数量步骤。

当本方案同时对进入控制器的packet-in报文进行冗余packet-in报文过滤和伪造源ip/mac的攻击报文过滤时,优选先进行冗余packet-in报文过滤,之后对进行冗余packet-in报文过滤的packet-in报文进行伪造源ip/mac的攻击报文过滤。

由于冗余的packet-in消息与攻击者发送的伪造源ip的攻击流分别会影响packet-in速率以及熵值的计算的准确性,本方案通过上述方式对packet-in报文进行过滤,能够大幅度提高最终检测的准确性。

在步骤106中,判断窗口计数器累计的packet-in报文数量是否达到预设数量,若是,则进入步骤107,否则返回步骤105。

在步骤107中,计算预设数量packet-in报文的packet-in速率:

ratepacket_in=n/(tend-tbegin)

其中,ratepacket_in为packet-in速率;n为预设数量;tbegin为窗口计数器记录第一个packet-in报文的时间;tend为窗口计数器记录第n个packet-in报文的时间。

在步骤108中,判断packet-in速率是否小于设定阈值,若小于,则进入步骤109,否则,进入步骤110。

在步骤109中,packet-in报文对应的主机不存在攻击,并将窗口计数器更新为零,并返回步骤105。

在步骤110中,基于packet-in报文的熵值提取packet-in报文中的可疑攻击源。

基于熵值进行进一步的检测主要用于定位到可疑的攻击源(底层交换机端口),若此时的packet-in速率急剧增长的确是由攻击导致的(也可能是由突发流导致的),一旦确定了攻击源,后续就能对攻击进行有效地防御。

当攻击产生时,攻击者注入了大量的伪造流,相较于不存在攻击时,端口的无序程度会变化,而熵通常用作无序程度的度量,故本方案在packet-in速率判断之后采用熵值确定可疑攻击对象。

在本发明的一个实施例中,所述基于packet-in报文的熵值提取packet-in报文中的可疑攻击源进一步包括步骤401至步骤406。

在步骤401中,计算预设数量的packet-in报文的熵值。

在本发明的一个实施例中,所述packet-in报文的熵值的计算公式为:

其中,h为熵值;si为第i个源ip发出的packet-in报文数量;n为packet-in报文总数量,n≤预设数量;k为n个packet-in报文对应源ip的种类。

在步骤402中,判断熵值是否小于预设熵值,若大于等于,则进入步骤403中,否则,进入步骤404中。

在步骤403中,packet-in报文对应的交换机端口不存在攻击,将窗口计数器更新为零,之后返回步骤105。

在步骤404中,统计不同源ip发送的packet-in报文数量,并根据每个源ip对应的packet-in报文数量进行降序排序。

在步骤405中,根据源ip发送的packet-in报文数量降序顺序,依次去除源ip对应的packet-in报文后,计算剩余packet-in报文的熵值,直至剩余packet-in报文的熵值大于等于预设熵值。

下面结合具体的实例对步骤404和步骤405进行详细地说明:

假设统计不同源ip发送的packet-in报文数量总共有10个,10个packet-in报文中存在3个不同的源ip,分别为源ip1发出的packet-in报文存在3个,源ip2发出的packet-in报文存在5个,源ip3发出的packet-in报文存在2个;则进行降序排列后为:源ip2、源ip1、源ip3。

之后根据源ip2、源ip1、源ip3的排序顺序,首先剔除的是源ip2对应的packet-in报文,之后计算源ip1和源ip3的熵值,若熵值还是小于预设熵值,则再次剔除源ip1对应的packet-in报文,继续计算剩余packet-in报文的熵值,直至熵值大于等于预设熵值。

在步骤406中,当剩余packet-in报文的熵值大于等于预设熵值时,将已删除的packet-in报文对应的交换机端口定位为可疑攻击源。

通过熵值进行判定虽然相较于packet-in速率检测能够定位到可疑攻击源,但仍然无法有效地区分攻击与突发流,而现有网络中超过90%的正常流至少包含5个报文。

由于攻击流主要为小流,因而可以对流中的报文数目进行分析从而进一步区分攻击流与正常流;当定位到可疑攻击源后,会继续利用交换机流表项统计数据(控制器可以发送openflow消息到交换机用于获取具体某个端口的流表项统计数据,一条流表项对应一条流)进行进一步的判断,以便于区分出攻击与突发流。

对于流入交换机端口的某条流而言,如果其流表项匹配报文数小于一定的阈值packets_num_threshold,则认为该流为可疑流(即有极大可能为攻击流),否则认为此流为正常流。

在步骤111中,获取可疑攻击源的流表统计数据,并将流表项匹配报文数小于报文阈值的流标记为可疑流,之后计算可疑攻击源的可疑程度:

rattack=nsuspect/n

其中,rattack为可疑程度;n为从可疑攻击源进入交换机的总流数目;nsuspect为可疑流的数目。

其中,交换机流表统计信息包括流表项持续时间(duration字段)、流表项匹配报文数(n_packets字段)、流表项匹配字节数(n_bytes字段)等信息。未进行流表项聚合情况下,一条流对应一条流表项,因而流n_packets字段可以表示流中报文数目,判断过程中使用n_packets字段作为区分攻击流与突发流的重要依据。

在步骤112中,判断可疑程度是否小于可疑阈值,若小于,则进入步骤113中,否则,进入步骤114中。

在步骤113中,可疑攻击源对应的主机出现突发流,将窗口计数器更新为零,之后返回步骤105;

在步骤114中,可疑攻击源对应的主机为被攻击对象,同时将窗口计数器更新为零,之后返回步骤105。

下面对本方案设计的针对sdn控制平面的ddos攻击检测方法的实施部署场景进行说明:

本方案的检测方法可以部署在sdn网络中,以防御针对sdn控制平面的ddos攻击,同时sdn网络中采用的是reactive模式而不是proactive模式,即网络中的openflow交换机上未预先配置流表项,交换机接收到数据包文后向控制器上报packet-in消息后控制器才下发相应的流表项。

相对于传统网络架构,sdn网络将控制功能从网络交换设备中分离出来,将其移入逻辑上独立的控制平面之中。该系统可在通用的服务器上运行,任何用户可随时、直接进行控制功能编程。因此,控制功能既不再局限于路由器中,也不再局限于只有设备的生产厂商才能够编程和定义。sdn的本质是逻辑集中控制平面的可编程化。

ddos攻击检测方案部署

网络运营商可以将本发明所提出的ddos攻击检测方法部署在sdn的控制平面或者应用平面。

当部署到控制平面时,可以将本发明提出的ddos攻击检测算法作为其上部署控制器中的一个模块。由于现有控制器众多,需要根据部署的控制器具体实现检测算法。

当部署到应用平面时,ddos检测算法可以作为一个第三方sdn应用,此时可以与控制平面之间通过restapi等北向接口进行通信,此种部署方式下只要控制器实现相应的北向接口即可,相较于部署到控制平面时部署成本更低,适用性也更广。

综上所述,本方案综合考虑了攻击产生时的多个特征(packet-in速率、熵值与流表统计数据),相较于已有算法,能够有效地区分攻击流与突发流,在保证较高的检测准确性的同时定位到攻击源(底层交换机端口)。

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