基于SDN的DDoS攻击检测和防御方法

本文主要阐述SDN环境下的DDoS攻击检测与主动防御研究。首先分层次的介绍了软件定义网络的架构特点及协议。然后介绍了DDoS攻击原理及对SDN架构网络的危害。接下来通过Floodlightmininetsflow等工具实现SDN上DDoS的攻击检测和防御。

DDoS攻击原理

拒绝服务攻击DoS[34]出现于1983年出现,由单机发起,攻击能力有限。分布式拒绝服务攻击DDoS是拒绝服务攻击DoS的发展,2000年出现多起DDoS攻击网站服务器的事件。DDoS攻击者通过操作网络中的大量肉机来大规模的攻击受害目的主机,来达到消耗受害者系统资源和带宽的目的。最后使受害者无法提供服务和无法与其他主机通信,其攻击往往多对一形式,如下图所示。
在这里插入图片描述
因为SDN架构相较于传统网络架构有很大的不同,因其转发控制相分离,集中控制的特点,使得DDoS攻击不止对受害主机,而且对控制器,交换机都产生非常大的危害,DDoS攻击对SDN架构网络是致命的。
对于控制器的危害。控制器作为网络的大脑,较传统网络存在单点失效。当数据包到交换机后根据OpenFlow协议的转发机制,和流表匹配的数据包按规则转发,无法和流表项匹配的数据包就会以Packet_ in消息通过南向接口,上交至控制器处理,计算路由策略,并下发流表项规则至交换机。当攻击者向SDN网络中的受害主机发动DDoS攻击时,一般使用大量的经过伪造IP地址和端口的攻击数据包发送到网络中,这时将产生大量Packet_in消息,快速的消耗控制器和交换机之间安全信道的带宽以及控制器系.统资源。影响正常数据包的发送。
对于交换机的危害。通过软件或者硬件的方式实现SDN交换机中的流表结构,其中可存储流表项的数目有限,硬件交换机TCAM存储成本高。攻击者通过利用傀儡机发送大量伪造IP地址和端口的攻击数据包,产生大量无用的流表项耗尽交换机的存储资源,只有当流表项达到生存时间或者被手动删除,使得交换机无法再接受转发正常流量。

主动防御技术

通过Floodlight控制器向OpenFlow交换机下发流表,抑制攻击流量。流表是交换机进行转发策略控制的核心数据结构。交换机芯片通过查找流表项来决策进入交换机网络的数据包执行适当的处理动作。可以理解为交换机收到数据包之后该做什么的一系列规则。下发一条流表好比一条指令,告诉交换机收到数据包之后该做什么。OpenFlow每个流表项由三个部分组成:用于数据包匹配的包头域(Header Fields),用于统计匹配数据包个数的计数器(Counters),用于对匹配的数据包如何处理的动作(Actions)包头域:OpenFlow流表的包头域(OpenFlow v1.1之后被称作匹配域),用于对交换机接收到的数据包的包头内容进行匹配。在OpenFlow v1.0中,流表的包头域中包括了12个元组。

实验分析

实验系统环境为Ubuntu 18.04.2上。使用Floodlight和Mininet仿真平台搭建拓扑环境。用sFlow来提供周期性的网络接口统计采样和数据包采样和各接口的流量信息。

mininet

Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。Mininet作为一个轻量级软定义网络研发和测试平台,其主要特性包括:支持OpenFlow、Open vSwitch等软定义网络部件;方便多人协同开发;支持系统级的还原测试;支持复杂拓扑、自定义拓扑;提供python API;很好的硬件移植性(Linux兼容),结果有更好的说服力;高扩展性,支持超过4096台主机的网络结构。Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX\RYU\Floodlight\OpenDaylight等),同时,Mininet可以运行在多种操作系统上(windows\linux\Mac OS),具有很强的系统兼容性。
在这里插入图片描述

Floodlight

Floodlight包含以响应方式执行ACL的防火墙应用程序。控制器通过监视Packet-in消息来响应性地执行ACL规则,然后推送流表。然而,通过主动添加ACL规则方式,控制器执行ACL规则而不用监视Packet-in消息,从而避免额外的延迟。 ACL应用程序解析用户的REST更新ACL请求,并以主动的方式通过静态流表强制执行,而无需监视Packet-in消息。删除相关的ACL规则时,还可以及时删除生成的ACL流表。
在这里插入图片描述

SFlow

sFlow是一款适用于高速交换网络中的监控软件,可以实时监测网络流量,sFlow需要交换机支持才能使用,而OpenvSwitch支持这个功能。sFlow监控工具由sFlow Agent和sFlow Collector两部分组成。Agent作为客户端,一般内嵌于网络转发设备(如交换机、路由器),通过获取本设备上的接口统计信息和数据信息,将信息封装成sFlow报文发送到指定的Collector。Collector作为远端服务器,负责对sFlow报文分析、汇总、生成流量报告。
在这里插入图片描述

构建拓扑环境

1)启动Floodlight控制器
在这里插入图片描述
运行成功后在浏览器输入localhost:8080/ui/pages/index.html,会出现如下界面:

在这里插入图片描述

2)构建拓扑

保持 Floodlight 运行的终端,再新开一个终端窗口,输入如下指令,构建我们所需的拓扑结构。
在这里插入图片描述
在Floodlight的控制页面查看拓扑结构

在这里插入图片描述

DDoS攻击检测

1) 启动sFlow-RT保持Mininet 运行的终端,再新开一个终端窗口,输入如下指令,启动sFlow-RT。
在这里插入图片描述

可以看到如下信息:

2) 配置sFlow Agent我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。键入以下指令部署sFlow Agent :
在这里插入图片描述

查看sFlow Agent 是否配置成功,我们可以通过其WebUI进行查看,可以看到已经添加到了监控对象
在这里插入图片描述

在Flow里新建添加一个我们需要的流量信息,分别填入Name ,Keys,Value,Filter后保存,然后再回到Agent选项,查看监控的详情,就能看到Flows信息了。
在这里插入图片描述

点击新建的端口,查看流量详情。
在这里插入图片描述

然后在Host1上启动一个http服务,在 Host2上ping Host1后观察流量。
3) DDoS攻击检测
接下来,我们进行DDoS 模拟攻击,在mininet终端中执行,h2 ping -f h1,-f参数的意思就是 Ping Flood ,模拟 Flood Attack。再去观察交换机的流量
在这里插入图片描述

回到 mininet 终端,按 Ctrl+C 终止Ping Flood ,然后再观察流量,发现流量马上就降了。
在这里插入图片描述

DDoS防御

我们首先在mininet 终端执行h2 ping -f h1模拟 Ping Flood Attack。会发现流量马上又上来了。
在这里插入图片描述

接下来,我们通过Floodlight控制器向OpenFlow交换机下发流表,抑制攻击流量。打开一个系统终端,输入如下指令,调用Floodlight 的API 查询现有流表。
(1)添加流表操作然后我们添加一条静态流表,为了方便操作和查看,新建一个ddos.json的文件,将流表内容写入到这个文件,然后通过 API 进行提交,文件内容如下:
在这里插入图片描述

执行下列指令,下发流表Drop数据包返回“Entry pushed”,表示流表下发成功,再次查询流表:
在这里插入图片描述
(2)观察流量

切换到 sFlow 这边查看流量:
在这里插入图片描述
发现流表下发之后,流量迅速下降,h1向h2泛洪的数据包迅速的被完全Drop掉了。切换到h2的终端,访问h1的web服务
在这里插入图片描述
(3)删除流表
执行以下指令删除刚刚下发的流表,再次观察流量和访问h1的http服务
在这里插入图片描述

可以发现,流量下降到正常,但HTTP服务依然可以访问,没有受到影响。

总结

在SDN上的DDoS攻击检测和防御实验,在检测结果上有很明显的检验效果,当收到DDoS攻击后接收到的流量明显的上升;对于DDoS的防御实验,对于大量涌入的检测流量起到了很好的拦截效果,在删除流表后,流量下降到正常水平,防御效果显著。不过只限于制作的一般的DDoS攻击,有些特殊情况或者量级非常大的话,效果就不如这般好了。

猜你喜欢

转载自blog.csdn.net/qq_43774332/article/details/127495864