一种SDN网络的ARP攻击检测方法与流程

文档序号:12132385阅读:539来源:国知局
一种SDN网络的ARP攻击检测方法与流程

本发明属于计算机网络与系统安全领域,主要涉及一种SDN网络的ARP攻击检测方法。



背景技术:

软件定义网络SDN是一种新型网络体系结构,将网络的控制与转发分离,由控制器实现对全网集中化控制,且北向接口开放可编程,极大的便捷了网络的设备管理、资源调度与应用服务开发。近年来,SDN越来越受互联网公司重视,已有不少商用案例落地应用,如谷歌基于SDN搭建了B4网络来改造其WAN网,瑞士Abraxas公司采用华为基于SDN的数据中心网络方案,建设了虚拟化多租户云数据中心网络。

SDN改变了网络架构,但接入主机仍然遵循TCP/IP协议规则进行通信,需要ARP协议来做地址解析工作。具体的ARP数据包处理过程如图1所示,在该网络中的主机H1与H2之间的一轮ARP交互过程(即从H1向H2发出ARP请求包,到H1收到H2的ARP响应包期间的通信过程)如下:

(1)主机H1发送一个广播的ARP请求包,请求H2的MAC地址。

(2)交换机S1收到该ARP请求包,没有匹配的流规则,因此将此ARP请求包封装为Packet_in数据包发送给控制器。

(3)控制器收到S1上报的Packet_in数据包首先从中学习主机H1的MAC、IP地址及接入位置信息(主机的接入位置即为所连接的交换机身份ID和端口号),并以主机H1的MAC地址为索引,为其建立或更新主机信息表项,内容主要包括主机的MAC、IP地址和接入位置信息。其次,控制器将向交换机S1发送Packet_out数据包指示其广播该ARP请求包,S1收到指示将该ARP请求包进行广播。

(4)交换机S2收到S1广播的ARP请求包同样因为没有流规则,再次将其封装为Packet_in数据包上报控制器。

(5)控制器向交换机S2发送Packet_out数据包,指示其进行广播,S2将该ARP请求包广播发送到了主机H2处。

(6)主机H2收到该ARP请求包,发送ARP响应包到了交换机S2。

(7)交换机S2此时如有匹配的流规则将直接转发,否则将此ARP响应包封装为Paceket_in发送给控制器。

(8)控制器收到该ARP响应包后,首先更新H2的主机信息表项。根据已经掌握网络拓扑及主机H1的接入位置(从步骤(3)中得知),控制器可以计算出从H2到H1之间的转发路径,进而向交换机S1、S2下发流规则。有了流规则交换机S2便按照匹配到的动作指示将ARP响应包转发到交换机S1。

(10)交换机S1此时也有了流规则,直接根据匹配到的动作将该ARP应答包发送给H1。

至此,主机H1收到H2的ARP响应包,知道了H2的MAC地址。

根据该ARP数据包处理过程我们可以看出,SDN网络中仍然存在ARP攻击。并且,文献[Mohan Dhawan,Rishabh Poddar,Kshiteej Mahajan,Vijay Mann:SPHINX:Detecting Security Attacks in Software-Defined Networks.NDSS 2015]指出几种主流控制器都不能抵抗ARP攻击。总结一下,主要有以下两种攻击形式:

攻击形式1:攻击者盗用合法主机的IP或者MAC地址,欺骗控制器将主机的“MAC-IP”映射关系更新错误。

如图2中,设主机H1是攻击者,H1的MAC地址为MAC1,IP地址为IP1,H2的MAC地址为MAC2,IP地址为IP2。攻击者H1仅盗用H2的IP或者MAC地址,发送虚假ARP数据包,交换机S1收到该ARP包后没有匹配的流规则,将该包封装成Packet_in上报给控制器,控制器收到后从中学习源主机的信息,从而更新出“MAC1-IP2-Location1”,或者“MAC2-IP1-Location2”,这样不匹配的主机信息表项,从而影响主机H2的正常通信。

攻击形式2:攻击者同时盗用合法主机的MAC、IP地址,欺骗控制器将主机的接入位置信息更新错误。

如图3中,H1同时盗用H2的MAC、IP地址,发送虚假ARP包,交换机收到后封装为Packet_in上报给控制器,控制器收到后从中学习主机的信息,从而遭受欺骗,为H2维护“MAC2-IP2-Location1”的错误主机信息表项,在接下来的通信中,转发模块将根据控制器维护的错误的主机位置信息,计算错误的转发路径。

攻击形式2又可分为如下两种情况:

1.主机H2还在线,攻击者H1盗用H2的MAC、IP地址,发送ARP数据包;

2.主机H2离线了,攻击者H1盗用H2的MAC、IP地址,发送ARP数据包;

SDN网络中ARP攻击不仅可以发生而且攻击影响也更加严重,主要原因在于,攻击者通过发起ARP攻击可以欺骗控制器建立错误的网络拓扑信息,使得网络中一切基于拓扑的应用服务都受到攻击影响。如:路由模块将计算错误的转发路径,导致攻击者可以轻易窃听到用户数据。

关于ARP攻击的防范,传统网络中的解决方案是,由目的主机对接收到的ARP包做信息校验,识别ARP攻击。然而,在SDN网络中,即使目的主机识别出了ARP攻击,控制器已经遭受欺骗,建立了错误的拓扑信息。所以,传统网络的解决方案不适用于SDN网络。而已有的SDN网络中的攻击检测方法,如,文献[Mohan Dhawan,Rishabh Poddar,Kshiteej Mahajan,Vijay Mann:SPHINX:Detecting Security Attacks in Software-Defined Networks.NDSS 2015]和文献[S.Hong,L.Xu,H.Wang,and G.Gu,“Poisoning Network Visibility in Software-Defined Networks:New Attacks and Countermeasures,”in NDSS’15.]都不是针对ARP攻击设计的,因而不能准确地识别ARP攻击。



技术实现要素:

本发明的目的在于,设计一种专门用于SDN网络的能够准确检测ARP攻击的方法,该方法尽量不改变SDN网络中原本的ARP数据包传输机制,控制器在ARP数据包的传输过程中就能完成对主机的MAC、IP及接入位置真实性的验证,能够自动化的区分攻击情况与主机迁移引起的信息改变。

为解决上述问题,本发明提供一种SDN网络的ARP攻击检测方法,其特征在于,包括注册信息阶段和攻击检测阶段,

其中,注册信息阶段涉及到三个步骤的工作:主机生成哈希链、主机注册哈希链信息和控制器为主机建立验证信息表;

攻击检测阶段涉及到四个步骤的工作:控制器记录主机的MAC、IP地址以及初始接入位置,控制器验证源主机的“MAC-IP”映射的真实性,控制器验证源主机MAC地址的真实性,控制器确认目的主机的最新接入位置。

上述的一种SDN网络的ARP攻击检测方法,其特征在于,注册信息阶段涉及到的三个步骤具体为:

步骤11,主机首先生成一个随机序列W,然后以W为根生成长度为Len的哈希链;

步骤12,用户在控制器处注册主机MAC地址、哈希链长度Len和哈希链的链尾值Hlen(W),在注册信息完成后,用户可申请获得控制器的公钥,以备哈希链耗尽时传递新的哈希链链尾值;

步骤13,控制器以主机的MAC地址为索引为主机建立验证信息表,内容包括主机的MAC地址,验证信息中的哈希次数ci以及验证信息中的哈希值Hci(W),在初始注册阶段,ci=Len,Hci(W)=HLen(W)。

上述的一种SDN网络的ARP攻击检测方法,其特征在于,攻击检测阶段涉及到的四个步骤具体为:

步骤21,在主机申请IP地址过程中,控制器记录主机的MAC地址、申请到的IP地址和初始接入位置,从而在主机信息表中为其添加信息表项;

步骤22,控制器收到封装有ARP请求包的Packet_in数据包后,可借助DHCP服务器验证内层ARP包的源主机的“MAC-IP”映射的真实性;

步骤23,为了检测攻击者同时盗用合法主机的MAC、IP地址的攻击情况,此时,控制器还应验证ARP包中源MAC地址的真实性;

步骤24,验证了源主机“MAC-IP”映射以及MAC地址都真实的之后,控制器向源主机发送ARP响应包,并确认目的主机的最新接入位置,为计算源和目的主机之间的转发路径做准备。

附图说明

图1 SDN网络中主机H1和H2之间的一轮ARP交互过程。

图2是SDN网络中的ARP攻击1:攻击者盗用合法主机的MAC或IP地址。

图3是SDN网络中的ARP攻击2:攻击者同时盗用合法主机的MAC和IP地址。

图4是哈希链示意图。

图5是控制器和主机之间交互的带有验证信息的ARP数据包结构图。

图6是本发明实施例提供的SDN网络实例图。

图7是本发明实施例提供的主机注册信息图。

图8是本发明实施例提供的控制器按照本发明提供的方法检测ARP攻击时,控制器和主机H1、主机H2之间的消息交互图。

图9是本发明实施方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例及附图说明,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种SDN网络的ARP攻击检测方法,由控制器来识别ARP攻击,主机加入网络之前,在控制器处注册MAC地址和哈希链信息,在DHCP服务器为主机分配IP地址的过程中,控制器记录主机的MAC、IP地址以及初始接入位置,通信过程中主机发送ARP请求包被交换机封装为Packet_in数据包上报给控制器,控制器收到后会验证内层ARP请求包中源主机的“MAC-IP”映射以及接入位置的真实性,验证了源主机的各项信息都为真实的才向其发送ARP响应包,与此同时,控制器会确认目的主机的最新接入位置,为计算通信双方之间的转发路径做准备

如图9所示,整个检测方法分为注册信息阶段和攻击检测阶段。其中,注册信息阶段涉及到三个步骤的工作:主机生成哈希链、主机注册哈希链信息和控制器为主机建立验证信息表;攻击检测阶段涉及到四个步骤的工作:控制器记录主机的MAC、IP地址以及初始接入位置,控制器验证源主机的“MAC-IP”映射的真实性,控制器验证源主机MAC地址的真实性,控制器确认目的主机的最新接入位置。

进一步地,注册信息阶段涉及到的三个步骤具体为:

步骤11,主机生成哈希链:主机首先生成一个随机序列W,然后,以W为根生成长度为Len的哈希链,如图4所示,W为哈希链的根,Hi(W)代表对W做i次哈希计算,Len代表哈希链长度。

步骤12,主机注册哈希链信息:用户在控制器出注册主机MAC地址、哈希链长度Len和哈希链的链尾值Hlen(W),本发明假定该注册过程是通过带外传输的,假设该过程是安全的,在注册信息完成后,用户可申请获得控制器的公钥,以备哈希链耗尽时传递新的哈希链链尾值。

步骤13,控制器为主机建立验证信息表:控制器以主机的MAC地址为索引为主机建立验证信息表,内容包括主机的MAC地址,验证信息中的哈希次数ci以及验证信息中的哈希值Hci(W);在初始注册阶段,ci=Len,Hci(W)=HLen(W),到了攻击检测阶段,控制器将会获取哈希链上的哈希值加入验证信息,ci和Hci(W)会被不断更新。

进一步地,攻击检测阶段涉及到的三个步骤具体为:

步骤21,控制器记录主机的MAC、IP地址以及初始接入位置:在主机向DHCP服务器发出请求,申请IP地址的过程中,控制器会记录主机的MAC地址、申请到的IP地址和初始接入位置,从而在主机信息表中为其添加信息表项,该过程与文献[黄韬,刘江,丁健,等.一种基于sdn控制器的dhcp广播处理方法:CN,CN103248724A[P].2013]所述一致。为节省存储空间,在主机下线离开网络时,控制器就可以将该主机的信息表项删除。主机的初始接入位置即为主机申请IP地址时连接的交换机ID和端口号,在数据包中体现为交换机上报的封装有DHCP Discover数据包的Packet_in数据包头部的交换机ID和端口号。

步骤22,控制器验证源主机的“MAC-IP”映射的真实性:控制器收到封装有ARP请求包的Packet_in数据包后,首先根据源主机的MAC地址从主机信息表中查找源主机的信息表项,比对ARP请求包中源主机的MAC、IP地址是否与主机信息表项中的相同;若没有查找到该主机的信息表项,则可能是主机已从原始接入位置下线,导致其主机信息表项被删除,此时,控制器可以向DHCP服务器发送RARP请求包,请求源主机的IP地址,从而验证源主机“MAC-IP”映射的真实性。

步骤23,控制器验证源主机MAC地址的真实性:控制器若能够查找到源主机MAC地址对应的主机信息表项,直接比对该MAC对应的主机信息表项中的接入位置与收到的Packet_in数据包头部的交换机ID及端口号是否一致即可判断源主机的MAC地址是否真实,因为同一时刻一个MAC地址只能连接在一个交换机端口上。

而如果控制器没有查找到源主机MAC地址对应的主机信息表项,说明源主机已从原来的接入位置离开,需进一步验证当前发送ARP包的源主机MAC地址是否真实,并确认真正的源主机此时的接入位置。具体验证方法为如下:

根据Openflow协议,每当交换机的某个端口状态发生改变,即有设备加入或离开,交换机就向控制器发送表示该端口有设备加入或离开的Port-Status数据包,控制器可建立一个未知设备信息的接入位置集合。每当某个交换机发送了表示有设备加入某端口的Port-Status数据包而未见加入的设备发送消息,控制器就将该交换机ID及端口号作为一个元素加入该集合;相反,每当该集合中某个交换机发送了表示设备离开某端口的PortStatus数据包或者是发送了封装有加入设备发送的通信数据包的Packet_in数据包,控制器就将该交换机端口对应的集合元素删除。当交换机发送的是表示有设备离开某端口的Port-Status数据包,控制器还需将接入位置为该交换机端口的主机信息表项删除。

需要验证源主机MAC地址是否真实,并确认真正的源主机此时的接入位置时,控制器就向未知设备信息的接入位置集合中的所有交换机端口发送一个ARP请求包,该ARP请求包的载荷域添加有用源主机和控制器共享的哈希链的根为秘钥(以源主机的MAC地址为标识)加密的交换机ID、端口号、哈希链上的一个哈希值和该哈希值的哈希次数,该ARP请求包的格式如图5所示。加上哈希值的主要目的是使得控制器每次给主机发送的ARP请求包带有的验证信息都不同,防止重放攻击。收到控制器发送的ARP请求包后,只有真正的源主机,即ARP请求包中的源MAC所标识的主机,能够应答出正确的ARP响应包,因为需要在该ARP响应包的载荷域添加上与请求包中格式相同的验证信息,内容不同在于哈希值为二者共享的哈希链上的前一跳值,哈希次数减1。控制器收到ARP响应包后,校验载荷域的验证信息是否正确,即可判断之前发送ARP请求包的源主机的MAC地址是否真实。而若从其他接入位置上收到了携带有正确的验证信息的ARP响应包,控制器就把该位置记为源主机的真实接入位置,并为源主机建立新的主机信息表项。收到了正确的ARP响应包后,控制器还需将主机验证信息表中对应表项的哈希值和哈希次数,更新为该ARP响应包中验证信息所用的哈希链上前一跳的哈希值和哈希次数。

步骤24,控制器确认目的主机的最新接入位置:验证了源主机的“MAC-IP”映射以及接入位置都真实的之后,控制器在主机信息表中查找目的主机的信息表项,找到后直接向源主机发送ARP响应包;若没有找到目的主机的信息表项,说明目的主机已离开网络,可以向DHCP服务器发送ARP请求包,请求目的主机的MAC地址,进而向目的主机发送ARP响应包。响应了源主机的ARP请求后,控制器还需要进一步确认目的主机的最新接入位置,具体确认方法和步骤23所属方法相同。

在如图6所示的SDN网络实例中,有4台交换机S1-S4,4台主机H1-H4,4台主机分别连接在了4台交换机的1号端口上,设主机Hi的MAC地址为MACi,IP地址为IPi,控制器的IP地址为IPc,MAC地址为MACc。我们以主机H1和H2之间的一轮ARP消息交互为例,来解释本发明内容,其中涉及到的各条消息内容如图8所示。

首先,4台主机都在控制器处注册了哈希链信息,如图7所示,设哈希链长度Len=1000,则初始验证信息表项分别为“MACi:1000:H1000(Wi)”,其次,在各个主机申请IP地址的过程中,控制器为各主机建立主机信息表项,主要内容为“MACi:IPi:Si-port1”。

图8中各条消息内容如下:

消息(1):主机H1发送ARP请求包,请求主机H2的MAC地址,交换机S1收到后没有匹配的流规则,将该ARP请求包封装为Packet_in数据包发送给控制器。

消息(2):对应于攻击检测阶段的步骤2,控制器收到Packet_in数据包后,首先验证内层ARP请求包中的“MAC1-IP1”映射关系是否和MAC1对应的主机信息表项中相匹配,匹配则直接发送消息(6),不匹配则认为发生了前文所述的第一种形式的ARP攻击。而若没有找到MAC1对应的主机信息表项,则控制器需要向DHCP服务器发送ARP请求包请求MAC1对应的IP地址,进而验证“MAC1-IP1”是否匹配,并向主机H1发送消息(3)。

消息(3):设此时未知设备信息的接入位置集合内容为{S1-port1,S2-port1,S3-port1},MAC1对应的哈希链此时用到了第100跳,则控制器此时需分别向这三个交换机端口发送ARP请求包,载荷域添加的验证信息分别为EW1(S1-port1||H100(W1)||100)、EW1(S2-port1||H100(W1)||100)、EW1(S3-port1||H100(W1)||100)。之所以要发送多个ARP请求包,是为了在验证发送ARP请求包的主机H1的MAC地址是否真的是MAC1,同时确认MAC1所标识的主机H1的真实接入位置。

消息(4):收到控制器发送的ARP请求包后,只有MAC地址真的是MAC1的主机H1能回答出带有正确的验证信息的ARP响应包,正确的验证信息为:EW1(S1-port1||H99(W1)||99)。

消息(5):控制器收到主机发送的ARP响应包后,重新建立主机H1的主机信息表项:“MAC1:IP1:S1-port1”。同时将MAC1对应的主机验证信息表项更新为:“MAC1:98:H98(W1)”,以备下一次向主机发送ARP请求包时使用。

消息(6):验证了H1的“MAC-IP”映射以及MAC地址的真实性之后,控制器将向主机H1发送ARP响应包,若能在主机信息表中查找到IP2对应的信息表项,则直接发送ARP响应包,否则,需要先向DHCP服务器发送RARP请求包,请求IP2对应的MAC地址。为了保证数据完整性,控制器可在发送给H1的ARP响应包载荷域添加用H(W1)做为密钥对ARP响应包生成的HMAC值:HMACH(W1)(IPC||MACC||IP2||MAC2)。

消息7:若在主机信息表中没有找到IP2对应的信息表项,说明主机H2已从原位置离开,需要发送消息(8)、(9),确认主机H2的最新接入位置。

消息(8)、(9)、(10)的内容类似于(3)、(4)、(5)不再赘述。

关于本发明是如何防范所提到的两种形式的ARP攻击,具体分析如下:

针对攻击形式1,本文方案要求控制器在DHCP服务器为主机分配IP阶段,建立主机信息表,记录了主机的“MAC-IP-接入位置”映射。收到主机发送的ARP包后,根据源MAC地址查询该主机的信息表项,或者向DHCP服务器请求该主机的IP地址,以查到的“MAC-IP”映射为准,控制器便能准确检测主机发送的ARP包中的“MAC-IP”映射是否真实,进而防范这种攻击。

针对攻击形式2中的主机H2在线时,攻击者H1同时盗用H2的MAC地址(MAC2)、IP地址(IP2):在本发明中,控制器收到H1发出的ARP请求包后,会验证ARP包中源主机MAC地址的真实性,即验证当前发送ARP请求包的主机是否真的是MAC2所标识的主机,MAC2标识的主机H2在线时,控制器可根据MAC2查找到H2的主机信息表项,发现H1发ARP请求包的位置和MAC2对应的主机信息表项中的接入位置不一致,即可发现此种攻击。

针对攻击形式2中的主机H2离线时,攻击者H1同时盗用H2的MAC、IP地址:在本发明中,控制器此时已无法从主机信息表中查找到MAC2对应的主机信息表项,会主动向未知设备信息的接入位置集合中的所有交换机端口都发送一个附有加密的交换机端口信息和已共享的哈希链上的一个哈希值及对应的哈希次数的ARP请求包,攻击者H1想要冒充H2必须回答出正确的ARP响应包,不知道H2和控制器共享的哈希链信息,H1自己是无法计算出正确的验证信息的,若截获H2发出的正确的ARP响应包发送给控制器,也会因为交换机上报的封装有ARP响应包的Packet_in数据包头部的交换机端口信息与ARP响应包载荷域中的交换机端口信息不匹配而被发现。

相对于现有研究提出的攻击检测方法,本发明设计的ARP攻击检测方法的好处在于:

1.没有引入额外的消息交互:本发明基本没有改变SDN网络原本的ARP数据包传输机制,控制器在ARP数据包的传输过程中就同时完成了对主机的“MAC-IP”映射以及MAC地址的真实性的验证,并且借助哈希链抵抗重放攻击,不需要额外的消息交互。

2.能够准确判别攻击与正常的主机信息变化情况:文献[Mohan Dhawan,Rishabh Poddar,Kshiteej Mahajan,Vijay Mann:SPHINX:Detecting Security Attacks in Software-Defined Networks.NDSS 2015]中,把所有的主机信息变化情况都不加区分的上报管理员,会增加管理员手动保证网络安全的负担。如,攻击者盗用合法主机的MAC-IP信息对发起ARP攻击和主机发生位置迁移都会引起主机的连接位置信息发生变化,而后者是正常的主机信息改变,尤其是在大规模云计算网络中,主机或虚拟机频繁发生迁移,每次都让让管理员人工判别是否发生攻击,将更加的增加管理负担。本发明要求主机在加入网络之前,在控制器处注册了验证信息,通信过程中,即使主机迁移到新的位置上了,只要能在控制器确认主机的接入位置时应答出带有正确的验证信息的ARP响应包,就不会被误报为攻击情况。

3.能够检测出离线主机遭受的ARP攻击:文献[S.Hong,L.Xu,H.Wang,and G.Gu,“Poisoning Network Visibility in Software-Defined Networks:New Attacks and Countermeasures,”in NDSS’15]所提方案无法检测到攻击者重启主机接入网络,盗用离线主机的MAC-IP信息对发起的ARP攻击,因为该过程满足了方案中设置的识别主机迁移的标志条件。本发明能够检测到这种攻击,因为这种攻击正是前文所述的攻击形式2,如何检测攻击的也已做分析,不再赘述。

本发明提供一种优选的攻击检测方法实现方式如下:

1.控制器端处理ARP数据包的功能实现:

对于这一部分的实现,可以在Floodlight控制器中单独添加一个ARP处理模块,在所有监听与处理Packet_in数据包的模块中,该模块的处理顺序仅次于“Link discovery”和“topology”模块。该模块的主要功能是,从缓冲区中取出Packet_in数据包,并根据以太网类型字段判断其内层封装的是否为ARP包,是ARP请求包则按照发明内容步骤处理,是响应包则查看该ARP响应包是否携带了验证信息,若有验证信息,则找到之前缓存的待处理的ARP请求包,校验该ARP响应包中的验证信息是否正确。若没有携带验证信息则查看是否为来自DHCP服务器的ARP响应包,不是则直接丢弃。

2.主机端发送带有验证信息的ARP响应包的功能实现:

采用国标SHA-256哈希函数来产生哈希链,借助libpcap函数库监听网卡,并捕获到达本机的数据包,通过设置过滤条件,过滤到控制器发送的带有验证信息的ARP请求包,用Openssl库函数实现的AES加解密算法做验证信息的加解密运算,由libnet库函数来构造并发送携带验证信息的ARP响应包。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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