基于SDN的ddos攻击检测与防御
本项目依赖mininet, floodlight, sFlow-RT
1,启动floodlight
cd floodlight
java -jar target/floodlight.jar
浏览器访问http://localhost:8080/ui/pages/index.html 或者http://localhost:8080/ui/index.html
2,创建 mininet拓扑
sudo mn --topo=single,4 --controller=remote,ip=127.0.0.1,port=6654
此时浏览器8080中可以在topology菜单中查看到 相关拓扑
3,DDoS 攻击检测
(1)启动sFlow-RT
保持Mininet 运行的终端,再新开一个终端窗口,输入如下指令,启动sFlow-RT。
cd sflow-rt
./start.sh
(2)配置sFlow Agent
我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。
键入以下指令部署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
查询已经配置的 sFlow Agent信息
sudo ovs-vsctl list sflow
(3)查看流量可视化
访问 http://localhost:8008/html/index.html#status
点击上面的apps,然后再点击flow-trend进入到流量图
然后分别在Keys,Value,Filter列填入:ipsource,ipdestination,stack;bytes;留空 ,然后点击右面的 Submit (√)提交-------,之后,将自动转到图形化流量监控页面
之前的mininet命令窗口中执行h2 ping h1 可以查看流量 ,可以看到流量较小
然后执行h2 ping -f h1 来模拟ddos攻击,可以看到流量明显增大
4,ddos防御(通过下发流表方式来操作)
(1)查询当前流表
curl -X GET http://127.0.0.1:8080/wm/staticflowpusher/list/00:00:00:00:00:00:01/json
(2)下发下面的流表(ddos.json)
{
"switch": "00:00:00:00:00:00:00:01",
"name": "flow-mod-dropt",
"cookie": "0",
"in_port": "1",
"eth_type": "0x0800",
"ip_proto": "0x01",
"priority": "100",
"active": "true",
"actions": "output=no-forward"
}
执行命令:
curl -X POST -d @ddos.json http://127.0.0.1:8080/wm/staticflowpusher/json
可以明显看到流量下降了
删除流表:
curl -X DELETE -d '{"name":"flow-mod-dropt"}' http://127.0.0.1:8080/wm/staticflowpusher/json
发现流量又激增了
原文地址:https://blog.csdn.net/wjd1994/article/details/145061963
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!