关于该实验的详细介绍请查阅我的这篇博客:在软件定义网络中使用机器学习的方法进行 DDOS 攻击检测与缓解
〇、拉取代码
https://github.com/Jerry-jy/SDN-DDOS-Detection
一、 配置环境
先升级
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
ryu-manager --version
mn --version
iperf --version
hping3 --version
二、 正常流量收集
在topo.py中修改流量的测试类型TEST_TYPE = “normal” TEST_TIME = 600
启动控制器ryu-manager controller.py
启动网络拓扑sudo python topo.py
控制器接受到正常流量:
三、攻击流量数据
在controller.py文件中修改APP TYPE=0
和 TEST TYPE=1
在topo.py文件中修改TEST TYPE=attack
和 TEST TIME=600
,
清理网络拓扑sudo mn -c
启动控制器ryu-manager controller.py
启动拓扑sudo python topo.py
控制器接收到的异常流量
四、DDoS攻击检测与缓解
4.1 正常流量的检测
在controller.py文件中修改APP TYPE=1
在topo.py文件中修改TEST TYPE= normal
和 TEST TIME=300
,
清理拓扑sudo mn -c
启动控制器ryu-manager controller.py
启动拓扑sudo python topo.py
控制器和SVM进行预测:为正常流
4.2 攻击流量的检测与缓解
在topo.py文件中修改TEST TYPE= attack
和 TEST TIME=300
,
清理拓扑sudo mn -c
启动控制器ryu-manager controller.py
启动拓扑sudo python topo.py
控制器和SVM进行预测:为异常流,就会阻塞该端口防止异常流的攻击,其余流量就会被预测为正常流,端口的阻塞时间为2分钟,2分钟后不再阻塞,如果该端口继续检测到异常流的攻击,就再次阻塞
五,精准度和检测率
图形化显示
pip3 install mlxtend