防DDOS攻击

任务目的

1、理解sFlow-rt的基本配置与操作。
2、掌握硬件交换机中sFlow agent的配置过程。
3、掌握通过OpenDaylight进行DDoS防御的原理。

任务环境

设备名称 软件环境(镜像) 硬件环境
控制器 Ubuntu 14.04桌面版
OpenDaylight Lithium
CPU:2核 内存:4G 磁盘:40G
交换机 Ubuntu 14.04命令行版
Open vSwitch 2.3.1
CPU:1核 内存:2G 磁盘:20G
主机 Ubuntu 14.04桌面版 CPU:1核 内存:2G 磁盘:20G

注:系统默认的账户为root/root@openlab,openlab/user@openlab。

任务内容

1、完成sFlow-RT安装和OpenDaylight配置。
2、测试sFlow模拟DDOS防御功能。

实验原理

一、DDoS基础
DDoS指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃账号将DDoS主控程序安装在一个计算机上,在一个设定的时间,主控程序将与大量代理程序通信,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。DDoS攻击将造成网络资源浪费、链路带宽堵塞、服务器资源耗尽而使业务中断。
二、防DDoS攻击
sFlow技术是一种以设备端口为基本单元的数据流随机采样的流量监控技术,不仅可以提供完整的第2层到第4层甚至全网范围内的实时流量信息,而且可以适应超大网络流量(如大于10 Gbit/s)环境下的流量分析,让用户详细、实时地分析网络传输流的性能、趋势和存在的问题。sFlow监控工具由sFlow Agent和sFlow Collector两部分组成。Agent作为客户端,一般内嵌于网络转发设备(本实验在OpenFlow交换机中部署Agent),通过获取设备上的接口统计信息和数据信息,将信息封装成sFlow报文,当sFlow报文缓冲区满或在sFlow报文缓存时间超时后,sFlow Agent会将sFlow报文发送到指定的Collector。Collector作为远端服务器,本实验部署在OpenDayLight中,负责对sFlow报文分析、汇总、生成流量报告。sFlow的基本工作原理如下图所示。
防DDOS攻击_第1张图片
本实验采用的sFlow软件为sFlow-RT,sFlow-RT可统计到每个接口的流量信息,实验通过sFlow-RT的REST API获取JSON数据并对JSON数据进行解析,对解析到的数据进行分析判断后即可实施策略。
通过对sFlow-RT进行配置,设定metric=ddos,并设定它的阈值,当监测到的流量超过这个阈值时即判断为DDoS。sFlow-RT调用预制的OpenDaylight脚本:odl.js来调用OpenDaylight RESTful API下发匹配DDoS攻击包流表,并进行丢弃操作,完成模拟DDoS攻击防御。

实验步骤

一、实验环境检查

步骤1 登录OpenDaylight控制器,确保服务已经启动成功,由于OpenDaylight组件过于庞大,所以启动比较慢,需等待一段时间,使用命令netstat -an|grep 6633查看端口是否处于监听状态:

步骤2 在保证控制器6633端口处于监听状态后,使用root用户登录交换机,查看交换机与控制器连接情况。执行以下命令:

# ovs-vsctl show

防DDOS攻击_第2张图片
如上图所示,当出现交换机与控制器连接不成功时,执行# ovs-vsctl del-controller br-sw #ovs-vsctl set-controller br-sw tcp:30.0.1.3:6633手动重连,稍等一会后,重新查看连接状态,如下图所示controller下方显示“is_connected:true”则表明连接成功。
防DDOS攻击_第3张图片

步骤3 登录控制器主机,查看控制器IP地址,如下图所示。

防DDOS攻击_第4张图片

步骤4 登录交换机,执行ovs-vsctl set-manager tcp:30.0.1.3:6640命令连接控制器。

原本控制器与交换机之间的连接是通过OpenFlow协议的,在此基于OVSDB协议创建一个新的连接,其中30.0.1.3是控制器IP,6640是OVSDB协议对应的侦听端口,如下图所示。
防DDOS攻击_第5张图片

二、安装sFlow

步骤1 使用root用户登录控制器,查看镜像中预置的sflow安装包。

# cd /home
#ls

步骤2 执行解压命令,命令如下。

# tar -xvzf sflow-rt.tar.gz

步骤3 执行如下命令拷贝脚本。

# cp /home/openlab/openlab/ddos/json2.js /home/sflow-rt/extras
# cp /home/openlab/openlab/ddos/odl.js /home/sflow-rt

步骤4 在控制器中打开浏览器,输入URL:http://[controller_ip]:8181/index.html ,输入有户名:admin,密码:admin,单击登录按钮。单击Nodes菜单,获取交换机node id,如下图所示。

步骤5 分别登录主机,查看主机IP信息如下:

主机1:
防DDOS攻击_第6张图片
主机2:
防DDOS攻击_第7张图片

步骤6 进入控制器主机的sflow-rt目录,编辑脚本odl.js:

用上述获取的主机ip信息以及连接到OpenDaylight的node信息进行替换,如下:
防DDOS攻击_第8张图片

步骤7 修改start.sh脚本,将

exec java ${JVM_OPTS} ${RT_OPTS} ${RTPROP} -jar ${JAR} 

替换成如下内容:

SCRIPTS="-Dscript.file=odl.js"
exec java ${JVM_OPTS} ${RT_OPTS} ${RTPROP} ${SCRIPTS} -jar ${JAR}

三、部署sflow-agent

步骤1 使用root用户登录交换机,执行以下命令,部署sflow agent。

# ovs-vsctl -- --id=@sflow create sflow agent=s1 target=\"30.0.1.3:6343\" header=128 sampling=10 polling=1 -- set bridge br-sw sflow=@sflow

步骤2 执行以下命令查看已经配置的sflow agent信息。

# ovs-vsctl list sflow

查看结果如下:
防DDOS攻击_第9张图片

步骤3 登录控制器,进入/home/sflow-rt,执行命令./start.sh启动sflow。

四、验证实验

步骤1 登录控制器,打开浏览器。

输入http://127.0.0.1:8008/flow/html 查看flow信息如下:

输入http://127.0.0.1:8008/threshold/html 查看阈值信息如下:

输入http://127.0.0.1:8008/agents/html 查看部署的sflow agent,如下:

步骤2 单击上图中的30.0.1.9(该IP为交换机的IP地址),进入该虚拟机所监控的端口列表页面,结果如下:

防DDOS攻击_第10张图片

步骤3 登录主机1使用ping [ip] -f命令模拟DDOS攻击主机2,如下:

步骤4 登录控制器,打开浏览器,输入http://127.0.0.1:8008/agents/html ,单击30.0.1.9,进入该虚拟机所监控的端口列表页面,搜索ddos,单击进入流量视图页面,具体如下:

防DDOS攻击_第11张图片
可以看出当开启DDOS防御时,泛洪包迅速被丢弃,当停止DDOS攻击防御时,流量迅速增大。查看交换机上的对DDOS处理的流表,如下:

你可能感兴趣的:(SDN)