summaryrefslogtreecommitdiff
path: root/README.md
blob: c98055209a819c5771f72393ec2de479ca2c95a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 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