基于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.pswp.cn/diannao/85596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)

一、责任链模式核心概念解析 (一)模式定义与本质 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其核心思想是将多个处理者对象连成一条链,并沿着这条链传递请求,直到有某…

如何进行页面前端监控

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 前端监控主要分三个方向 前端性能(用户体验优化) 异常监控 业务指标跟 下面我来分别介绍三类指标如何获取 1)前端性能指标: …

Ajax技术分析方法全解:从基础到企业级实践(2025最新版)

引言 Ajax技术自2005年正式命名以来,已支撑全球83%的Web应用实现异步交互。2025年最新数据显示,单页面应用(SPA)的Ajax请求密度已达日均120亿次/应用。本文将系统化解析Ajax分析方法论,涵盖从基础原理到企业级工程实践的完整技术栈。 一、Ajax技术架构解构 1.1 核心组件…

git管理github上的repository

1. 首先注册github并创建一个仓库,这个很简单,网上教程也很多,就不展开说了 2. 安装git,这个也很简单,不过这里有个问题就是你当前windows的用户名即:C/Users/xxx 这个路径不要有中文,因为git …

Windows 下部署 SUNA 项目:虚拟环境尝试与最终方案

#工作记录 #回顾总结 本文记录了在 Windows 系统上,通过 PyCharm 图形界面(尽量减少命令行操作)部署 SUNA 项目时,针对不同虚拟环境方案的尝试过程、遇到的问题以及最终选择的可行方案,并补充了整体部署思路与推荐。…

无向图的点、边双连通分量

文章目录 点双连通分量边双连通分量 有向图的强连通分量:寒假学习笔记【匠心制作,图文并茂】——1.20拓扑、强连通分量、缩点 点双连通分量 在这之前,先让我们了解几个概念。 割点:删除一个点和其连出的边后,原图会…

第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型

在计算机视觉领域,OpenCV的DNN(深度神经网络)模块正逐渐成为轻量级模型部署的利器。本文将深入探讨如何利用OpenCV加载和运行三大主流框架(TensorFlow、PyTorch、Caffe)训练的模型,并提供完整的代码实现和优化技巧。 一、OpenCV DNN模块的核心优势 OpenCV的DNN模块自3.3…

Spring @Autowired自动装配的实现机制

Spring Autowired自动装配的实现机制 Autowired 注解实现原理详解一、Autowired 注解定义二、Qualifier 注解辅助指定 Bean 名称三、BeanFactory:按类型获取 Bean四、注入逻辑实现五、小结 源码见:mini-spring Autowired 注解实现原理详解 Autowired 的…

胜牌™全球成为2026年FIFA世界杯™官方赞助商

胜牌全球将首次与国际足联(FIFA)旗舰赛事建立合作关系。 此次赞助恰逢美国首个润滑油品牌即将迎来160周年之际,其国际扩张步伐正在加快。 在这项全球顶级赛事筹备期间,胜牌全球将通过各种富有创意的零售和体验活动与球迷互动。 …

YOLOV7改进之融合深浅下采样模块(DSD Module)和轻量特征融合模块(LFI Module)

目录 一、研究背景​ 二. 核心创新点​ ​2.1 避免高MAC操作​ ​2.2 DSDM-LFIM主干网络​ 2.3 P2小目标检测分支​ ​3. 代码复现指南​ 环境配置 关键修改点 ​4. 实验结果对比​ 4.1 VisDrone数据集性能 4.2 边缘设备部署 4.3 检测效果可视化 ​5. 应用场景​ …

【C/C++】chrono简单使用场景

chrono使用场景举例 1 输出格式化字符串 示例代码 auto now std::chrono::system_clock::now(); auto t std::chrono::system_clock::to_time_t(now); auto ms std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;std::ostrin…

Med-R1论文阅读理解-1

论文总结&#xff1a;Med-R1: Reinforcement Learning for Generalizable Medical Reasoning in Vision-Language Models 论文写了什么&#xff1f; 本文提出了一种名为 Med-R1 的新框架&#xff0c;旨在通过强化学习&#xff08;Reinforcement Learning, RL&#xff09;提升…

京东热点缓存探测系统JDhotkey架构剖析

热点探测使用场景 MySQL 中被频繁访问的数据 &#xff0c;如热门商品的主键 IdRedis 缓存中被密集访问的 Key&#xff0c;如热门商品的详情需要 get goods$Id恶意攻击或机器人爬虫的请求信息&#xff0c;如特定标识的 userId、机器 IP频繁被访问的接口地址&#xff0c;如获取用…

MCU_IO驱动LED

注意事项&#xff1a; 1、亮度要求较高的情况下&#xff0c;不能由IO直接驱动LED MCU_IO引脚输出的电压和电流较弱&#xff0c;如果对光的亮度有要求的话&#xff0c;需要使用三极管来驱动。 MCU_IO的电压一般为3.3V或者5V&#xff0c;输出电流一般10mA-25mA。 2、不同颜色…

MyBatis 深度解析:高效 Java 持久层框架实践指南(基于 3.5.10)

一、MyBatis 核心架构与设计哲学 MyBatis 作为半自动 ORM 框架&#xff0c;核心设计目标是在灵活性与开发效率之间取得平衡。与 Hibernate 等全自动 ORM 框架不同&#xff0c;MyBatis 允许开发者完全控制 SQL 编写&#xff0c;同时通过映射机制减少重复代码&#xff0c;特别适…

二叉树(二)

98.验证二叉树 中序遍历二叉树&#xff0c;每次遍历存下当前节点的值&#xff0c;遍历到下一个节点比较&#xff0c;根据二叉搜索树的特性&#xff0c;左<中<右有&#xff1a; 如果当前值小于或等于上一个的值&#xff0c;说明不是二叉搜索树 如果当前值大于上一个节点…

解决Vue3+uni-app导航栏高亮自动同步方案

路由跳转自动识别导航高亮实现方法 以下代码使用wd-tabbar组件实现路由跳转时自动同步导航栏高亮状态&#xff0c;适用于所有的Vue3uni-app项目。 请根据自身使用框架类型完成&#xff0c;也可根据我使用的UI组件进行完成地址如下&#xff1a; Tabbar 标签栏 | Wot UI &#…

免费论文查重与AI检测工具推荐

文章目录 概要一、PaperPass二、PaperYY注意 概要 毕业季&#xff0c;总少不了查重这一步&#xff0c;甚至查 AI 率。推荐两款免费查重AIGC检测的工具。 论文免费查重查AI&#xff1a; https://paperpass.com/ https://www.paperyy.com/ 一、PaperPass 网址&#xff1a; ht…

4、ubuntu系统 | 文本和目录操作函数

1、目录操作函数 ls(列出目录内容) 用途:列出指定目录中的文件和子目录。语法:ls [选项] [路径]常用选项: -l:以长格式显示文件详细信息(权限、所有者、大小、时间等)。-a:显示隐藏文件(以.开头的文件)。-R:递归列出子目录内容。# 列出当前目录下的所有文件和子目…

C++--范围for循环详解

范围 for 循环是 C11 引入的语法特性&#xff0c;用于简化遍历容器或数组元素的过程。它比传统 for 循环更简洁安全&#xff0c;特别适合初学者。以下是详细讲解&#xff1a; 基本语法 for (元素类型 变量名 : 容器/数组) {// 循环体&#xff08;使用变量名访问当前元素&#…