基于SDN云环境检测和缓解ARP攻击的系统及方法与流程

文档序号:18702608发布日期:2019-09-17 23:08阅读:322来源:国知局
基于SDN云环境检测和缓解ARP攻击的系统及方法与流程

本发明属于网络安全技术领域,涉及一种云网络安全技术,具体涉及一种基于软件定义的网络(sdn)的地址解析协议(arp)攻击检测和缓解系统及其实现方法。



背景技术:

云计算是被广泛使用的提供服务的形式,用户可以按需从云供应商提供的资源池中,获取服务器、平台、应用和其它的计算资源。在云上,用户能够方便且安全地存储数据和使用服务,因为云供应商会负责云平台的维护,也会使用各种技术来保证用户所使用的服务的安全。因此,云计算成为了当前全球各个公司依赖的最基础的技术,同时,云网络的安全也是当前的热点问题。

传统网络是没有中心化的控制节点的分布式网络,其中,每个网络设备都使用自己的配置和算法,来处理数据和转发网络包。但是,sdn把网络中的控制平面和数据平面分离开来,其中的控制器负责执行所有算法,也负责在sdn交换机上安装流表项,来引导sdn交换机的行为;其中的网络设备(一般为sdn交换机)只需要负责根据自身的流表项处理接收到的网络包。通过使用sdn,云网络的管理者就能够更加方便地控制和管理整个网络中的所有设备。并且,sdn中的控制器为软件开发者们提供了开源的应用程序编程接口(api),于是,开发者们就能开发不同的应用,来实现各不相同的网络功能,满足用户的需求。云计算非常需要sdn这种使用可编程设备快速地变更网络架构的能力,它能够以此实现网络弹性和计算弹性。除此之外,云网络的管理者可以通过对整个网络进行更加细化的控制,来改善云计算的性能。并且,sdn也能用来在云中增强网络的安全,因为它可以被用来分析网络的流量,控制网络设备去检测攻击并且做出应对措施。

arp是tcp/ip协议簇中位于网络层中的一种协议,负责为ip地址寻找对应的mac地址。在网络中,一个主机只有知道了目标主机的mac地址的时候,才能直接和其它主机进行通信。而arp的最基本的功能就是:在知道了目标主机的ip地址的时候,arp能找出对应的mac地址,保证主机之间的通信。每个安装了tcp/ip协议的主机,都拥有自己的arp缓存表,缓存表中维护着其它主机的ip地址和mac地址的映射。当主机接收到arp请求的时候,它会在自己的arp缓存表中查询,并且将arp请求包中的映射更新到缓存表中。当主机接收到arp回复的时候,它会把arp回复包中的映射更新到自己的arp缓存表中。在这个过程中,主机不会检测arp包的真假,都会将映射更新到自己的arp缓存表中,也就是说,arp本身不存在安全机制,去保证数据的安全性和完整性。作为网络中每个主机都会使用的基础协议,arp可能带来的负面影响是很大的,并且,它可能导致其它更加严重的攻击,比如:拒绝服务(dos)攻击和中间人攻击(mitm)。

现有的对抗网络中的arp攻击的方法,有的需要对arp包的内容进行增加或者修改,有的需要对arp的机制进行修改,有的需要增加加密解密过程来保证数据安全,这些方法都破坏了arp原本拥有的便携性,也影响了整个网络的性能。现有的解决arp攻击的方法中,也有使用sdn技术的。有的方案是针对特定的动态ip分配情景或者针对特定的静态ip分配情景,都不能满足云网络的灵活性和多变性。有的方案需要设立独立的服务器,来协助控制器处理云网络中的arp安全,更加增加了复杂的云网络环境的复杂性。还有的方案从大量的arp攻击中提取出了攻击的流量特征,以此检测arp流量的安全性,但是,这样的方案的准确度不是百分之百的。显然,现有的防范arp攻击的方法都各有缺陷,无法满足日益提升的网络安全需求。



技术实现要素:

为解决上述问题,本发明公开了一种基于sdn云环境检测和缓解arp攻击的系统及其方法,实现了一个控制器集群,检测网络中的arp包,防止和缓解arp攻击。

为了达到上述目的,本发明提供如下技术方案:

一种基于sdn云环境检测和缓解arp攻击的系统,包括网络信息维护模块、实时检测和防御模块、定时监测和缓解模块和流表项控制模块;

所述网络信息维护模块用于提取包中的网络设备和主机信息并存储,根据网络中主机变更更新存储信息,并为实时检测和防御模块、定时监测和缓解模块以及流表项控制模块提供数据;

所述实时检测和防御模块用于检测控制器接收到的arp包,检测arp包是否为伪造的arp包,并给sdn交换机发送控制消息;

所述定时监测和缓解模块用于定期监测每个sdn交换机的每个和主机相连的端口的流量信息,检测是否存在arp攻击,并给sdn交换机发送控制消息;

所述流表项控制模块用于在sdn交换机上安装流表项。

进一步的,所述系统基于由主机、控制器集群和sdn交换机组成的机构实现,每个sdn交换机都和若干个控制器相连接。

进一步的,所述sdn交换机包括边缘sdn交换机和内部sdn交换机;所述边缘sdn交换机网络中主机直接连接;所述内部sdn交换机不和网络中主机连接。

进一步的,所述sdn交换机将包通过‘packet_in’消息转发给控制器,控制器通过回复‘packet_out’消息给sdn交换机和在sdn交换机上安装流表项来控制sdn交换机的行为。

进一步的,所述定时监测和缓解模块包含定时器,所述定时器定期触发,当定时器触发的时执行定时监测和缓解模块。

本发明还提供了一种基于sdn云环境检测和缓解arp攻击的方法,具体步骤如下:

步骤一、启动阶段

系统初始化,流表项控制模块在每个sdn交换机上安装流表项,要求sdn交换机将网络包转发给控制器;

步骤二、获取网络信息阶段

网络信息维护模块提取网络包中的主机信息和sdn交换机端口信息,并检测提取的信息是否已存储在数据库,如果已存储在数据库,则进入步骤三;否则,将提取的信息存入数据库后再进入步骤三;

步骤三、实时检测和防御arp攻击阶段

当控制器接收到的是arp请求包或arp回复包时,实时检测和防御模块将arp包中的地址信息和数据库中的地址信息进行比较,当比较结果一致的时候,控制器给sdn交换机发送回复消息,并且调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机之后按照命令转发网络包;当比较结果不一致的时候,控制器给sdn交换机发送回复消息,命令交换机丢弃该网络包,并且增加发送arp包的源主机为攻击者的可能性;

步骤四、定时监测和缓解arp攻击阶段

定时监测和缓解模块定时向边缘sdn交换机发送获取端口流量的请求,获得边缘sdn交换机的回复数据,使用回复数据和主机为攻击者的可能性,判断是否有arp攻击发生,如果无攻击发生,则将主机为攻击者的可能性清零;否则,调用流表项控制模块在边缘sdn交换机上安装流表项,要求边缘sdn交换机在一段指定的时间内阻塞发出arp攻击的端口的流量,然后将主机为攻击者的可能性清零。

进一步的,所述数据库中存储的信息包括:

地址映射表:主机的mac地址,主机的ip地址;

交换机转发表:sdn交换机的id,主机的mac地址,sdn交换机转发包给主机的端口;

设备可疑性表:边缘sdn交换机的id,sdn交换机和主机相连的端口,端口网络包个数,主机发送错误arp包的次数。

进一步的,所述步骤三实时检测和防御arp攻击阶段包括针对arp请求包的实时检测和防御arp请求攻击步骤、以及针对arp回复包的实时检测和防御arp回复攻击步骤;

所述实时检测和防御arp请求攻击步骤具体包括如下子步骤:

(1)在数据库的地址映射表中,查找arp请求包中的源主机mac地址和ip地址对,查找目标主机ip地址映射的mac地址,如果两者都能查找到,则进入步骤(2);否则,进入步骤(3);

(2)控制器使用查找到的目标主机mac地址和arp请求包中的地址信息,生成arp回复包,并且给sdn交换机发送消息,命令sdn交换机将arp回复包发送给源主机,然后控制器根据数据库中的交换机转发表,获取sdn交换机转发包到目标主机的端口,并且调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机以后遇到相同的源mac地址和ip地址对,和相同的目标mac地址和ip地址对时,直接将网络包从这个端口转发出去;

(3)控制器给sdn交换机发送消息,命令sdn交换机将arp请求包丢弃,并且,将数据库中的设备可疑性表中sdn交换机和源主机相连的端口的主机发送错误arp包的次数增加一次;

所述实时检测和防御arp回复攻击步骤具体包括如下子步骤:

(1)在数据库的地址映射表中,查找arp回复包中的源主机mac地址和ip地址对,查找目标主机mac地址和ip地址对,如果两者都能查找到,则进入步骤(2);否则,进入步骤(3);

(2)控制器根据数据库中的交换机转发表,获取sdn交换机转发包到目标主机的端口,给sdn交换机发送消息,命令sdn交换机将arp回复包从该端口转发,然后调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机以后遇到相同的源mac地址和ip地址对,和相同的目标mac地址和ip地址对时,直接将网络包从这个端口转发出去;

(3)控制器给sdn交换机发送消息,命令sdn交换机将arp请求包丢弃,并且,将数据库中的设备可疑性表中sdn交换机和源主机相连的端口的主机发送错误arp包的次数增加一次。

进一步的,所述步骤四定时监测和缓解arp攻击阶段具体包括如下子步骤:

(1)控制器向所有边缘sdn交换机发送获取端口流量的请求,边缘sdn交换机将每个端口的流量统计数据回复给控制器;

(2)对每个边缘sdn交换机的每个端口,控制器获取该端口接收到的网络包的总数量,并且从数据库中的设备可疑性表中读取该端口到上次监测为止的网络包的数量,两个数量之差就是过去一段时间内该端口的包流量,然后,将该端口的包流量和特定的阈值进行比较,如果包流量小于特定的阈值,则进入步骤(3);否则,进入步骤(4);

(3)控制器从数据库中的设备可疑性表中读取该端口的主机发送错误arp包的次数,将发送错误arp包的次数和特定的阈值进行比较,如果次数小于特定的阈值,则进入步骤(5);否则,进入步骤(4);

(4)边缘sdn交换机的端口被判定为发起了arp攻击,控制器调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机在未来的一段特定的时间内,把从该端口接收到的网络包都丢弃;

(5)控制器把数据库中的设备可疑性表中的sdn交换机的端口的网络包个数设置为这次监测到的网络包的总数量,并且把sdn交换机的端口的主机发送错误arp包的次数设置为0。

与现有技术相比,本发明具有如下优点和有益效果:

(1)本发明使用sdn技术,检测arp请求包,也检测arp回复包,全面地保护了云计算网络的安全,防止攻击影响整个云网络的安全。并且运用一个集群的控制器代替单个的控制器和将sdn交换机分为边缘sdn交换机和内部sdn交换机的方法,减少了网络中冗余的arp包的传输和处理,增强了云网络的容错性和性能。

(2)本发明不仅能够通过分析arp包实时地检测到arp欺骗攻击,然后丢弃伪造的包防止arp欺骗攻击对主机的危害,还能够通过定时获取arp流量,检测边缘sdn交换机的端口的流量统计数据,辨别出arp风暴攻击,并能及时地阻塞相应端口的流量,缓解arp风暴攻击对云网络的影响。

(3)本发明能同时适应云网络中的动态和静态的ip地址分配,通过使用sdn技术,监测和管理整个网络,从而不仅能够实时地防止arp欺骗攻击,还能够定时的监测和缓解arp风暴攻击。本方根据主机在网络中传输的第一个包来提取信息,存入数据库,此后的攻击检测也是基于这个数据库中的数据实现的。并且,控制器会监听sdn交换机的端口的事件,因此,当一个主机离开网络或者接入网络的时候,控制器都能获得相关信息,并且更新数据库,保证了在灵活的云上的信息准确性。

(4)本发明不需要对arp机制本身或者arp包做任何的修改,也不需要对sdn的网络架构进行变更。

附图说明

图1为用于实现本发明方案的云网络结构示意图。

图2为本发明提供的检测和缓解arp攻击的系统架构示意图。

图3为实时检测和防御arp攻击阶段流程图。

图4为定时监测和缓解arp攻击阶段流程图。

具体实施方式

以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1所示的为本发明在云上实施时形成的网络拓扑结构。本发明基于sdn技术,在云网络中使用控制器集群控制和管理sdn交换机。供应商以虚拟机的形式向用户提供各种服务,但是每个用户在使用服务时是相互独立的,就像在使用自己的主机。sdn交换机是网络设备中最基本也是最主要的设备,分为边缘sdn交换机和内部sdn交换机。边缘sdn交换机直接和主机连接,每个端口连接不同的主机,接收主机传输的包并且转发网络包到主机。内部sdn交换机不和网络中主机连接。用于实现本发明的网络架构包含一个控制器集群,每个sdn交换机都和若干个控制器连接,当控制器集群中的某个控制器失效之后,系统仍然能继续正常运行。本实例使用的控制器为ryu控制器。ryu控制器是由python语言实现的,架构清晰并且易于理解。控制器和sdn交换机之间通过openflow协议互相通信,sdn交换机将包通过‘packet_in’消息转发给控制器,控制器处理消息,并通过回复‘packet_out’消息给sdn交换机和在sdn交换机上安装流表项来控制sdn交换机的行为。

图2所示的为本发明的整体系统架构示意图。其中,每个主机都与sdn交换机连接,对网络包的处理方式和在传统网络中相同,发送的包都被sdn交换机接收,并且根据收到的arp包来更新自己的arp缓存表。其中,sdn交换机主要负责对数据的处理,从各个端口中接收到主机的包,然后查询自身的流表项,寻找处理包的操作,如果找到了匹配的流表项,则按照流表项的要求处理包,否则,将包用‘packet_in’消息的方式发送给控制器。之后,sdn交换机会接收到来自控制器的‘packet_out’消息,并且按照消息中的内容执行操作。其中,控制器提供对网络的控制,接收到sdn交换机发送的‘packet_in’消息之后,执行内部的逻辑来处理消息。控制器中装载本发明提供的一种基于sdn云环境检测和缓解arp攻击的系统的实现逻辑,该系统包括网络信息维护模块、实时检测和防御模块、定时监测和缓解模块和流表项控制模块。针对arp包,控制器中的网络信息维护模块,实时检测和防御模块,定时监测和缓解模块协作来处理,然后,控制器会利用流表项控制模块在sdn交换机上安装流表项或者回复sdn交换机‘packet_out’消息来控制它的操作。

网络信息维护模块用于提取包中的网络设备和主机信息并存储,根据网络中主机变更更新存储信息,并为实时检测和防御模块、定时监测和缓解模块以及流表项控制模块提供数据;具体的说,网络信息模块在控制器接收到网络包时,将设备信息存储在数据库,方便攻击检测的实施。

实时检测和防御模块用于针对控制器接收到的arp包,使用数据库检测arp包是否为伪造的arp包,并且给sdn交换机发送控制消息,以防御arp欺骗;

定时监测和缓解模块有一个定时器,每过固定的时间,监测每个sdn交换机的每个和主机相连的端口的流量信息,结合数据库检测是否存在arp攻击,并且给sdn交换机发送控制消息以缓解arp欺骗和风暴攻击;

流表项控制模块提供接口给检测模块使用,用于在sdn交换机上安装流表项,管理sdn交换机的行为。

本发明还提供一种基于sdn云环境检测和缓解arp攻击的方法,具体步骤如下:

步骤一、启动阶段,系统初始化,流表项控制模块在每个sdn交换机上安装流表项,要求sdn交换机将网络包转发给控制器;

步骤二、获取网络信息阶段,网络信息维护模块提取网络包中的主机信息和sdn交换机端口信息,并检测提取的信息是否已存储在数据库,如果已存储在数据库,则进入步骤三;否则,将提取的信息存入数据库,再进入步骤三;

数据库中存储的信息为三个表格,具体内容如下:

地址映射表:主机的mac地址,主机的ip地址;

交换机转发表:sdn交换机的id,主机的mac地址,sdn交换机转发包给主机的端口;

设备可疑性表:边缘sdn交换机的id,sdn交换机和主机相连的端口,端口网络包个数,主机发送错误arp包的次数。

步骤三、实时检测和防御arp攻击阶段

其流程如图3所示,当控制器接收到的‘packet_in’消息是arp包(具体为arp请求包或arp回复包)时,它能够提取出arp包中的信息:源主机的地址和目标主机的地址,也能获取传递消息的sdn交换机以及消息进入端口的信息。实时检测和防御模块将arp包中的地址信息和数据库中的地址信息进行比较,当信息匹配比较结果一致的时候,控制器给sdn交换机发送回复消息,对于arp请求,生成arp回复包发送给sdn交换机,回复给源主机,对于arp回复,命令sdn交换机转发arp回复包,并且调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机之后按照命令转发源主机到目标主机的网络包;当比较结果不一致即信息不匹配的时候,则说明这个arp包是伪造的,arp欺骗攻击正在发生。则控制器给sdn交换机发送‘packet_out’回复消息,命令交换机丢弃该网络包,并且增加发送arp包的源主机为攻击者的可能性,实时检测和防御模块增加发起arp欺骗(即发送该arp包)的源主机的设备为攻击者可疑性,更新到数据库中。

具体的说,本阶段对于arp请求包和arp回复包的检测和防御的具体步骤是不相同的;

实时检测和防御arp请求攻击的具体步骤如下:

(1)在数据库的地址映射表中,查找arp请求包中的源主机mac地址和ip地址对,查找目标主机ip地址映射的mac地址,如果两者都能查找到,则进入步骤(2);否则,进入步骤(3);

(2)控制器使用查找到的目标主机mac地址和arp请求包中的地址信息,生成arp回复包,并且给sdn交换机发送消息,命令sdn交换机将arp回复包发送给源主机,然后,控制器根据数据库中的交换机转发表,获取sdn交换机转发包到目标主机的端口,并且调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机以后遇到相同的源mac地址和ip地址对,和相同的目标mac地址和ip地址对时,直接将网络包从这个端口转发出去;

(3)控制器给sdn交换机发送消息,命令sdn交换机将arp请求包丢弃,并且,将数据库中的设备可疑性表中sdn交换机和源主机相连的端口的主机发送错误arp包的次数增加一次;

实时检测和防御arp回复攻击的具体步骤如下:

(1)在数据库的地址映射表中,查找arp回复包中的源主机mac地址和ip地址对,查找目标主机mac地址和ip地址对,如果两者都能查找到,则进入步骤(2);否则,进入步骤(3);

(2)控制器根据数据库中的交换机转发表,获取sdn交换机转发包到目标主机的端口,给sdn交换机发送消息,命令sdn交换机将arp回复包从该端口转发,然后,调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机以后遇到相同的源mac地址和ip地址对,和相同的目标mac地址和ip地址对时,直接将网络包从这个端口转发出去;

(3)控制器给sdn交换机发送消息,命令sdn交换机将arp请求包丢弃,并且,将数据库中的设备可疑性表中sdn交换机和源主机相连的端口的主机发送错误arp包的次数增加一次。

步骤四、定时监测和缓解arp攻击阶段,其流程如图4所示。控制器中有一个定时器,定时器每隔一段特定的时间都会触发一次。当定时器经过指定的周期被触发的时候,就是定时监测和缓解模块执行工作的时候。定时监测和缓解模块向所有边缘sdn交换机发送获取端口流量的请求,请求获取各个端口的流量数据,然后会收到sdn交换机回复的各个端口的流量统计数据。模块通过检测sdn交换机端口的流量是否大于阈值,判断是否有arp风暴攻击发生;模块通过检测sdn交换机端口连接的主机发起arp欺骗的次数是否大于阈值,判断是否有arp欺骗攻击发生。如果无攻击发生,则将主机为攻击者的可能性清零;如果定时监测和缓解模块检测到有攻击发生,则它会调用流表项控制模块在边缘sdn交换机上安装新的流表项,要求边缘sdn交换机在一段指定的时间内阻塞发出arp攻击的端口的流量,保证网络安全,然后将主机为攻击者的可能性清零。

具体的说,步骤四定时监测和缓解arp攻击阶段具体的步骤如下:

(1)控制器向所有边缘sdn交换机发送获取端口流量的请求,边缘sdn交换机将每个端口的流量统计数据回复给控制器;

(2)对每个边缘sdn交换机的每个端口,控制器获取该端口接收到的网络包的总数量,并且从数据库中的设备可疑性表中读取该端口到上次监测为止的网络包的数量,两个数量之差就是过去一段时间内该端口的包流量,然后,将该端口的包流量和特定的阈值进行比较,如果包流量小于特定的阈值,则进入步骤(3);否则,进入步骤(4);

(3)控制器从数据库中的设备可疑性表中读取该端口的主机发送错误arp包的次数,将发送错误arp包的次数和特定的阈值进行比较,如果次数小于特定的阈值,则进入步骤(5);否则,进入步骤(4);

(4)边缘sdn交换机的端口被判定为发起了arp攻击,控制器调用流表项控制模块在sdn交换机上安装流表项,要求sdn交换机在未来的一段特定的时间内,把从该端口接收到的网络包都丢弃;

(5)控制器把数据库中的设备可疑性表中的sdn交换机的端口的网络包个数设置为这次监测到的网络包的总数量,并且把sdn交换机的端口的主机发送错误arp包的次数设置为0。

本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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