当前位置: 首页 > backend >正文

基于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

2. 开启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访问是得到了正常的回应。

http://www.xdnf.cn/news/10875.html

相关文章:

  • C++ Learning string类模拟实现
  • ADI硬件笔试面试题型解析下
  • 晶台光耦在手机PD快充上的应用
  • 古典密码学介绍
  • 物联网数据归档方案选择分析
  • 【Pandas】pandas DataFrame rename_axis
  • Registry和docker有什么关系?
  • Vue.js 后台管理系统
  • java后端生成心电图-jfreechart
  • Java高级 | (二十二)快速应用开发框架——Spring Boot
  • 基于谷歌ADK的 智能产品推荐系统(1): 功能简介
  • 黑马Java面试笔记之 消息中间件篇(RabbitMQ)
  • LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现
  • 【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!
  • NodeMediaEdge任务管理
  • 第11节 Node.js 模块系统
  • Redis 缓存问题及其解决方案
  • 接口继承和实现继承
  • OpenCV CUDA模块霍夫变换------在 GPU 上执行概率霍夫变换检测图像中的线段端点类cv::cuda::HoughSegmentDetector
  • OpenCV 滑动条调整图像亮度
  • 相机camera开发之差异对比核查一:测试机和对比机的硬件配置差异对比
  • 国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案
  • Unity 性能优化终极指南 — GameObject 篇
  • 从零开始,学会上传,更新,维护github仓库
  • KV Cache:大语言模型推理加速的核心机制详解
  • AD转嘉立创EDA
  • Mac电脑_钥匙串操作选项变灰的情况下如何删除?
  • 机器学习——使用多个决策树
  • 从仿射矩阵得到旋转量平移量缩放量
  • MySQL 全量、增量备份与恢复