# MSFlow:SDN流量防御和分流辅助器 ## 1.功能: a)恶意软件流量识别,Cridex、Geodo、Htbot、Miuref、Neris、Nsis-ay、Shifu、Tinba、Virut、Zeus b)正常应用流量识别,Facetime、Weibo、BitTorrent、FTP、Gmail、MySQL、Outlook、Skype、SMB、WordOfWarcraft c)QoS d)DDoS缓解 ## 2.代码说明 # model/:分类器模型 model/datahelper/: 数据清洗 model/train/: 模型训练 model/packet_predict.py: 二分类器,正常流量和恶意流量区分 model/xxx.model: 二分类器模型训练保存结果 model/DBhelper.py: 二分类器所需的数据库存取操作 model/benign_packetpredict.py: 十分类器,十种正常应用流量识别 # sdnData/: 界面启动目录 # sflow-rt: sflow工具 # ms_topo_4s.py: mininet拓扑构建脚本 # send.py: 发包测试脚本 # ryu_predict.py: ryu控制器app # product.py: 控制器和界面的交互接口 ## 3.运行说明 注:环境中需要有ryu、mininet、mysql、python3、tensorflow、pandas等等,请按运行的错误提示自行补全安装。 其中,tensorflow要求2.2版本以上,实验中用的2.3.0;django版本2.2(2版本和3版本不兼容); 1)开启系统,进入sdnData/文件夹:python3 manage.py runserver 8081,打开浏览器访问127.0.0.1:8081查看界面是否开启; 2)运行控制器:(假设已安装ryu),进入../ryu/ryu/app文件夹,将ryu_predict.py以及model/文件夹,放在该app/文件夹下;运行控制器:ryu-manager ryu_predict.py; 3)运行sflow工具,进入sflow_rt/文件夹:sudo ./start.sh,在浏览器访问127.0.0.1:8008查看sflow服务端是否正常开启(具体的sflow配置可参考链接:https://blog.csdn.net/AsNeverBefore/article/details/79098971); 4)好啦,这里我们可以用发包脚本发包来看一看程序运行的样子了:sudo python send.py(脚本内的待发送数据包可以自行修改,默认发送本文件夹下的test.pcap) 6)常见问题: (1)环境没有配置好,缺少东西 (2)自定义的类以及函数,在import过程中,不同的环境所需的路径不通,请按报错信息自行修改 (3)发包时出现数据包超过MTU值,通过命令修改mtu:ifconfig h1 mtu 9000 (4)使用sflow监听mininet中的流量,mininet中交换机端口本身没有IP,需要设置IP后才能作为监听端口,步骤如下 启动minninet网络 sudo ifconfig ens33 0 up sudo ovs-vsctl add-port s1 ens33 sudo ifconfig s1 10.0.1.10 netmask 255.255.254.0 sudo route add default gw 10.0.1.1 sudo ovs-vsctl -- --id=@sflow create sflow agent=s1 target=\"10.0.1.10\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow