概述
文章目录
- 原文
- 摘要
- 1 引言
- 2 Ping Flood DDoS攻击
- 2.1 基本介绍
- 2.2 工作机制
- 3 SDN架构
- 3.1 基本介绍
- 3.2 基本架构
- 4 仿真模拟实验
- 4.1 实验环境
- 4.2 模拟测试
- 4.3 实验结果
- 0 复现部分
- 0.1 U1新建拓扑
- 0.2 U1启动sFlow-RT
- 0.3 U1配置sflow agent
- 0.4 U2运行远程Ryu控制器
- 0.5 U1 h3 主机开启一个http 服务
- 0.6 h1 ping flood h3
- 0.7 U2使用Postman下发流表抵抗Dos攻击
- 0.8 流量趋势图怎么做? flow-trend App
- 5 结束语
- 参考
原文
钱振勇.基于mininet平台模拟SDN架构对DDoS的研究[J].电脑与电信,2021(07):60-63.DOI:10.15966/j.cnki.dnydx.2021.07.015.
摘要
随着网络信息时代的发展,生活方式发生改变的同时,网络安全逐渐成为生活中一大关心话题。而DDoS攻击是黑客最常用、我们却又难以防范的一大手段,比如SYNFlood攻击就是利用了TCP三次握手的漏洞使目标无法正常工作,以达到攻击的目的。在研究模拟实现DDoS攻击的基础上,提出了利用mininet平台模拟SDN架构进行网络流量监测研究,通过SDN架构实时监控流量信息的变化,对DDoS攻击做出及时处理。
关键词:网络安全;DDoS攻击;SDN架构;流量监测
1 引言
在拒绝服务攻击中,如果处在不同位置的多个攻击者同时向一个或多个目标发起拒绝服务攻击,或者一个或多个攻击者控制了位于不同位置的多台计算机,并利用这些计算机对受害者同时实施拒绝服务攻击,则称这种攻击为分布式拒绝服务攻击(DDoS)。拒绝服务攻击主要是以网站、路由器或者域名服务器等网站基础设施作为攻击目标,因此危害非常大,常常会对被攻击对象造成严重的损失。
软件定义网络(software-definednetworking即SDN)作为一种新型的网络架构,可以在不改变硬件的前提下,以中央控制的方式来利用软件重新规划并部署网络。其核心思想是实现控制层和转发层分离,交换机只负责高速转发,所有交换机的控制、管理和决策功能全部集中在控制器。但是也正是因为控制器的高度集中化,一旦控制器受到攻击,会导致整个网络瘫痪。
SDN以一种全新的网络部署架构为抵制DDoS攻击提供全新的思路和解决方法。在传统网络方式中,每年都有大量的网络因为DDoS造成不可预估的损失。本文旨在模拟SDN架构中测试DDoS的攻击与防御,对真实网络各层架构的部署具有一定的借鉴意义。
2 Ping Flood DDoS攻击
2.1 基本介绍
DDoS攻击是一种特殊的DOS攻击,是指在不同位置的多个攻击者同时向一个或多个目标发起DOS攻击,能够以较小的代价使得目标无法响应甚至瘫痪。DDoS攻击是一种分布式的、大规模的攻击方式,因此DDoS攻击的危害也是巨大的,会造成无法估计的损失。
本文中模拟使用的是PingFlood攻击,其基本原理是向受害主机(服务器)发送大量请求,攻击者不断发送ping命令,利用ICMP回显请求报文来淹没目标,导致目标主机无法正常访问流量。此时,站在正常用户的角度来看,服务器就会非常卡顿甚至出现不响应的现象,这就造成了服务器的瘫痪。目前,对此类攻击的检测技术相对成熟,可以有效检测并防御。
2.2 工作机制
PingFlood攻击的原理就是利用了ICMP协议的漏洞,因为ICMP在请求时需要有服务器来处理每一个请求并回应,所以PingFlood攻击就以压倒性的趋势不断发送请求从而导致流量网络连接过载出现崩溃的情况。本文模拟测试的是用两台主机不断发送PingFlood攻击,使得第三台主机的流量迅速激增,导致网络发生中断,无法正常访问。可以分为以下两个步骤:
(1)多个攻击者主机向目标主机发送大量的ICMP回显请求报文。
(2)目标主机需要响应每个请求的设备,发送回应应答。
3 SDN架构
3.1 基本介绍
由于传统网络和网络设备在过去存在只可配置、不可编程的问题,导致网络的分布式管理架构会带来制约,无法满足日益增长和不断变化的需求,因此提出了一种新型架构SDN架构——一种将网络控制、转发和应用进行分离,实现控制管理加可编程的架构。
SDN网络架构的出现,引起了网络安全中的一股热潮,新型模式的设计搭建使得在抵御网络攻击中有着更加优秀的表现,由于SDN架构实现了控制器的高度集中化,在网络部署多样性上做了一定的突破。
3.2 基本架构
SDN是一种将数据的控制进行分离,实现了软件可编程的新型架构。其结构如图1所示。
转发层,相当于是传统网络中的交换机,默认状态下会存放一张转发表,区别于传统自学习的方式,SDN中的转发表优先级为0,在不知道如何进行转发的时候,会交给控制器进行处理,并记录路径,最后会发送回到转发层。
控制层,相当于在传统网络结构中多加了一层,用程序控制下面的转发层,转发层和控制层之间利用通信接口连接。常见的网络服务主要有opendaylight、ryu、floodlight等等。
应用层的主要任务就是通过API将业务应用接入控制器控制流表,实现对转发的控制。
4 仿真模拟实验
4.1 实验环境
基于Ubuntu操作系统下的mininet网络仿真SDN平台,由于mininet其本身强大的系统兼容性,可以便利模拟真实环境中的网络操作与架构。相关设备包括:
ryu控制器:一款SDN控制器。
postman:一款API调试工具,可以对流表进行相关操作。
sFlow:适用于高速交换网络中的监控软件,可以实时监控在DOS攻击下流量信息的实时变化。
4.2 模拟测试
利用mininet的仿真软件定义网络架构进行测试。因为其支持使用OpenFlow协议和多种网络相关工具,使得mini‐net操作使用更加高效,能更好地达到我们所期待的效果。具体可参考OpenFlowSpecification。在mininet可视化工具下,创建如图2所示的网络拓扑结构。
从上至下分别是控制器、交换器和主机,将控制器设置为一个远程控制器,交换机的DPID是00000000000000001,设置h1-h3主机的IP地址为10.0.0.1-10.0.0.3,并将整个网络结构设置为全局模式,对比局部模式有助于控制器c0进行相关的操作。
在链路信息相通的前提下,在交换机上配置sFlow以便于收集器能在网站中收集到流量信息从而进行数据可视化操作。查看sFlow的WEBUI并在在本地浏览器打开8008端口网址,可以看见实时的监控状态。
接下来进行模拟DDoS攻击,测试过程中为了模拟真实网络情况,设置了两个攻击者和一个被攻击者,将h1和h2同时作为攻击者对h3进行PingFlood攻击,在攻击的同时对流量信息进行实时监控。
攻击前,需要检查流量信息是否处于一个正常水平的状态,所以在h1终端中去ping h3,h2终端中去ping h3。结果显示,当在h1、h2终端中ping h3的时候,流量信息相较之前显著提高,但是仍然处在一个正常的水平状态,具体信息如图3所示。
确认了当前流量信息处于正常水平后,模拟进行PingFlood攻击。具体操作过程如下:第一步:安装curl文件传输工具,对h3主机开启一个http服务。利用h2对h3进行服务访问,可以看见正常服务连接。第二步:将h1主机作为一个攻击者向h3主机进行PingFlood攻击,用来模拟DDoS攻击。
结果显示,监测到的传输流量迅速增长,CPU占用和内存占用也大幅度增加,此时CPU的占用率达到了100%。
维持当前状态下,在h1、h2和h3三台主机上模拟实现抵御DDoS的攻击,目的是要将cpu的占用率降低并且使得网址可以正常访问。其核心思想是,当检查到流量信息处于异常状态时,利用mininet平台支持的ryu控制器对交换机下发流表,从而抑制攻击流量。
流表是openFlow中的概念,可以抽象认为流表是open‐Flow对网络设备管理的数据转发功能的一种体现,记录的是交换机在运转过程中数据的转发。而每一张流表都是由很多条流表项组成的,对应着网络传输中的一条条流。流表作为数据转发的核心控制中心,交换机会通过查找流表项来处理网络传输中的各类数据。而下发流表就如同下发指令,指明交换机在收到数据后的操作。
抑制流量可以通过postman对流表完成操作。抑制攻击流量的主要思想如下:
(1)本文模拟使用的是PingFlood攻击,因此可以通过下发流表的操作,抑制交换机中端口传输的流量。
(2)SDN交换机流表的表项中整合了网络中各个层次的网络配置信息,且每个表项中包含Priority、Timeout、cookie、port等字段,利用get操作可以获得已存在的流表,为了在不影响正常的HTTP服务的前提下销毁掉ICMP的流量,在原来的基础上,添加代表ip协议、priority优先级、port端口号的字段等,在post方式下,在body中进行流表编写。
4.3 实验结果
通过测试,在进行PingFlood攻击时,为了呈现更加直观的效果,将上述过程的流量检测信息用曲线图来表示,从正常到开始进行PingFlood攻击整个过程如图5所示
发现在h1和h2同时作为攻击者去攻击h3后,流量信息曲线呈现指数级瞬间上涨,从0涨到600k,并保持在700K上下起伏。而在进行DDoS攻击缓解的时候,从抑制攻击流量开始到测试结束,流量信息曲线下降也是呈现指数级,瞬间从700K左右下降到0K,并迅速保持平稳,如图6所示。这个时候网站已经可以被正常访问了。
而对于传统网络的部署,是无法做到像SDN那样可以实时监控端口传输流量信息的。在SDN网络架构中,通过对网络或端口流量进行实时监控,提取关键信息,绘制图表进行分析,通过数据可视化可以实时捕捉各种异常状态并及时做出相应的处理。
0 复现部分
除本小节,其余均为原文内容。
实验所需软件安装一概不提。都已安装好。
实现采用两台主机,U1和U2,均是Ubuntu18.04系统。
U1运行miniedit生成拓扑,U2运行Ryu远程远程控制器
主机 | 对应的功能&任务 | IP |
---|---|---|
U1 | sflow-rt、miniedit、(http server、Ping Flood) | |
U2 | ryu远程控制器、Postman | 192.168.1.4 |
0.1 U1新建拓扑
原文是一个交换机三个主机。
打开miniedit。新建拓扑如下
左侧图标点一下,右边界面点一下,左侧的图标(主机、交换机、控制器)就会出现在右边。
鼠标右键在图标上长按出现Properties切到那栏,松开右键,即可进去编辑属性。
编辑c0属性如下,IP是U2的IP,U1,U2之间是可以互相通的。
编辑s1属性如下:
之后依次编辑h1、h2、h3 IP为 10.0.0.1,10.0.0.2,10.0.0.3
然后编辑Preference。
然后保存该自定义拓扑。
最后运行该拓扑。
0.2 U1启动sFlow-RT
启动sFlow-RT
0.3 U1配置sflow agent
我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。键入以下指令部署sFlow Agent:
sudo ovs-vsctl -- --id=@sflow create sflow agent=s1-eth0 target="127.0.0.1:6343" sampling=10 polling=20 -- -- set bridge s1 sflow=@sflow
上述命令的主要意思如下:
-
agent:监控s1-eth0 网卡产生的流量;s1-eth0是为s1创建的端口;
-
target:sFlow-RT的IP,默认端口6343;
-
bridge:需要开启sFlow的网桥;
-
sampling:采样率,表示每隔N个Packet就取样一次
-
polling:轮询时间,每隔N秒polling一次
查看sFlow Agent 是否配置成功,我们可以通过其WebUI进行查看,在浏览器中输入网址localhost:8008/html/index.html
,可以看见各项监控状态。
0.4 U2运行远程Ryu控制器
通过ryu-manager命令启动ryu控制器,并且打开ofctl_rest.py和simple_switch.py,作为交换机的转发规则,因为之后要用到restAPI,即控制器的北向接口(postamn连接使用),所以需要打开ofctl_rest.py。
ryu-manager ofctl_rest.py simple_switch.py
0.5 U1 h3 主机开启一个http 服务
在mininet终端输入
xterm h3
打开h3终端,输入
python3 -m http.server 8000
h2 对h3 进行服务访问
xterm h2
打开h2终端,输入curl http://10.0.0.3:8000
访问h3服务,显示没有问题
0.6 h1 ping flood h3
将h1 主机作为一个攻击者向h3 主机进行Ping Flood 攻击,用来模拟DDoS 攻击。
在mininet终端输入h1 ping -f h3
在sflow界面看到传输流量迅速增长,CPU占用和内存占用也大幅度增加
0.7 U2使用Postman下发流表抵抗Dos攻击
下发流表,让OpenFlowSwitch 只Drop掉h1 ICMP的流量,不影响正常的HTTP服务
编写完成后,点击send进行流表下发,如果发送成功会返回200OK。
{
"dpid": 1,
"cookie_mask":1,
"table_id":0,
"idle_timeout":30,
"hard_timeout":30,
"priority":65535,
"flags":1,
"match":{
"in_port":1,
"dl_type":2048,
"nw_proto":1
},
"actions":[]
}
流表属性 | 含义 |
---|---|
dpid | 交换机的号 |
priority | 优先级,数字越大表示越优先处理 |
match | in_port代表交换机输入端口为1的端口,字段代表ip协议,在本实验中也就是h1连接交换机的端口 dl_type为2048,16进制为0x0800,代表ipv4协议, nw_proto代表:ip协议上搭载的协议类型,其中1代表icmp协议 |
actions | actions中为空,表示交换机对于h1的icmp流量不作任何处理 |
可以在U1里看到下发流表之后,攻击确实缓解了很多,且此时h1正常访问h3的http请求没有被阻止。
0.8 流量趋势图怎么做? flow-trend App
这个App叫flow-trend,我安装sflow的时候没有自带,要自己手动安装。该App说明网址就下面这个
Docker Hub
安装,下载速度挺慢哈
sudo docker pull sflow/flow-trend
先把之前的sflow-rt停掉,然后运行下面这个
sudo docker run -p 6343:6343/udp -p 8008:8008 sflow/flow-trend
然后进入下面的网址
localhost:8008/app/flow-trend/html/index.html
然后分别在Keys
,Value
列输入:ipsource,ipdestination,stack
、bytes
,然后点击右面的 Submit提交,然后将自动转到图形化流量监控页面。
在①节点我们在U2疯狂摁了好几次下发流表。可以看到流量被抑制了,过了一小会
②节点那块,估计交换机的流表又被Dos流量更新的差不多了,又开始了转发攻击包。
哦对了,这个还不是原文的App,原文的是browse-metrics
。还有好多sflow的App,在sFlow-RT Download,大家自行探索????。
5 结束语
本文基于mininet平台模拟仿真SDN架构研究DDoS的攻击和防御,为真实网络监控提供一定的借鉴意义。利用sFlow来实时监控传输流量信息的变化,并在曲线图中绘制出来得到更加直观的结果。利用SDN架构的网络拓扑结构,以中央控制的方式部署网络结构相较于传统的网络部署方式更加具有防御性,对抑制DDoS攻击更加有效。
参考
基于SDN的DDoS攻击检测与防御 - 简书 (jianshu.com)
基于SDN的DDoS攻击检测与防御_SwBack的博客-CSDN博客
利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)_北风-CSDN博客_mininet模拟ddos攻击
最后
以上就是个性鲜花为你收集整理的论文复现_基于mininet平台模拟SDN架构对DDoS的研究的全部内容,希望文章能够帮你解决论文复现_基于mininet平台模拟SDN架构对DDoS的研究所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复