一种拓扑污染攻击防御方法和系统与流程

文档序号:15625045发布日期:2018-10-09 22:46阅读:503来源:国知局

本发明涉及网络控制领域,特别是涉及一种网络拓扑污染攻击防御方法和系统。



背景技术:

sdn(softwaredefinednetwork,软件定义网络)起源于2006年斯坦福大学的cleanslate研究课题,2009年sdn的概念正式被提出。此后sdn相关技术迅速开展起来,成为近年来的研究热点,并且越来越多的公司部署了sdn相关技术,例如,谷歌采用sdn技术优化其数据中心互连。随着相关技术研究增多,sdn安全性也越来越引起人们的重视。与传统网络不同,sdn是逻辑上集中的网络。在sdn中,控制器负责计算网络路由,实现网络路由选择;交换机通过查找流表项并执行其操作,实现数据包的转发。为了实现网络管理和可编程性,控制器需要维护网络拓扑信息,并且向上层应用和服务(例如负载均衡和最短路径路由服务等)提供拓扑信息。在sdn中,通常是由控制器中的拓扑管理服务维护拓扑信息,拓扑管理服务包含三个部分功能:1)发现交换机;2)发现主机;3)发现链路。

主机发现原理:当交换机收到由新接入网络的主机发送的网络包时,会向控制器报告这个网络包。控制器通过该消息获取主机的信息(主机的物理地址、ip地址、位置信息等),然后下发相关的流表项。当再次收到交换机询问规则的消息时,控制器根据该消息查询是否存储过该主机,如果查到主机,但是位置信息不匹配,就认为主机位置发生了改变,然后更新控制器存储的该主机的位置信息。然而整个过程缺少认证步骤,攻击者通过发送伪装主机的消息,就可以伪装网络中的某台主机。

链路发现原理:控制器使用开放流量发现协议(ofdp)动态检查sdn交换机之间的有效链路,该协议通过发送链路层发现协议(lldp)包来实现。如图1所示,控制器每隔一段时间向sdn交换机发送lldp消息,sdn交换机x转发该lldp包,下一跳交换机y收到来自交换机x的lldp包后转发给控制器,控制器通过该消息就可以学习到一条从交换机x到交换机y的单向链路。

目前已知的拓扑管理服务漏洞存在于主机发现和链路发现这两个部分,存在的攻击主要分为两类:流量劫持攻击和链路伪造攻击。

流量劫持攻击:如图2所示,攻击者使用网络服务器的物理地址、ip地址向直连sdn交换机发送数据包。按照主机发现服务流程,由于攻击者发送的数据包是新流的数据包,sdn交换机会报告给控制器,而控制器无法验证数据包发送者是否为合法的用户,会依据该消息的内容认定网络服务器的位置已经发生的移动。在完成转发流表项下发更新后,后续如果有其他正常主机试图访问该网络服务器时,由于拓扑管理信息中该服务器的位置已变更为攻击者所在的位置,所以正常用户的访问流量都会被转发到攻击者处,导致用户无法访问该服务器。

链路伪造攻击:分为两种,一种是注入伪造lldp包,即攻击者给直连的交换机发送伪造的lldp包发起攻击。如图3a所示,通过监控来自sdn交换机的流量,攻击者能够获得真实的lldp包,并且很容易破解lldp包里每个字段的语义。攻击者按照lldp包格式,根据攻击需求伪造相应的lldp包,或者直接修改真实的lldp包,例如,将lldp包中dpid、端口号进行修改,再将其发送给直连sdn交换机a。当交换机a收到lldp包后,便会给控制器发送该lldp包。于是,控制器就会学习到一条攻击者伪造的链路。另一种是重复lldp包,即攻击者将一台目标交换机发来的lldp包重放给另一台目标交换机,这样就在两台交换机之间构造出一条虚假链路。攻击场景如图3b所示,攻击者控制多台主机,预先找好适合重放的主机,攻击者通过与交换机y直连的重放主机控制其他被攻陷的主机。图3b中,虚线是控制器视角下两个主机之间的通信信道(该信道是由攻击者构造),实线表示的是实际的通信信道。当主机a收到来自x的lldp包时,攻击者让主机a通过隧道等方式将lldp包发给重放主机。攻击者根据攻击需求让重放主机将lldp包也以同样方式发送给主机b,主机b将lldp包发给与之直连的sdn交换机z。当交换机z收到lldp包时候,按照正常的处理步骤发送给控制器,控制器便学习到一条由攻击者伪造的不存在的链路。

存在这两类攻击的主要原因是,目前控制器缺少对网络拓扑消息的验证,无法保证拓扑信息的真实性。因此对于网络链路信息,控制器无法辨别消息的真伪,故攻击者篡改其内容并不会被发现。当控制器收到lldp包时候,是默认它为真实的lldp包。攻击者利用这样的漏洞可以在网络中伪造出虚假的主机和链路,进而可以导致网络中信息传输的混乱、网络崩溃甚至是网络被攻击者完全控制。

目前存在的拓扑污染防御方案中比较典型的是topoguard,该方案是通过验证主机迁移的前置和后置条件,来判断是否存在主机位置劫持攻击。主机迁移的前置条件是控制器收到端口的port_down信号;后置条件是迁移结束以后,控制器给该主机原来的位置发送icmp探测的结果是不可达的,确保在原来的位置上不能再访问该主机。只有满足这两个条件才能确定该主机位置移动是真实的。

针对篡改lldp包的攻击行为,该模型提出的防御措施是计算lldp中dpid和端口号的hmac值,通过在lldp包中放置hmac值来验证。针对重放,该模型使用检查发出端口的设备类型的方式来防御。该方案认为攻击主机会发送只有主机才能产生的流量,例如arp流量。控制器根据packet-in消息来决定该属性的值(主机或交换机)。但是该方案存在如下缺陷:

1)sdn网络的原则就是将网络的控制层和数据层分离。控制层不应该执行数据层包含的功能,控制器虽然能构造lldp等网络包,但是icmp是数据层的数据包,由控制器来构造就违背了sdn的设计原则,会造成控制器功能和执行的混乱。

2)在lldp包中加入hmac值验证lldp包的真实性的方案是很容易绕过的。攻击者使用两台主机分别连接到不同的sdn交换机,一台用于监听lldp包,提取出hmac、dpid和端口号,另一台根据提取的信息,再向网络中注入伪造lldp包,即可绕开防御。因为每个端口每次发送的lldp包中hmac值都是固定不变的,所以只要分析出hmac值,该防御方案就会失效。所以,仅仅是使用不变的hmac值是无法进行有效防御攻击的。

3)控制器存储每个端口所连接的设备类型,这种方式所需的存储空间有些部分可能会存在浪费,因为在很多情况下,每台交换机的每个端口上在不同时间可能会连接多个网络设备。

以上背景技术内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。



技术实现要素:

本发明所要解决的技术问题是:针对现有防御机制的不足,提出一种拓扑污染攻击的防御机制,可同时用于防御流量劫持攻击和链路伪造攻击,适用范围较广且开销小。

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

一种拓扑污染攻击防御方法,用于sdn网络,包括:

1)通过监听sdn控制器收到的packet-in消息,记录网络中主机,判断该主机是否是真实的主机,所述真实主机是指该主机使用本机的ip和mac地址发送主机流量;

2)通过监听sdn控制器下发流表项信号和sdn交换机上传的流表项删除消息,维护每个交换机端口流表项的记录表,并且通过该表判断某个端口的主机是否离开了网络,以防止流量劫持攻击;

3)通过给sdn控制器下发的lldp包加上随机字符串作为校验字段,并对sdn控制器收到的lldp包进行检查,以防止利用lldp包来伪造链路的攻击。

上述步骤1)-3)并不限制为是依次执行的。

进一步地:

通过在sdn控制器拓扑管理服务中添加网络拓扑信息的验证功能来实现所述方法。

步骤2)中,通过监听sdn控制器下发的flow-mod消息和flow-delete消息来判断某个端口的主机是否离开网络。

步骤1)通过监听sdn交换机向sdn控制器发送的含有主机arp消息的packet-in消息来学习主机的信息,并在主机信息表中记录下来;当一台主机在预定时间内没有发送流量,该主机直连的sdn交换机上关于该主机的流表项全部过期后,该主机又开始发送流量时,在主机列表中并不存在该主机的信息,sdn控制器收到关于该主机的packet-in消息后,将该主机的信息重新加入主机列表。

步骤2)中,当检测到主机直连的sdn交换机上所有关于该主机的流表项全部过期时,判断该主机离开了网络;如果主机在预定时间内没有发送流量,sdn控制器通过分析由sdn交换机向sdn控制器发送的packet-in消息,将该主机的信息再次加入主机列表;流表项的记录表记录每个端口直连主机流入网络的流的有效的流表项条数,通过对每个端口对应的流表项动态管理,得知连接到一个或多个端口的主机离开了网络时,删除对应的主机条目。

步骤3)中,在sdn控制器下发的lldp包中添加校验字段,并将该lldp包中的交换机id号、端口号和对应的随机字符串信息记录在列表中,用于校验控制器收到的lldp包,从收到的lldp包排除伪造的lldp包;根据lldp包中端口信息,查询主机列表,排除重放攻击产生的lldp包。

步骤3)中,当控制器开始下发lldp包时候,给每条lldp消息上加入一个由哈希函数产生的随机字符串作为校验字段,并将该随机字符串与交换机端口号存储起来;

当控制器收到lldp包时候,使用如下方式检查出攻击者发送的lldp包:每当控制器收到lldp包时,lldp消息处理部分首先检查lldp中的校验字段、交换机id号和端口号是否与存储的内容一致,如果校验字段不一致,认为存在攻击行为;如果一致,在lldp包中,通过lldp包中包含的交换机id号和端口号,查找维护的主机列表中是否存在该端口的信息,如果存在,则说明该端口是直连主机的端口,而控制器不应该收到该lldp包,由此判断该lldp包是重放攻击产生的。

一种拓扑污染攻击防御系统,用于sdn网络,包括:

主机接入检查模块,通过监听sdn控制器收到的packet-in消息,记录网络中主机,判断该主机是否是真实的主机,所述真实主机是指该主机使用本机的ip和mac地址发送主机流量;

流表项处理模块,通过监听sdn控制器下发流表项信号和sdn交换机上传的流表项删除消息,维护每个交换机端口流表项的记录表,并且通过该表判断某个端口的主机是否离开了网络,以防止流量劫持攻击;

链路发现处理模块,通过给sdn控制器下发的lldp包加上随机字符串作为校验字段,并且对收到的lldp包进行检查,以防止利用lldp包来伪造链路的攻击。

本发明具有如下有益效果:

根据本发明的拓扑污染防御方法和系统,在实施例中,在sdn控制器拓扑管理服务中添加网络拓扑信息的验证功能,通过监听控制器收发消息来验证主机,从而遵循了sdn网络控制和转发相分离的设计原则,并且通过给lldp消息加上随机字符串作为校验字段,做到了动态检测lldp包,从而防止链路伪造攻击。本发明的方法可同时用于防御流量劫持攻击和链路伪造攻击,适用范围较广,部署方便,开销小。

附图说明

图1是链路发现原理示意图;

图2是劫持网络用户流量过程示意图;

图3a是伪造lldp包注入过程示意图;

图3b是lldp重放攻击过程示意图;

图4是本发明实施例的拓扑污染防御的原理示意图。

具体实施方式

以下对本发明的实施方式作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。

参阅图4,在一种实施例中,一种拓扑污染攻击防御方法,用于sdn网络,包括:

通过监听sdn控制器收到的packet-in消息,记录网络中主机,判断该主机是否是真实的主机,所述真实主机是指该主机使用本机的ip和mac地址发送主机流量;

2)通过监听sdn控制器下发流表项信号和sdn交换机上传的流表项删除消息,维护每个交换机端口流表项的记录表,并且通过该表判断某个端口的主机是否离开了网络,以防止流量劫持攻击;

3)通过给sdn控制器下发的lldp包加上随机字符串作为校验字段,并对sdn控制器收到的lldp包进行检查,以防止利用lldp包来伪造链路的攻击。

上述步骤1)-3)并不限制为是依次执行的。

在优选实施例中,通过在sdn控制器拓扑管理服务中添加网络拓扑信息的验证功能来实现所述方法。

在优选实施例中,步骤2)中,通过监听sdn控制器下发的flow-mod消息和flow-delete消息来判断某个端口的主机是否离开网络。

在优选实施例中,步骤1)通过监听sdn交换机向sdn控制器发送的含有主机arp消息的packet-in消息来学习主机的信息,并在主机信息表中记录下来;当一台主机在预定时间内没有发送流量,该主机直连的sdn交换机上关于该主机的流表项全部过期后,该主机又开始发送流量时,在主机列表中并不存在该主机的信息,sdn控制器收到关于该主机的packet-in消息后,将该主机的信息重新加入主机列表。

在优选实施例中,步骤2)中,当检测到主机直连的sdn交换机上所有关于该主机的流表项全部过期时,判断该主机离开了网络;如果主机达到预定长时间没有发送流量,sdn控制器通过分析由sdn交换机向sdn控制器发送的packet-in消息,将该主机的信息再次加入主机列表;流表项的记录表记录每个端口直连主机流入网络的流的有效的流表项条数,通过对每个端口对应的流表项动态管理,得知连接到一个或多个端口的主机离开了网络时,删除对应的主机条目。

在优选实施例中,步骤3)中,在sdn控制器下发的lldp包中添加校验字段,并将该lldp包中的交换机id号、端口号和对应的随机字符串信息记录在列表中,用于校验控制器收到的lldp包,从收到的lldp包排除伪造的lldp包;根据lldp包中端口信息,查询主机列表,排除重放攻击产生的lldp包。

在优选实施例中,步骤3)中,当控制器开始下发lldp包时候,给每条lldp消息上加入一个由哈希函数产生的随机字符串作为校验字段,并将该随机字符串与交换机端口号存储起来;

当控制器收到lldp包时候,使用如下方式检查出攻击者发送的lldp包:每当控制器收到lldp包时,lldp消息处理部分首先检查lldp中的校验字段、交换机id号和端口号是否与存储的内容一致,如果校验字段不一致,认为存在攻击行为;如果一致,在lldp包中,通过lldp包中包含的交换机id号和端口号,查找维护的主机列表中是否存在该端口的信息,如果存在,则说明该端口是直连主机的端口,而控制器不应该收到该lldp包,由此判断该lldp包是重放攻击产生的。

参阅图4,一种拓扑污染攻击防御系统,用于sdn网络,包括:

主机接入检查模块,通过监听sdn控制器收到的packet-in消息,记录网络中主机,判断该主机是否是真实的主机,所述真实主机是指该主机使用本机的ip和mac地址发送主机流量;

流表项处理模块,通过监听sdn控制器下发流表项信号和sdn交换机上传的流表项删除消息,维护每个交换机端口流表项的记录表,并且通过该表判断某个端口的主机是否离开了网络,以防止流量劫持攻击;

链路发现处理模块,通过给sdn控制器下发的lldp包加上随机字符串作为校验字段,并且对收到的lldp包进行检查,以防止利用lldp包来伪造链路的攻击。

本发明的目标就是建立一个有效验证网络拓扑信息的机制,如图4所示,该机制主要包含三个验证模块:主机接入检查模块、链路发现处理模块和流表项处理模块。主机接入模块和流表项处理模块用于解决主机位置劫持攻击,而链路发现处理模块用于解决链路伪造攻击。三个模块介绍如下:

(1)主机接入检查模块通过监听控制器收到的packet-in消息,记录网络中主机,判断该主机是否是真实的主机。这里真实主机的意思是,该主机使用本机的ip和mac地址发送主机流量。

(2)流表项处理模块通过监听控制器下发流表项信号和交换机上传的流表项删除消息,维护每个交换机端口流表项的记录表,并且通过该表判断某个端口的主机是否离开了网络。

(3)链路发现处理模块负责管理控制器下发的lldp包,并且对收到的lldp包进行检查,防止利用lldp包来伪造链路的攻击。

如下将具体阐述各个模块的处理流程。首先,将描述主机接入检查的详细流程,其次是流表项处理部分,最后是链路发现过程。

1.主机接入检查

主机接入检查部分用于验证新加入网络的主机身份,防止伪装主机的行为。该部分通过监听packet-in消息,从packet-in消息中提取出主机信息来维护接入网络主机信息表,该表中每一条目包含:主机的mac地址、主机接入网络的交换机号和端口号,便于查询。

下面算法描述了主机接入检查部分的处理步骤,输入为sdn交换机询问主机的流表项消息,输出为是否相信该主机。通常,当主机接入网络时,由于主机直连的交换机查找不到对应的流表项,会向控制器发送含有主机arp消息的packet-in消息。主机接入检查部分通过监听这类的packet-in消息来学习主机的信息,并在主机信息表中记录下来。当主机离开了网络,需要从列表中删除该条目,这部分是通过流表项处理部分来完成的。此外,当一台主机长时间没有发送流量,主机直连的交换机上关于该主机的流表项全部过期后,该主机又开始发送流量时,在主机列表中并不存在该主机消息,控制器收到关于该主机的packet-in消息后,本方案需要将该主机重新加入主机列表。

算法1主机接入检查

2.流表项处理

流表项处理部分的主要功能是检测主机是否离开网络。当主机直连的sdn交换机上所有关于该主机的流表项全部过期时,就认为该主机离开了网络。如果主机只是长时间没有发送流量,控制器只需要通过分析由sdn交换机向控制器发送的寻路消息,将该主机的信息再次加入主机列表即可。该部分通过监听控制器下发流表项的信号和sdn交换机写入删除流表项的信号来维护流表项列表。该列表记录每个端口直连主机流入网络的流的有效的流表项条数。通过对每个端口对应的流表项动态管理,我们可以得知连接到哪些端口的主机离开了网络,就可以通知主机处理部分删除对应的主机条目。

算法2:检测流表更薪

3.链路发现处理

这个部分主要是检查lldp包,以防止链路伪造攻击。在控制器下发的lldp包中添加校验字段,并将该lldp包中的交换机id号、端口号和对应的随机字符串等信息记录在列表中,用于校验控制器收到的lldp包,从收到的lldp包排除伪造的lldp包。根据lldp包中端口信息,查询主机列表,排除重放攻击产生的lldp包等。

当控制器开始下发lldp包时候,本方案给每条lldp消息上加入一个由哈希函数产生的随机字符串作为校验字段,并将该随机字符串与交换机端口号存储起来。为了简单高效,校验字段采用了哈希函数产生的字符串低32位。

当控制器收到lldp包时候,使用算法3可以检查出攻击者发送的lldp包。算法3的输入是控制器收到的lldp包。每当控制器收到lldp包时,lldp消息处理部分首先检查lldp中的校验字段、交换机id号和端口号是否与存储的内容一致,如果校验字段不一致,就认为存在攻击行为。如果一致,在lldp包中,通过lldp包中包含的交换机id号和端口号,查找维护的主机列表中是否存在该端口的信息,如果存在,则说明该端口是直连主机的端口,而控制器不应该收到该lldp包,由此判断该lldp包是重放攻击产生的。

算法3:检查lldp包真实性

综上,本具体实施方案是在sdn控制器拓扑管理服务中添加网络拓扑信息的验证功能,通过监听控制器收到的packet-in消息来判断主机是否真实、监听控制器下发的flow-mod消息和flow-delete消息来判断某个端口的主机是否离开网络来防止流量劫持攻击,以及监听控制器下发的lldp包来防止伪造链路攻击。本实施方案具有开销小、实现简单且不破坏sdn原有设计原则的优点。

以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。

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