原标题:软件定义网络SDN架构的安全快速切入

一、基础环境介绍

操作系统:ubuntu-16.4

网络仿真器 :mininet-2.2.2

入侵检测系统: suricata-3.1(也可以使用snort)

SDN控制器: floodlight-1.2(比较老,新版本安装有点问题)

二、测试目标

通过mininet模拟网络环境。

通过floodlight进行流量控制牵引。

通过suricata实现入侵检测。

三、测试实现效果

正常环境: 主机H1ping主机H2正常,切不进行流量监测。

测试环境: 首先将suricata添加ping指令告警,方便测试实现。 其次将Floodlight策略下发,H1流量牵引复制一份至IDS中,然后通过H1ping主机H2时,IDS设备(suricata)报错告警。

重构网络sdn架构与实现 sdn网络架构图_重构网络sdn架构与实现

测试流程示例图

四、安全防护过程介绍

1.首先通过mininet模拟了一台SDN控制器(c0)、一台OVS交换机(s1)、三台模拟主机,其中一台部署了IDS设备。详情如下图:

重构网络sdn架构与实现 sdn网络架构图_IP_02

模拟网络架构

模拟完毕后我们可通过ping指令进行测试,指令语句为:h1 ping -c 30 h2,详情如下图:

重构网络sdn架构与实现 sdn网络架构图_H2_03

ping测试

2.suricata部署完毕后,添加ping的指令检测。具体语句如下:

语句解读:icmp协议;any对any;告警显示内容为“PING TEST”;icmp协议中 type=8、code=0是回显请求(Ping请求);sid是snort规则ID;rev是规则版本号。

3.Floodlight部署完毕后,可通过WEB后台进行查看, http://IP:端口/ui/index.html,如下图:

重构网络sdn架构与实现 sdn网络架构图_H2_04

floodlight后台截图

其中ids使用的是port3、h2是port2、h1是port1 。我们通过post形式,对流表进行操作,如下代码:

url -X POST -d '{"switch":"00:00:00:00:00:00:00:01","name":"flow-mod-3","cookie":"111",
"priority":"32766","in_port":"1","eth_type":"0x0800","active":"true","actions":"output=2,3"}' http://IP:端口/wm/staticflowpusher/json

语句解读:priority:优先级 in_port:进;eth_type:协议类型,output:出端口,多个逗号隔开。

添加成功后,ids服务器便可接收0x0800协议类型(ping是先通过arp在通过icmp,而icmp是基于tcp的所以是该类型)的流量啦。

4. 当我们在通过主机h1pingh2时(可以ping通),ids的告警信息fast.log文件,会产生相应告警。如下图:

suricata告警