基于SDN环境下的DDoS异常攻击的检测与缓解

参考以下两篇博客,最后成功:

基于SDN的DDoS攻击检测和防御方法_基于sdn的ddos攻击检测与防御-CSDN博客

利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)_mininet模拟dos攻击-CSDN博客

需求

H2 模拟flood攻击H1

解决:

H2不能ping H1,但H2可以访问H1的HTTP服务

实施步骤

一、基本环境配置

  1. 安装sflow flow-trend app

下载flow-trend,下载到与sflow-rt同级

git clone https://github.com/sflow-rt/flow-trend

安装flow-trend

sflow-rt/get-app.sh sflow-rt flow-trend

  1. 开启sflow-rt

    cd sflow-rt
    ./start.sh

浏览器访问:

http://localhost:8008/html/index.html

点击页面上的 【Apps】选项, 再点击【flow-trend】选项

分别在Keys,Value,Filter列填入:ipsource,ipdestination,stack;bytes;留空 ,然后点击右面的【 Submit (√)】提交,之后,将自动转到图形化流量监控页面

即会开始进行采样

二、运行网络

1.开启ryu

/opt/sdn/ryu/ryu/app$ ryu-manager ofctl_rest.py simple_switch.py

(此处最开始使用FLOODLIGHT,但后来发现下发流表的时候不好用,后改为RYU)

2.创建星型拓扑

sudo mn --controller=remote,ip=127.0.0.1,port=6653 -topo=single,3

3.使用如下指令,打开 Host1,和Host2的终端,在 Host1 上启动一个 http 服务:

三、配置sFlow Agent

复制代码
sudo ovs-vsctl -- --id=@sflow create sflow agent=eth0 target=\"127.0.0.1:6343\" sampling=10 polling=20 -- -- set bridge s1 sflow=@sflow

在 Host2 上 ping Host1,观察flow trend

四、DDoS攻击检测

在h2中停止ping操作。进行DDoS 模拟攻击,在 mininet 终端中执行,h2 ping -f h1 ,-f 参数的意思就是 Ping Flood ,模拟 Flood Attack。

再去观察交换机流量

复制代码
mininet> h2 ping -f h1

五、DDoS 攻击防御

使用postman,查询流表,目前H1与H2可以互通

GET : http://localhost:8080/stats/flow/1

1. 添加流表操作

使用postman,添加流表

POST: http://localhost:8080/stats/flowentry/add

body->raw->json

复制代码
{
    "dpid":1,
    "cookie":1,
    "cookie_mask":1,
    "table_id":0,
    "priority":35268,
    "flags":1,
    "match":{
	    "in_port":1
    },
    "actions":[]
}

从1口进入的数据流都被drop

但是如果此时,从h1对h3进行http访问,会发现h1对h3正常进行的http访问也无法进行,因为流表是把从1口的流量都给down掉了,所以正常的访问也无法进行。

2. 修改流表

首先,将刚才的流量进行删除,使用的url:http://localhost:8080/stats/flowentry/delete,功能post,流表项依然为刚才使用的,点击send后,返回值200OK证明删除完成。

改造需要下发的流表,让OpenFlowSwitch 只Drop掉 ICMP的流量,不影响正常的HTTP服务。在之前的流表的基础之上,加上dl_type字段和nw_proto字段,其中,dl_type字段代表ip协议,其中2048的16进制0x0800代表ipv4协议,nw_proto代表:ip协议上搭载的协议类型,其中1代表icmp协议。改造完成的流表通过postman进行流表下发之后,再次进行测试,发现h1对h3的ping泛洪攻击失效,而h1对h3的正常的http访问是得到了正常的回应。

相关推荐
漫谈网络1 个月前
Mininet--node.py源码解析
源码解析·sdn·mininet
漫谈网络2 个月前
智能资源管理机制-重传机制
网络·滑动窗口·sdn·数据通信·重传
漫谈网络2 个月前
Mininet--moduledeps.py源码解析
网络·network·sdn·mininet
漫谈网络3 个月前
从连接到交互:SDN 架构下 OpenFlow 协议的流程与报文剖析
sdn·openflow
小康师兄6 个月前
【软考速通笔记】系统架构设计师⑯——通信系统架构设计
笔记·系统架构·系统架构师·局域网·通信系统·广域网·软件定义网络
别NULL6 个月前
《现代网络技术》读书笔记:网络虚拟化
linux·网络·sdn·nfv
查士丁尼·绵7 个月前
SDN在云计算中的应用与实践
云计算·sdn·vxlan·evpn
别NULL7 个月前
《现代网络技术》读书笔记:SDN应用平面
linux·网络·sdn
别NULL7 个月前
《现代网络技术》读书笔记:SDN数据平面和OpenFlow
linux·网络·平面·sdn