SDN网络拓扑污染攻击防御机制研究

郑 正 1 徐明伟 2 李 琦 1 张 云 1

1 (清华大学深圳研究生院 广东深圳 518055)

2 (清华大学计算机科学与技术系 北京 100084)

(13222026288@163.com)

软件定义网络(software-defined networking, SDN)起源于2006年斯坦福大学的Clean Slate研究课题,2009年SDN的概念正式被提出.此后SDN相关技术的研究迅速开展起来,成为近年来的研究热点.与传统网络不同,SDN是逻辑上集中的网络,将网络中的控制平面和数据转发平面分离,从而让网络管理者能够更加灵活地管理网络、解决网络突发情况.目前越来越多的公司部署了SDN相关技术,例如谷歌公司采用SDN技术优化其数据中心互连.然而,SDN系统设计之初没有考虑到的安全漏洞逐渐暴露出来,例如SDN拓扑污染攻击 [1] .随着SDN应用越来越广泛,SDN安全性问题也凸显出来.

SDN拓扑污染漏洞是控制器底层的拓扑服务中存在的安全漏洞,直接影响SDN的可用性.拓扑服务通过搜集下层网络信息,给上层应用和计算路由等主要网络服务提供全网的拓扑信息.因此,解决拓扑服务的安全漏洞对于研究和应用SDN至关重要.Hong等人 [1] 首次研究防御SDN拓扑污染攻击的方案.但是,该方案中提出的方法并不能有效地防御拓扑攻击.此外,该方案不仅破坏了SDN的控制和数据相分离的原则,而且引入了非常大的存储开销.

本文提出新的防御方案——SecTopo,通过监控交换机和控制器之间传输的拓扑信息——主机接入和位置改变、流表项的增删、发送和接收的LLDP消息等来收集主机信息和交换机流表项变化信息等相关信息,然后对拓扑变化的消息进行校验,从而发现攻击行为,并发出警报.实验证明,部署SecTopo后,控制器吞吐量仅下降了4.6%,引入了极小的开销.

1 SDN拓扑管理原理

SDN通过对上层应用(例如负载均衡和最短路径路由服务等)提供可编程接口,使得应用能够根据控制器提供的拓扑信息进行路由计算.控制器中的拓扑管理服务负责维护拓扑信息,主要包含3个部分功能:1)发现交换机;2)发现主机;3)发现链路.目前已知的拓扑管理服务漏洞存在于主机发现和链路发现这2个部分:

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

2) 链路发现原理.控制器使用开放流量发现协议(OFDP)动态检查SDN交换机之间的有效链路,该协议通过发送链路层发现协议(LLDP)包来实现.

链路发现原理的基本过程如图1所示,控制器每隔一段时间向SDN交换机发送LLDP消息,SDN交换机 X 转发该LLDP包,下一跳交换机 Y 收到来自交换机 X 的LLDP包后转发给控制器,控制器通过该消息就可以学习到一条从交换机 X 到交换机 Y 的单向链路.

Fig. 1 Procedure of link discovery in SDN
图1 SDN网络链路发现过程

2 SDN拓扑攻击

2 . 1 网络用户流量劫持攻击

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

Fig. 2 Procedure of Web client harvest
图2 劫持网络用户流量过程

2 . 2 链路伪造攻击

控制器通过LLDP包探测网络中有效链路,而链路发现服务必须要满足2个条件:1)确保LLDP包没有被篡改过;2)确保LLDP包只在SDN交换机间传播.但在实际中,这2点是无法保证的.很多SDN控制器源码是开源的,任何人都可以获取LLDP包格式和每个字段的语义,并且交换机每个端口都可以发送LLDP包,包括连接着主机的端口.

1) 注入伪造LLDP包.攻击者通过给直连的交换机发送伪造的LLDP包发起攻击.如图3所示,通过监控来自SDN交换机的流量,攻击者能够获得真实的LLDP包,并且很容易破解 LLDP包里每个字段的语义.攻击者按照LLDP包格式,根据攻击需求伪造相应的LLDP包,或者直接修改真实的LLDP包,例如,将LLDP包中DPID、端口号进行修改,再将其发送给直连SDN交换机 A .当交换机 A 收到LLDP包后,便会给控制器发送该LLDP包.于是,控制器就会学习到一条攻击者伪造的链路.

Fig. 3 Procedure of faked LLDP injection
图3 伪造LLDP包注入过程

2) 重放LLDP包.在重放攻击中,攻击者将一台目标交换机发来的LLDP包重放给另一台目标交换机,这样就在2台交换机之间构造出一条虚假链路.攻击场景如图4所示,攻击者控制多台主机,预先找好适合重放的主机,攻击者通过与交换机 Y 直连的重放主机控制其他被攻陷的主机.图4中,虚线是控制器视角下2个主机之间的通信信道(该信道是由攻击者构造),实线表示的是实际的通信信道.当主机 A 收到来自交换机 X 的LLDP包时,攻击者让主机 A 通过隧道等方式将LLDP包发给重放主机.攻击者根据攻击需求让重放主机将LLDP包也以同样方式发送给主机 B ,主机 B 将LLDP包发给与之直连的交换机 Z .当交换机 Z 收到LLDP包时候,按照正常的处理步骤发送给控制器,控制器便学习到一条由攻击者伪造的不存在的链路.

Fig. 4 Procedure of LLDP relay
图4 LLDP重放攻击方法

2 . 3 漏洞分析和现有方案

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

文献[1]提出了TopoGuard模型来防御拓扑污染攻击,该模型是通过验证主机迁移的前置和后置条件来判断是否存在主机位置劫持攻击.主机迁移的前置条件是控制器收到端口的Port_Down信号;后置条件是迁移结束以后,控制器给该主机原来的位置发送ICMP探测的结果是不可达的,确保在原来的位置上不能再访问该主机.只有满足这2个条件才能确定该主机位置移动是真实的.

针对篡改LLDP包的攻击行为,该模型提出的防御措施是计算LLDP中DPID和端口号的HMAC值,通过在LLDP包中放置HMAC值来验证.针对重放,该模型使用检查发出端口的设备类型的方式来防御.文献[1]认为攻击主机会发送只有主机才能产生的流量,例如ARP流量.控制器根据Packet-In消息来决定该属性的值(主机或交换机).但是该方案存在3个缺陷:

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

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

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

3 拓扑污染防御 SecTopo

3 . 1 方案概述

为了解决拓扑污染攻击,我们提出了SecTopo.SecTopo在SDN控制器拓扑管理服务中提供网络拓扑信息的验证功能.SecTopo的基本目标就是建立一个有效验证网络拓扑信息的机制.SecTopo结构如图5所示,SecTopo主要包含3个验证模块:主机接入检查模块、链路发现处理模块和流表项处理模块.主机接入模块和流表项处理模块用于解决主机位置劫持攻击,而链路发现处理模块用于解决链路伪造攻击.

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

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

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

Fig. 5 The architecture of SecTopo
图5 SecTopo结构图

3 . 2 主机接入检查模块

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

算法1描述了主机接入检查部分的处理步骤,输入为SDN交换机询问主机的流表项消息,输出为是否相信该主机.通常,当主机接入网络时,由于主机直连的交换机查找不到对应的流表项,会向控制器发送含有主机ARP消息的Packet-In消息.主机接入检查部分通过监听这类的Packet-In消息来学习主机的信息,并在主机信息表中记录下来.当主机离开了网络,需要从列表中删除该条目,这部分是通过流表项处理部分来完成的.

此外,当1台主机长时间没有发送流量,主机直连的交换机上关于该主机的流表项全部过期后,该主机又开始发送流量时,在主机列表中并不存在该主机消息,控制器收到关于该主机的Packet-In消息后,SecTopo需要将该主机重新加入主机列表.

算法1 . 主机接入检查.

输入:询问流表项的Packet-In;

输出:True或False.

temp = MacAddress , switchid , portnum ;

/*从Packet-In消息中提取MAC,SWID,PORT*/

② IF Packet-In中消息类型为ARP THEN

③ IF Packet-In包含的主机MAC地址在

hostlist 中 THEN

hostlist . add ( temp );

⑤ END IF

⑥ RETURN True;

⑦ END IF

⑧ IF Packet-In消息类型为IPv4 THEN

⑨ IF主机的MAC地址已在 hostlist

THEN

⑩ IF temp hostlist 中1个条目THEN

RETURN False; /*检查到攻击行为*/

END IF

ELSE

hostlist . add ( temp ); /*加入主机列表*/

END IF

RETURN True;

END IF

算法1主要步骤为建立表格和查询表格,时间复杂度在 O ( n ).根据2.1节提到的网络流量劫持,攻击者使用网络中某个服务器的IP地址和物理地址,发送伪造的主机流量,例如IPv4流量,直连的交换机收到该主机流量后会向控制器发送含有IPv4的Packet-In消息.当该部分收到的Packet-In消息包含的是IPv4网络包,会检查该Packet-In消息里的主机物理地址是否存在于主机表格中,如果存在,再检查表格中该条目的其他的信息和Packet-In消息里对应信息是否符合,如果信息不符合,就认为是攻击行为.

3 . 3 流表项处理模块

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

算法2描述了这部分流表项处理的流程,其输入是下发流表项和流表项删除的信号.当有流表项下发时,根据下发的流表项中的交换机ID号、端口号和主机MAC地址,增加该条目的流表项数目.当收到来自交换机直连主机流量进入网络的流表项过期消息时,就减少对应端口的流表项数目.当主机直连的交换机上以该主机MAC地址为源地址的流表项数目为0时,SecTopo就认为该主机离开了网络,将主机表格中对应的主机条目删除,这样就实现了主机处理部分删除主机列表中离开网络的主机的功能.算法2的主要步骤是建立表格和查询表格,时间复杂度为 O ( n ).

算法2 . 检测流表更新.

输入:下发流表项信号 siginstall 、删除流表项信号 sigdelete .

temp_ 1= srcmac , switchid , portnum ;

/*从消息中提取源MAC,SWID,PORT*/

② IF siginstall ==True THEN /*下发流表项时*/

③ IF temp_ 1 匹配 flowlist 中条目 A

THEN

count = count +1; /*条目 A count 值加1*/

⑤ ELSE

flowlist . add ( temp_ 1); /*新建1个条目*/

count =1;

⑧ END IF

⑨ END IF

⑩ IF sigdelete ==True THEN /*交换机删除1个流表项时*/

IF temp_ 1 匹配到 flowlist 的条目 B

THEN

count = count -1;

IF count ==0 THEN

DELETE flowlist 中的条目 B ;

DELETE hostlist 中匹配 temp_ 1的条目;

END IF /*认为该主机离开网络了*/

END IF

END IF

3 . 4 链路发现处理模块

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

当控制器开始下发LLDP包时候,SecTopo给每条LLDP消息上加入1个由Hash函数产生的随机字符串作为校验字段,并将该随机字符串与交换机端口号存储起来.为了简单高效,本文的实现参考了文献[2],校验字段采用了Hash函数产生的字符串低32位.

当控制器收到LLDP包时,使用算法3可以检查出攻击者发送的LLDP包.算法3的输入是控制器收到的LLDP包.每当控制器收到LLDP包时,LLDP消息处理部分首先检查LLDP中的校验字段、交换机ID号和端口号是否与存储的内容一致.如果校验字段不一致,就认为存在攻击行为;如果一致,在LLDP包中,通过LLDP包中包含的交换机ID号和端口号,查找3.2节提出的主机列表中是否存在该端口的信息,如果存在,则说明该端口是直连主机的端口,而控制器不应该收到该LLDP包,由此判断该LLDP包是重放攻击产生的.算法3主要步骤是顺序查询表格,时间复杂度为 O ( n ).

算法3 . 检查LLDP包真实性.

输入:来自交换机的LLDP;

输出:True 或 False.

temp_ 2= switchid , portnum , token ;

/*从LLDP中提取信息*/

② IF收到的LLDP无法匹配 LLDPlist 中条目THEN

③ RETURN False; /*则认为是伪造的

LLDP*/

④ END IF

⑤ IF temp_ 2. switchid , portnum 匹配

hostlist 中条目 C THEN

⑥ RETURN False;

⑦ END IF

3 . 5 与TopoGuard的比较

与现有方案TopoGuard相比,本文提出的SecTopo在控制层不需要构造数据层探测包的情况下,可以更有效地防御拓扑污染攻击.此外,SecTopo可以有效地防御重放攻击,并支持网络的动态更新.具体比较如表1所示:

Table 1 The Comparision of SecTopo and TopoGuard

表1 SecTopo与现有方案对比

TypesofAttackDefenseSolutionTopoGuardSecTopoHostLocationHijackingAttackThecontrollermustreceiveaPort_DownsignalandsendanICMPwiththeresultofhostunreachable.Ifalltheflowitemsaboutthehostareoutofdate,thehostleavesthenetwork.FakeLLDPInjectionCheckLLDPbyHMACofportnumberandswitchID.AddarandomfieldinLLDPtocheckLLDP.LLDPRelayRecordthetypeofdevicesconnectedtoeachport,anddetecttheattackbytheserecordswhichcantupdatedynamically.Detecttheattackbyadynamicallyupdatehostlist.

4 实验评估

4 . 1 实验设置

本实验使用Floodlight1.1版本的控制器,使用Mininet2.2.1版本作为网络模拟器,并使用Open vSwitch(OVS)2.3.2版本作为OpenFlow交换机.实验的攻击代码是使用Scapy工具编写的.本实验的硬件测试环境是安装了Ubuntu14.04TLS版本的PC机,内存为4 GB,处理器为Intel Core i5-3470.实验代码采用嵌入方式,在3个相关程序对应函数中添加或修改相关代码,总计增加310行左右.

本实验部分进行了2组实验,分别是验证方案有效性和测试方案性能.验证有效性和测试性能的实验中,为了提高测试精度,不引入其他影响因素,故采用了图6所示的拓扑.在测试时间开销时,多个节点情况下的平均时间开销变化不大.在测试吞吐量时,在交换机和主机拓扑规模变大时,控制器吞吐性能会受到影响.

Fig. 6 Topology graph of the experiment
图6 实验拓扑图

4 . 2 方案有效性

本实验验证SecTopo是否能够检测出网络拓扑污染攻击.控制器运行SecTopo模型,使用Scapy工具模拟实现网络拓扑污染攻击,通过控制台输出来观察SecTopo对攻击的反应.

1) 检测主机位置劫持攻击.主机 A 为正常用户,主机 B (MAC:00:00:00:00:00:02)作为攻击者,以主机 A (MAC:00:00:00:00:00:01)的身份向直连的交换机发送网络流量,在实验环境中模拟实现攻击.通过控制台的输出,如图7所示,观察到SecTopo成功地检测出了主机 B 发出的伪造流量.

Fig. 7 The detection of host position attack
图7 主机位置劫持检测

从图7中,我们看到主机列表中存储的是主机 A 原本的位置信息,是在交换机 X (交换机ID号为00:00:00:00:00:00:00:01)的端口1处.主机 B 声称 A 移动到了交换机 Y (交换机ID号为00:00:00:00:00:00:00:02)的端口1处.SecTopo的主机接入检查部分通过检查Packet-In中交换机的ID和端口号,与主机列表中对应信息作对比,发现位置信息不符合.SecTopo就及时地报告错误,阻止了以后的步骤,避免了拓扑污染.

2) 检测链路伪造攻击.LLDP包中的校验字段部分的产生过程,参考了文献[2]中产生密钥的方法.通过Java产生随机数,使用加密库文件的API对产生的随机数计算散列值.实验选用的Hash函数是SHA1,选取散列值的低32 b作为校验字段.当攻击者伪造LLDP包,SecTopo通过LLDP包中的校验字段检测出伪造包.对剩下的LLDP包进行重放攻击检查.这样分开处理的原因是尽可能减少在检查LLDP包上的时间开销,保证最终控制器获取的链路信息是真实的.实验中仍然是使用Scapy工具来构造攻击流量,图8显示SecTopo检查到由Scapy构造的攻击包.

Fig. 8 The detection of link fabrication attack
图8 链路伪造攻击的检测

4 . 3 方案性能

SecTopo对于控制器性能的影响和网络数据包延迟影响主要集中在对控制器吞吐量变化的影响和产生并且检查LLDP包的时间开销上.本部分测试SecTopo对于控制器的计算开销的影响和吞吐量变化的影响.SecTopo的时间开销主要来自链路发现处理部分中产生随机字符串和计算随机数的散列值、处理Packet-In消息这2个部分.产生和检查每条LLDP包分别调用不同程序实现,并且时间开销主要集中在产生和检查LLDP包上,故方案的计算开销只与LLDP包的数目有关,与网络拓扑结构无关,为了减少其他因素影响,测试开销也采用图6拓扑.实验使用Java system.nanoTime API对LLDP包的构造和检验这2部分的时间开销做了测试评估.实验中共测试了4组,每组为50次构造和校验LLDP的时间开销,最终平均的时间开销如表2所示:

Table 2 Token s Overhead on the Floodlight
表2 校验字段对Floodlight的时间开销 ms

ProceduresofLinkDiscoveryCostfromSecTopoTotalCostConstruction0.0750.285Check0.0100.360

表2展示了2个部分的开销情况:LLDP包的构造和LLDP包校验.对于LLDP包的构造,主要的时间开销是在校验字段的产生部分,也就是调用随机数生成函数和计算随机字符串这2个部分.构造每个包平均需要0.075 ms,构造部分占控制器构造LLDP包总时间的比例约为26.31%.

我们断言,伪造LLDP包的攻击难度和资源要求远低于实现重放LLDP攻击的难度和需求,所以网络中存在伪造链路的攻击流量中,伪造的LLDP包占的比重会更大.所以在正常的验证LLDP包的过程中,SecTopo时间开销的影响主要是在检查校验字段是否与之前产生的值相符合,这部分的平均开销为0.010 ms,平均占控制器处理时间总比例约为2.78%.事实上,在测试的4组数据中有2组数据显示,校验LLDP的校验字段值的时间开销接近0.001 ms,虽然存在API测试的时间精度问题,但是这也反映出SecTopo对于控制器的影响的确很小.

在测试SecTopo对于控制器吞吐量影响的实验中,使用Cbench测试控制器使用方案前后吞吐量变化情况.实验分别检查了在每台交换机连接100台主机,网络交换机数量在1,2,4,6,8,10,16时控制器吞吐量变化情况.结果如图9所示:

Fig. 9 Throughput change of controller
图9 控制器吞吐率的变化

总的来说,网络中交换机数目相同时,控制器使用SecTopo方案前后吞吐量变化很小.特别是在交换机数目为1,2,10,16时,从图9可以看出2条折线的差距很小.2条折线的变化趋势一致,网络中交换机数目从1~4台时控制器的吞吐量都是快速上升;从4台以后,吞吐量都是逐渐下降,并且趋于稳定,此时控制器面对更多的交换机请求无法及时处理.平均来说,部署SecTopo后,控制器的吞吐量仅仅下降了4.6%,由此可以认为,SecTopo对于控制器处理消息的吞吐量影响很小.

5

目前,SecTopo能够基本解决拓扑污染问题.值得注意的是,当攻击者获取了服务器MAC地址和IP地址后,服务器离开网络,攻击者可以通过其他端口接入网络,并伪装该服务器.在这种情况下,SecTopo无法判别该服务器是否是攻击者伪装的,所以,这种攻击是SecTopo无法防御的.这种攻击的一种可行的防御方法是扩展ARP消息,即每台主机在接入网络之前,由网络管理员发放1个有效且唯一的校验字段.当主机连入网络发送ARP包时,将该校验字段放入ARP消息中,控制器通过该ARP消息来验证主机的身份.

6 相关工作

SDN安全问题包括数据转发策略异常检测和路径验证.对于数据转发策略异常检测,目前有2种检测机制:1)在控制平面和数据平面之间添加1个中间层代理来对每一条下发的策略进行检测;2)在控制器上部署一个策略检测的部件即可完成策略异常检测.目前关于引入中间层代理的一些研究有:数据包包头分析(HSA) [3] 通过几何模型提出了一种普适的独立于协议的框架来验证网络的配置问题.NetPlumber [4] 利用HSA的思想实现了网络一致性问题的检测,例如回环、黑洞等.VeriFlow [5] 解决了对网络设备的依赖.关于部署策略检测部件的机制包括:Maple [6] 系统.NetPlumber和VeriFlow没有提供一个有效的自适应解决方案来处理策略违反问题.FlowGuard [7] 在此基础之上,提出了一个架构来解决这些问题.SE-Floodlight [8] 是部署在Floodlight控制器基础之上的安全扩展,这种扩展部件引入了身份验证、优先级等安全机制.

路径验证主要通过数据包验证和基于流量转发异常检测.基于数据包验证的方案包括:ICING [9] 提供的路径验证机制、Passport [10] 实现的数据源验证以及OPT方案 [11] 等.基于流量转发异常检测是基于多跳数据转发统计信息进行验证,包括Sphinx [12] 和ShortMAC [13]

在文献[14]中,提出了传统网络中存在的2类OSPF拓扑攻击问题,跟本文所涉及的SDN拓扑污染攻击比较相似.OSPF是传统网络中最常用的内部网关路由协议,该协议规定路由器通过LSA包来学习整个网络中其他路由器的信息.针对OSPF的第1种攻击方法是攻击者假设自治域内的所有路由器配置的是相同的密钥,通过控制1台域内路由器向受害者路由器发送一条伪造的LSA,诱使受害者与网络中一个不存在的路由器建立邻接关系.这种攻击方法与通过注入伪造LLDP包实施链路伪造攻击类似,分别使路由器或控制器学习到虚假的网络拓扑,在网络中产生黑洞.第2类攻击利用了LSA的特点,在OSPF的RFC文献中提出,如果2个LSA的序列号(sequence number)、校验和(checksum)和寿命(age)这3个字段相同,就认为这2个LSA相同.而在实际中,只要序列号和校验和相同,就认为2个LSA是相同的.所以攻击者可以产生能匹配最近产生LSA的伪装LSA,通过广播实施攻击.当攻击者收到受害者路由器真实的LSA,就广播伪装LSA,当邻居路由器先收到伪装LSA,再收到真实LSA就会认为真实LSA是重复包,进行丢弃,使得全网学习到错误的拓扑信息.

7

本文总结了现有的SDN拓扑攻击和防御工作,提出了轻量级的拓扑污染问题的防御方案——SecTopo,一种安全的动态管理接入网络主机的算法和安全的链路发现算法,并且对一些可能的情况进行了分析.下一步的研究主要是解决主机劫持攻击的对象为普通用户时的攻击防御问题,并且进一步寻找和解决SDN底层服务的漏洞.

参考文献

[1] Hong Sungmin, Xu Lei, Wang Haopei, et al. Poisoning network visibility in software-defined networks: New attacks and countermeasures[C] //Proc of ISOC NDSS’15. Reston, VA: ISOC, 2015: 8-11

[2] Li Qi, Zhang Xinwen, Zheng Qingji, et al. LIVE: Lightweight integrity verification and content access control for named data networking[J]. IEEE Trans on Information Forensics and Security, 2015, 10(2): 308-320

[3] Kazemian P, Varghese G, McKeown N. Header space analysis: Static checking for networks[C] //Proc of USENIX NSDI’12. Berkeley, CA: USENIX Association, 2015: 113-126

[4] Kazemian P, Chang M H, Zeng Hongyi, et al. Real time network policy checking using header space analysis[C] //Proc of USENIX NSDI’13. Berkeley, CA: USENIX Association, 2013: 99-111

[5] Khurshid A, Zou Xuan, Zhou Wenxuan, et al. VeriFlow: Verifying network-wide invariants in real time[C] //Proc of USENIX NSDI’13. Berkeley, CA: USENIX Association, 2013: 15-27

[6] Voellmy A, Wang Junchang, Yang Y R, et al. Maple: Simplifying SDN programming using algorithmic policies[C] //Proc of ACM SIGCOMM’13. New York: ACM, 2013: 87-98

[7] Hu Hongxin, Han W, Ahn G J, et al. FLOWGUARD: Building robust firewalls for software-defined networks[C]//Proc of ACM SIGCOMM Workshop HotSDN’14. New York: ACM, 2014: 97-102

[8] Porras P, Cheung S, Fong M, et al. Securing the software-defined network control layer[C] //Proc of ISOC NDSS’15. Reston, VA: ISOC, 2015: 1-15

[9] Naous J, Walfish M, Nicolosi A, et al. Verifying and enforcing network paths with ICING[C] //Proc of ACM CoNEXT’11. New York: ACM, 2011: 1-12

[10] Liu Xin, Li Ang, Yang Xiaowei, et al. Passport: Secure and adoptable source authentication[C] //Proc of USENIX NSDI’08. Berkeley, CA: USENIX Association, 2008: 365-378

[11] Kim H J, Basescu C, Jia Limin, et al. Lightweight source authentication and path validation[C] //Proc of ACM SIGCOMM’14. New York: ACM, 2014: 271-282

[12] Mohan D, Rishabh P, Kshiteej M, et al. SPHINX: Detecting security attacks in software-defined networks[C] //Proc of ISOC NDSS’15. Reston, VA: ISCO, 2015: 8-11

[13] Zhang Xin, Zhou Zongwei, Hsiao H C, et al. ShortMAC: Efficient data-plane fault localization[C/OL] //Proc of ISOC NDSS’12. Reston, VA: ISOC, 2012 [2016-10-02]. http://repository.cmu.edu/cylab/84/

[14] Nakibly G, Kirshon A, Gonikman D, et al. Persistent OSPF attacks[C/OL] //Proc of ISOC NDSS’12. Reston, VA: ISOC, 2012 [2016-10-02]. http://crypto.stanford.edu/~dabo/papers/ospf.pdf

Defending Against SDN Network Topology Poisoning Attacks

Zheng Zheng 1 , Xu Mingwei 2 , Li Qi 1 , and Zhang Yun 1

1 ( Graduate School at Shenzhen , Tsinghua University , Shenzhen , Guangdong 518055) 2 ( Department of Computer Science and Technology , Tsinghua University , Beijing 100084)

Abstract Software-defined networking (SDN) is a new network paradigm. Unlike the conventional network, SDN separates the control plane from the data plane. The function of the data plane is enabled in switches while only the controller provides the functions of the control plane. The controller learns topologies of the whole networks and makes the traffic forwarding decisions. However, recent studies show that there exist some serious vulnerabilities in topology management services of the current SDN controller designs, which mainly exists in host tracking service and link discovery service. Attackers can exploit these vulnerabilities to poison the network topology information in the SDN controllers. What’s more, attackers can even make the whole network down. Fortunately, researchers have paid some attention to this serious problem and proposed their defense solution. However, the existing countermeasures can be easily evaded by the attackers. In this paper, we propose an effective approach called SecTopo, to defend against the network topology poisoning attacks. Our evaluation on SecTopo in the Floodlight controller shows that the defense solution can effectively secure network topology with a minor impact on normal operations of OpenFlow controllers.

Key words software-defined networking (SDN); controller; switch; network topology poisoning; network security

摘 要 软件定义网络(software-defined networking, SDN)是一种新型的网络体系结构,SDN网络将传统网络的数据层和控制层进行分离,数据层由支持OpenFlow协议的交换机实现,控制层由控制器来实现.控制器维护全网拓扑信息,集中管理网络流的路由决策.现有研究表明,在控制器的拓扑服务管理中存在严重的漏洞,主要存在于主机发现服务和链路发现服务中,攻击者利用这类漏洞可以进行网络拓扑污染攻击.目前研究者们提出的拓扑污染防御方案存在设计漏洞,很容易被攻击者绕过.故提出一种轻量级的符合SDN场景的防御方案——SecTopo——实现拓扑污染防御.通过在Floodlight控制器上测试SecTopo表明,SecTopo不仅能有效防御攻击,而且仅引入的开销极小.

关键词 软件定义网络;控制器;交换机;网络拓扑污染;网络安全

中图法分类号 TP309

收稿日期: 2016-10-11;

修回日期: 2016-12-30

基金项目: 国家自然科学基金项目(61572278,61625203);国家重点研发计划项目(2016YFC0901605,2016YFB0800102);深圳基础研究基金项目(JCYJ20170307153259323)

This work was supported by the National Natural Science Foundation of China(61572278, 61625203), the National Key Research and Development Program of China(2016YFC0901605, 2016YFB0800102), and the Research and Development Program of Shenzhen (JCYJ20170307153259323).

通信作者: 李琦(qi.li@sz.tsinghua.edu.cn)

Zheng Zheng , born in 1992. Master. His main research interest is SDN security.

Xu Mingwei , born in 1971. PhD, professor. Senior member of CCF. His main research interest is future Internet architecture.

Li Qi , born in 1979. PhD, associate professor in Tsinghua University. His main research interest include Internet security, cloud security.

Zhang Yun , born in 1992. Master candidate. Her main research interest is SDN security.