在软件定义网络中使用机器学习的方法进行 DDOS 攻击检测与缓解--实验

简介: 在软件定义网络中使用机器学习的方法进行 DDOS 攻击检测与缓解--实验

关于该实验的详细介绍请查阅我的这篇博客:在软件定义网络中使用机器学习的方法进行 DDOS 攻击检测与缓解

〇、拉取代码

https://github.com/Jerry-jy/SDN-DDOS-Detection

2bc4ad109d314aa59748c27c8b30eafe.png


一、 配置环境

先升级

sudo apt-get update
sudo apt-get upgrade

再安装如下环境

sudo apt-get install openvswitch-switch
apt-get install mininet
sudo pip3 install ryu
sudo apt install python3-pip
sudo apt-get install iperf
sudo apt-get install hping3
sudo pip3 install numpy
sudo pip3 install sklearn
ovs-vsctl --version

e6cd5ef11a224659bee0f60ca65cbad0.png

ryu-manager --version

b1e62bbf673347a28fed6544652d5ed3.png

mn --version

998d901406d04056a3cb8a17010c5d30.png

iperf --version

2b15be5957124fd5a804ce00d532ed1a.png

hping3 --version

8d1b5350df6d40058fb5954694b8ebba.png

二、 正常流量收集

在topo.py中修改流量的测试类型TEST_TYPE = “normal” TEST_TIME = 600


ef69f6770ea04efcb45d87c39f8777d9.png

启动控制器ryu-manager controller.py

8bfdbc0561644f73a9ff22742c2fd38a.png

启动网络拓扑sudo python topo.py

5f064c344ab548d3bae477bfe163cf8a.png

控制器接受到正常流量:

6568b73f91ab4811b219ece93c892ace.png

三、攻击流量数据

在controller.py文件中修改APP TYPE=0TEST TYPE=1

03129432015e4124b14b0fa5eeed91e7.png

在topo.py文件中修改TEST TYPE=attackTEST TIME=600

a3cfc4450c784995baeea0b7936c873f.png



清理网络拓扑sudo mn -c


5f415e9cc5714ff3b327fb6d3450dbf0.png

启动控制器ryu-manager controller.py

8cdb16c78b5c457c93443a8199d977f5.png

启动拓扑sudo python topo.py

b259c2db3c104deab0444df25c47f65a.png

控制器接收到的异常流量

b259c2db3c104deab0444df25c47f65a.png



四、DDoS攻击检测与缓解

4.1 正常流量的检测

在controller.py文件中修改APP TYPE=1

c6ef21b4d9044a06b189bf6ceab76dc6.png

在topo.py文件中修改TEST TYPE= normalTEST TIME=300

6aa81b58a4814f4ab4830d0bed7752d3.png

清理拓扑sudo mn -c


87432a71b92f4ce399ee7b3ca4e8b744.png

启动控制器ryu-manager controller.py

05a1071ae11a48b4b9303978f1e7ab9c.png

启动拓扑sudo python topo.py

7be66d58a7c24aaa961ec6b835ea6bb9.png

控制器和SVM进行预测:为正常流

8751204d2a5b4926b25a56a3944e37c9.png

4.2 攻击流量的检测与缓解

在topo.py文件中修改TEST TYPE= attackTEST TIME=300

a928d5b611734533abb07ab1b7c5fb1d.png

清理拓扑sudo mn -c


f20dd957a194433bbdd321deb259e243.png

启动控制器ryu-manager controller.py

8457d87516eb432897112eaeda23078b.png

启动拓扑sudo python topo.py


4baefcd65cb14737b30aab316a8ff9a2.png

控制器和SVM进行预测:为异常流,就会阻塞该端口防止异常流的攻击,其余流量就会被预测为正常流,端口的阻塞时间为2分钟,2分钟后不再阻塞,如果该端口继续检测到异常流的攻击,就再次阻塞


a6b6bed8d4c6497b9a529cc7d74c3437.png

五,精准度和检测率

0e90adc423c94a4eb6fec75bc754eb07.png

图形化显示

pip3 install mlxtend


3ca064fc10af4afea68802cf6309d6f6.png


e50d591b2369469788ad79760feb71ac.png


c32d8e34bb274b0894d8b7a258ed24a4.png

相关文章
|
16天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
44 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
16天前
|
机器学习/深度学习 安全 网络安全
利用机器学习优化网络安全威胁检测
【9月更文挑战第20天】在数字时代,网络安全成为企业和个人面临的重大挑战。传统的安全措施往往无法有效应对日益复杂的网络攻击手段。本文将探讨如何通过机器学习技术来提升威胁检测的效率和准确性,旨在为读者提供一种创新的视角,以理解和实施机器学习在网络安全中的应用,从而更好地保护数据和系统免受侵害。
|
10天前
|
5G 网络安全 SDN
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
34 3
|
26天前
|
机器学习/深度学习 Python
验证集的划分方法:确保机器学习模型泛化能力的关键
本文详细介绍了机器学习中验证集的作用及其划分方法。验证集主要用于评估模型性能和调整超参数,不同于仅用于最终评估的测试集。文中描述了几种常见的划分方法,包括简单划分、交叉验证、时间序列数据划分及分层抽样划分,并提供了Python示例代码。此外,还强调了在划分数据集时应注意随机性、数据分布和多次实验的重要性。合理划分验证集有助于更准确地评估模型性能并进行有效调优。
|
23天前
|
云安全 缓存 网络协议
如何防护DDoS攻击,筑牢网络安全防线
随着信息技术的飞速发展,网络已成为现代社会不可或缺的一部分,极大地便利了个人社交和商业活动。然而,网络空间在创造无限机遇的同时,也潜藏着诸多威胁,其中分布式拒绝服务攻击(DDoS,Distributed Denial of Service)以其高破坏力和难以防范的特点,成为网络安全领域的一大挑战。本文将从DDoS攻击的原理出发,详细探讨如何有效防护DDoS攻击,以筑牢网络安全防线。
|
26天前
|
监控 安全 数据挖掘
Mojo 语言与单位网络监控软件的创新结合
在数字化高速发展的时代,编程语言与网络监控软件不断创新,为各领域带来新机遇。本文探讨了 Mojo 语言与单位网络监控软件的结合,展示了其在提升网络管理效率和安全性方面的潜力。Mojo 语言的强大功能和灵活性使其在复杂数据分析中表现出色,而网络监控软件则能实时监测网络状况,两者结合将推动技术创新与发展。
13 1
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习模型之深度神经网络的特点
深度神经网络(Deep Neural Networks, DNNs)是一类机器学习模型,通过多个层级(层)的神经元来模拟人脑的工作方式,从而实现复杂的数据处理和模式识别任务。
35 1
|
1月前
|
机器学习/深度学习 算法 搜索推荐
机器学习方法之强化学习
强化学习是一种机器学习方法,旨在通过与环境的交互来学习如何做出决策,以最大化累积的奖励。
28 4
|
1月前
|
监控 安全 Linux
Lazarus 语言在单位网络监控软件中的应用探索
在数字化办公时代,单位网络的安全与管理至关重要。Lazarus 作为一种免费开源的编程语言,以其跨平台特性和灵活性,为开发单位网络监控软件提供了新可能。通过示例代码展示了如何利用 Lazarus 检测网络连接及监控流量,助力打造智能安全的网络环境。
15 1
|
27天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络入门到精通:Python带你搭建AI思维,解锁机器学习的无限可能
【9月更文挑战第10天】神经网络是开启人工智能大门的钥匙,不仅是一种技术,更是模仿人脑思考的奇迹。本文从基础概念入手,通过Python和TensorFlow搭建手写数字识别的神经网络,逐步解析数据加载、模型定义、训练及评估的全过程。随着学习深入,我们将探索深度神经网络、卷积神经网络等高级话题,并掌握优化模型性能的方法。通过不断实践,你将能构建自己的AI系统,解锁机器学习的无限潜能。
21 0
下一篇
无影云桌面