基于SDN的DDoS攻击检测与防御

  • 时间:2019-01-19 18:31 作者:合天网安实验室 来源:合天网安实验室 阅读:442
  • 扫一扫,手机访问
摘要:图片来源:合天网安试验室1、概述1.1 什么是SDN软件定义网络(英语:software-defined networking,缩写作 SDN)是一种新型网络架构。它利用OpenFlow协议将路由器的控制平面(control plane)从数据平面(data plane)中分离,改以软件方式实现。该
图片来源:合天网安试验室

1、概述

1.1 什么是SDN

软件定义网络(英语:software-defined networking,缩写作 SDN)是一种新型网络架构。它利用OpenFlow协议将路由器的控制平面(control plane)从数据平面(data plane)中分离,改以软件方式实现。该架构可使网络管理员在不更动硬件设施的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,也为核心网络和应用创新提供了良好平台。Facebook与Google都在他们的数据中心中使用OpenFlow协议,并成立了开放网络基金会来推动这个技术。(来源:Wikipedia)

1.2 什么是mininet

Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络试验有肯定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。
Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX\RYU\Floodlight\OpenDaylight等),同时,Mininet可以运行在多种操作系统上(windows\linux\Mac OS),具备很强的系统兼容性。最令人兴奋的一点是:在Mininet上进行的试验,可以无缝的移到真实的环境中去(官方是这么说的)【来源:CSDN】
Mininet官网:http://mininet.org/

来源:mininet

1.3 什么是Floodlight

Floodlight是Apache受权并基于JAVA开发的企业级OpenFlow控制器,当前最新版本是1.2。


来源:Floodlight

Floodlight OpenFlow Controller -ProjectFloodlight:http://www.projectfloodlight.org/floodlight/

1.3 什么是sFlow

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

2、试验过程

2.1 试验拓扑
图片来源:合天网安试验室
2.2 构建拓扑环境

1)启动Floodlight控制器

图片来源:合天网安试验室
Floodlight 的WebUI端口是8080,我们可以用浏览器访问它

图片来源:合天网安试验室

2)构建拓扑
保持 Floodlight 运行的终端,再新开一个终端窗口,输入如下指令,构建我们所需的拓扑结构。

图片来源:合天网安试验室

命令解释:

sudo:以管理员权限运行,由于mininet要调用内核的东西mn:就是mininet的命令简写--controller=remote:使用远程的控制器ip,port:控制器的ip和端口--topo:指定拓扑类型,single 就是单一拓扑,就是最简单的交换机下面接主机,后面的3 表示,三台主机。

创立过程非常快,相似这样:

图片来源:合天网安试验室
当你看到 mininet> 标识符,表示拓扑创立完成,我们可以输入少量指令查看网络拓扑。

nodes 指令显示节点信息:

图片来源:合天网安试验室

links指令显示链路信息:

图片来源:合天网安试验室

还有检测网络链路连通性情况的pingall 指令:

图片来源:合天网安试验室

想使用更多指令,可以键入 help 进行查看:

图片来源:合天网安试验室

在Floodlight 的WebUI中查看拓扑结构

图片来源:合天网安试验室
2.3 DDoS 攻击检测

1) 启动sFlow-RT
保持Mininet 运行的终端,再新开一个终端窗口,输入如下指令,启动sFlow-RT。

图片来源:合天网安试验室

可以看到如下信息:

图片来源:合天网安试验室

其中 6343 是sFlow Collector 的默认端口,8008 则是 sFlow 的WebUI端口。

  1. 配置sFlow Agent
    我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。
    键入以下指令部署sFlow Agent :
图片来源:合天网安试验室

指令说明:

  1)agent:监控 eth0 网卡产生的流量;  2)target:sFlow-RT的IP,默认端口6343;  3)bridge:需要开启sFlow的网桥;  4)sampling:采样率,表示每隔N个Packet就取样一次  5)polling:轮询时间,每隔N秒polling一次  提醒:假如有N个网桥,就需要执行N次部署 sFlowAgent 的指令,我们本次试验中只有一个网桥,所以执行一次即可以了。

通过如下指令可以查看已经配置的 sFlow Agent信息:

图片来源:合天网安试验室
输入ip link 指令可以查看,虚拟交换机端口与端口编号的映射

图片来源:合天网安试验室

可以看到s1 交换机对应的编号是4,交换机连接host1的端口对应的编号是5,依次类推。
查看sFlow Agent 能否配置成功,我们可以通过其WebUI进行查看:

图片来源:合天网安试验室

可以看到已经增加到了监控对象,点击查看介绍:

图片来源:合天网安试验室

看到各个端口的各种信息,但是如同没有我们需要的流量信息,我们先增加一个,点击页面上的 Flows 选项

图片来源:合天网安试验室
而后分别在Name ,Keys,Value,Filter列填入:flows;ipsource,ipdestination,stack;bytes;留空 ,而后点击下面的 Submit 提交

图片来源:合天网安试验室
而后再回到 Agent选项,查看监控的介绍,就能看到 Flows信息了(提醒:如还是看不到 flows,可在 mininet 控制台中执行 pingall 产生流量 。)

图片来源:合天网安试验室
点击 5.flows 进去就可查看交换机1号端口的流量介绍

图片来源:合天网安试验室
而后切换到mininet 控制台窗口,使用如下指令,打开 Host1,和Host2的终端:

图片来源:合天网安试验室

图片来源:合天网安试验室
而后在 Host1 上启动一个 http 服务

图片来源:合天网安试验室
在 Host2 上 ping Host1

图片来源:合天网安试验室

而后去观察流量

图片来源:合天网安试验室
可以看到,流量很正常,在 Host2 终端中可以按 Ctrl+c,中止ping。可以试试访问一下 Host1的HTTP服务。
图片来源:合天网安试验室
2)DDoS攻击检测
接下来,我们进行DDoS 模拟攻击,在 mininet 终端中执行,h2 ping -f h1-f 参数的意思就是 Ping Flood ,模拟 Flood Attack。

图片来源:合天网安试验室

再去观察交换机流量

图片来源:合天网安试验室
流量随之飙升,我们可以在系统终端中执行,top 命令,查看 cpu占用

图片来源:合天网安试验室
回到 mininet 终端,按 Ctrl+C 终止Ping Flood ,而后再观察流量

图片来源:合天网安试验室

发现流量马上就下降了。

2.4 DDoS 攻击防御

我们首先在mininet 终端执行h2 ping -f h1 模拟 Ping Flood Attack。会发现流量马上又上来了。

图片来源:合天网安试验室

接下来,我们通过Floodlight控制器向OpenFlow交换机下发流表,抑制攻击流量。在此之前,我们先理解少量概念。

1)什么是流表:
流表是交换机进行转发策略控制的核心数据结构。交换机芯片通过查找流表项来决策进入交换机网络的数据包执行适当的解决动作。可以了解为交换机收到数据包之后该做什么的一系列规则。

2)下发流表:
下发一条流表好比一条指令,告诉交换机收到数据包之后该做什么。

3)OpenFlow流表项结构简介
OpenFlow每个流表项由三个部分组成:用于数据包匹配的包头域(Header Fields),用于统计匹配数据包个数的计数器(Counters),用于对匹配的数据包如何解决的动作(Actions)
包头域:OpenFlow流表的包头域(OpenFlow v1.1之后被称作匹配域),用于对交换机接收到的数据包的包头内容进行匹配。在OpenFlow v1.0中,流表的包头域中包括了12个元组(Tuple):

图片来源:合天网安试验室

对应的中文解释:

图片来源:合天网安试验室

关于OpenFLow 流表的详细情况,大家可以自行查找相关资料。
打开一个系统终端,输入如下指令,调用Floodlight 的API 查询现有流表

图片来源:合天网安试验室

返回为空:


图片来源:合天网安试验室

提醒:API文档请参考:Static Flow Pusher API pre-v1.0 -Floodlight Controller - Project Floodlight https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/1343498/Static+Flow+Pusher+API+pre-v1.0?showComments=true&showCommentArea=true
Static Entry Pusher API - FloodlightController - Project Floodlight https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/1343518/Static+Entry+Pusher+API

图片来源:合天网安试验室
1)增加流表操作
而后我们增加一条静态流表,为了方便操作和查看,新建一个 ddos.json 的文件,将流表内容写入到这个文件,而后通过 API 进行提交,文件内容如下:

图片来源:合天网安试验室

ddos.json字段解释:
switch:交换机dpid(假如你不知道,可以在控制器的WebUI界面查看)

图片来源:合天网安试验室
name:随便取一个名字就可cookie:流表规则标识in_port:入端口priority:优先级active:能否激活actions:动作

注意:不同版本的Floodlight API 在字段上可能不同。以下是 1.0 版本的API

图片来源:合天网安试验室图片来源:合天网安试验室

执行下列指令,下发流表Drop数据包:

图片来源:合天网安试验室

返回“Entry pushed”,表示流表下发成功,再次查询流表:

图片来源:合天网安试验室

2)观察流量
切换到 sFlow 这边查看流量:

图片来源:合天网安试验室

发现流表下发之后,流量迅速下降,h1h2泛洪的数据包迅速的被完全Drop掉了。
切换到 h2 的终端,访问 h1web服务

图片来源:合天网安试验室

同样无法访问了。这是由于我们下发的流表是把所有的数据包都Drop掉了。这并不是我们想要的效果,等下我们再来处理这个问题。

3)删除流表
执行以下指令删除刚刚下发的流表:

图片来源:合天网安试验室

再次观察流量:

图片来源:合天网安试验室

攻击的数据包流表又恢复了。
4)DROP指定流量
改造需要下发的流表,让OpenFlowSwitch 只Drop掉 ICMP的流量,不影响正常的HTTP服务。修改内容如下:

图片来源:合天网安试验室
增加了两个字段,eth_type: 指定以太网类型为ipv4ip_proto:指定协议类型为ICMP
再次下发流表:

图片来源:合天网安试验室

此时再观察流量和访问 h1HTTP服务

图片来源:合天网安试验室
可以发现,流量下降到正常,但HTTP服务仍然可以访问,没有受到影响。

3、总结

通过SDN技术,我们可以对网络流量进行实时监控,提取,分析,并能够及时的对流量进行调整比方QoS,负载均衡,DDoS流量过滤等。

4、如何在线体验上述试验

<<<<<<????点击下方链接就可????>>>>>>
基于SDN的DDoS攻击检测与防御-合天网安试验室

5、关于合天网安试验室

合天网安试验室(www.hetianlab.com)-国内领先的实操型网络安全在线教育平台
真实环境,在线实操学网络安全 ;
试验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】极客时间-数据分析实战45讲【完结】(2021-09-02 16:26)
【系统环境|windows】字节跳动前台面试题解析:盛最多水的容器(2021-03-20 21:27)
【系统环境|windows】DevOps敏捷60问,肯定有你想理解的问题(2021-03-20 21:27)
【系统环境|windows】字节跳动最爱考的前台面试题:JavaScript 基础(2021-03-20 21:27)
【系统环境|windows】JavaScript 的 switch 条件语句(2021-03-20 21:27)
【系统环境|windows】解决 XML 数据应用实践(2021-03-20 21:26)
【系统环境|windows】20个编写现代CSS代码的建议(2021-03-20 21:26)
【系统环境|windows】《vue 3.0探险记》- 运行报错:Error:To install them, you can run: npm install --save core-js/modules/es.arra...(2021-03-20 21:24)
【系统环境|windows】浅谈前台可视化编辑器的实现(2021-03-20 21:24)
【系统环境|windows】产品经理入门迁移学习指南(2021-03-20 21:23)
血鸟云
手机二维码手机访问领取大礼包
返回顶部