摘 要:在SDN架构下,网络控制器的拒绝服务攻击会抢占控制器的资源,引起网络瘫痪。本文分析了SDN控制器的拒绝服务攻击的特点,介绍了目前比较主流的检测和防护SDN控制器DoS攻击的方法,并以OpenDaylight控制器为例,提出了一种对控制器DoS攻击进行检测和防护的模型,最后利用ODL提供的API对提出的模型进行了编程实现。
关键词:SDN网络;拒绝服务攻击;OpenDaylight
中图分类号:TP393.08 文献标识码:A 文章编号:2096-4706(2018)12-0184-02
Detecting and Defeating Denial-of-Service Attacks on SDN Controller
LIU Zhigang
(Modern Education Technonoly and Information Center,Nanchang Hangkong University,Nanchang 330063,China)
Abstract:Denial-of-Service(DoS)attacks will run out of the resources of SDN controller,and results in breakdown of the network. This article analysis characters of DoS attacks on SDN Controller,meanwhile some detection and prevention methods are also introduced. In this paper,a model of Detecting and Defeating Denial-of-Service attacks on OpenDaylight controller is proposed. Using the API of ODL,we realize this model by programming.
Keywords:SDN network;Denial-of-Service attacks ;OpenDaylight
0 引 言
SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念[1]。目前SDN已经逐步取代传统网络,成为下一代互联网的基石。
SDN控制器和交换机之间的南向接口具有一定的脆弱性[2]。除了TLS/SSL协议在安全通信方面的脆弱性[3]外,攻击者还会利用SDN中的一些交换机向控制器发起DoS攻击,产生大量虚假请求,致使控制器无法提供正常的数据流匹配和流表下发操作。
1 控制器DoS攻击行为检测方法
1.1 突发流量的异常行为检测
首先统计正常流量样本数据流中IP包的平均数量、数据流平均字节数、信息流平均持续时间、配对信息流的百分比、单信息流的增长率以及不同端口的增长率等6个方面的特征,建立正常的流特征模型,并和实际流量进行匹配。偏离度超过阈值的数据流可视为攻击流量。本方法在DoS攻击检测的流量特征提取方面具有消耗低、检测率较高的特点[4];
1.2 基于有限连接状态机迁移机制的攻击检测
设置连接迁移模块,对SYN Flood等基于TCP协议状态的DoS攻击加以阻断,但这种检测方法无法检测非TCP协议的攻击行为。Wang等人基于数据包迁移和数据面缓存机制,设计了一种轻量级DoS攻击防御模型OF-Guard,并提出了一种新型DoS攻击防御架构[5];
1.3 利用DoS攻击行为模型的误用检测
该方法对OpenFlow系统进行建模,并列举系统潜在的安全威胁(如DoS攻击),然后根据模型匹配数据流,将匹配度较高的流视为攻击行为并加以阻断。
2 基于OpenDaylight的攻击检测系统设计
以OpenDaylight为例,本文设计开发了相关的应用以防御DoS攻击。本系统主要架构如图1所示。
系统需要两个模块:
(1)监测模块。用来计算当前packet-in消息的速率来查看是否超过警戒值,当超过警戒值以后则由处理模块来进行处理;
(2)处理模块。接收packet-in消息,解析IP地址以及MAC地址等信息,并统计packet-in消息速率。当速率超过阈值,则将相应的威胁信息记录到DataStore中,并通过SalFlowService接口向交换机下发流表,让交换机丢弃相应的数据流。
3 系统方案实现
3.1 监控模块的实现
监测模块记录和计算某一个时间段内packet-in消息的数量和速率,与预设的阈值进行比较,并确定是否发出Notification消息。核心的逻辑代码如下:
counter = counter + 1;
if ((counter % samplesLwm) == 0) {
calendar = Calendar.getInstance();
newTime = calendar.getTimeInMillis();//获取当前时间
timeDiff = newTime - oldTime;//计算时间差
oldTime = newTime;//将oldTime时间更新
avgPacketInRate = (samplesLwm / timeDiff) * 1000;//收包的平均速率
counter = 0;
LOG.info(\"Average PacketIn Rate is \" + avg-PacketInRate);
}
3.2 处理模块的实现
创建HandlerModule类,实现DefenderpluginListener接口,并实现onLowWaterMarkBreached方法,根据Noti-fication发送过来的相关信息下发丢弃行为的流表。具体代码如下:
List nodes = getAllNodes(dataBroker);
String dstMAC = notification.getDstMac();
if(!dstMAC.equals(\"FF:FF:FF:FF:FF:FF\")) {
Flow flow = createProgibitFlow(notification);
for (Node node : nodes) {
NodeKey nodeKey = node.getKey();
InstanceIdentifier nodeId = InstanceIdentifier.builder(Nodes.class).child(Node.class,nodeKey).build();
addProhibitFlow(nodeId,flow);
}
}
最后构建并下发流表给交换机。
3.3 效果测试
在mininet控制界面中输入h1 ping -f h2命令产生大量的请求数据,此时可在karaf终端观察到大量攻击日志,说明已经检测到packet-in flooding攻击,然后在mininet中输入dpctl dump-flows查看流表,可见在交换机上已经存在了actions=drop的流表项,此时h1和h2之间的通信已被切断,防止了packet-in flooding攻击。
4 结 论
本方法利用OpenDaylight的API接口实现了DoS攻击的检测和防护,扩展了OpenDaylight控制器的安全功能,但是抵御DoS攻击还是需要综合运用多种方法,从多个维度保障SDN系统安全。
参考文献:
[1] McKeown N.Software-Defined metworking.In:Proc.of the INFOCOM Key Note,http://infocom2009.ieee-infocom.org/technicalProgram.htm,2009.
[2] 王蒙蒙,刘建伟,陈杰,等.软件定义网络:安全模型、机制及研究进展 [J].软件学报,2016,27(4):969-992.
[3] Manik Lal Das,Navkar Samdaria. On the security of SSL/TLS-enabled applications [J].Applied Computing and Informatics,2014,10(1-2):68-81.
[4] Hong S,Xu L,Wang H,Gu G. Poisoning network visibility in software-defined networks:New attacks and countermeasures. In:Proc. of the 2015 Annual Network and Distributed System Security Symp.(NDSS 2015). San Diego:Internet Society,2015:1-15.
[5] Wang H,Xu L Gu G. OF-GUARD:A DoS attack prevention extension in software-defined networks. In:Proc. of the Poster Session of the Open Networking Summit 2014. Santa Clara:USENIX,2014:1-2.
作者简介:刘治纲(1978.05-),男,汉族,江西南昌人,讲师,研究生。研究方向:下一代互联网。