在软件定义网络中使用机器学习的方法进行 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

相关文章
|
3天前
|
算法
计算机网络:封装成帧 & 透明传输 & 差错检测
计算机网络:封装成帧 & 透明传输 & 差错检测
8 0
|
3天前
|
网络协议
LabVIEW 通过网络同步多台计算机系统时间的方法与例程
LabVIEW 通过网络同步多台计算机系统时间的方法与例程
|
3天前
|
Android开发
android检测网络连接是否存在(一)
android检测网络连接是否存在(一)
10 2
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
|
6天前
|
监控 安全 网络安全
网络安全与信息安全:保护数据的重要性与方法
网络安全和信息安全是当今社会中不可或缺的话题。本文旨在探讨网络安全漏洞、加密技术和安全意识等方面的知识,以帮助读者更好地理解如何保护个人和机构的数据安全。
14 1
|
6天前
|
数据可视化
R语言机器学习方法分析二手车价格影响因素
R语言机器学习方法分析二手车价格影响因素
|
7天前
|
机器学习/深度学习 存储 算法
m基于Yolov2深度学习网络的螺丝检测系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2算法的螺丝检测仿真结果,该系统基于深度学习的YOLOv2网络,有效检测和定位图像中的螺丝。YOLOv2通过批标准化、高分辨率分类器等优化实现速度和精度提升。核心代码部分涉及设置训练和测试数据,调整图像大小,加载预训练模型,构建YOLOv2网络并进行训练,最终保存检测器模型。
23 3
|
9天前
|
机器学习/深度学习 人工智能 安全
【AI 初识】人工智能如何用于欺诈检测和网络安全?
【5月更文挑战第3天】【AI 初识】人工智能如何用于欺诈检测和网络安全?
|
12天前
|
机器学习/深度学习 数据可视化 前端开发
【Python机器学习专栏】机器学习模型评估的实用方法
【4月更文挑战第30天】本文介绍了机器学习模型评估的关键方法,包括评估指标(如准确率、精确率、召回率、F1分数、MSE、RMSE、MAE及ROC曲线)和交叉验证技术(如K折交叉验证、留一交叉验证、自助法)。混淆矩阵提供了一种可视化分类模型性能的方式,而Python的scikit-learn库则方便实现这些评估。选择适合的指标和验证方法能有效优化模型性能。
|
12天前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】Python中的特征选择方法
【4月更文挑战第30天】本文介绍了机器学习中特征选择的重要性,包括提高模型性能、减少计算成本和增强可解释性。特征选择方法主要包括过滤法(如相关系数、卡方检验和互信息)、包装法(如递归特征消除和顺序特征选择)和嵌入法(如L1正则化和决策树)。在Python中,可利用`sklearn`库的`feature_selection`模块实现这些方法。通过有效的特征选择,能构建更优的模型并深入理解数据。