NoSwitch对SDN Controller进行DoS攻击的验证

1 科普

1.1 什么是DoS?

DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃。

NoSwitch to SDN-Controller DDOS verify

1.2 SDN安全问题

SDN安全问题

2 原理

用python模拟Switch 向SDN 控制器发送连接请求并保持连接,以消耗控制器资源,最后使SDN控制器资源耗尽而停止响应。

3 实验环境

操作系统 : Win7_64(POX完全Python实现,Windows兼容良好,源码可直接运行)
Python 版本 :2.7
SDN Controller : POX
处理器:Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz 2.30GHz
内存:4GB

4 过程

首先将环境搭建好,下载POX源码

NoSwitch 完整源码地址:https://github.com/lfzark/NoSwitch。

4.1 核心源码简析

1.处理发送数据包,使用struct.pack封装数据包头部再在尾部附加载荷。

2.处理接收到的据包,对控制器发来的请求按照OpenFlow协议解析,返回请求类型和tid。

3. 处理请求 ,根据接收到的请求类型发送相应的应答数据包。

4.多线程。实现多线程连接请求,每个线程负责实例化一个NoSwitch类,向Controller发送请求并保持连接。

4.2 使用介绍

controller_address  控制器地址
port 控制器端口号
count 连接次数
示例:

对地址为127.0.0.1端口为6633的控制器发送连接1000次
运行过程如下图所示:

运行过程截图1
运行过程截图2

5 防范措施

SDN作为一个以集中控制为核心的新型网络,单点的DoS安全成为了一个巨大的威胁,本文示范的例子可以使用认证等措施来避免非法连接,Early Detection of DDoS Attacks against SDN Controllers》[1]一文中使用入侵检测技术对DDoS进行提前检测,详情请参照[1],在此不再详述,利用发送认证请求的DDoS攻击也需要依靠防火墙、入侵检测、入侵容忍等安全技术来防范,DDoS的确是让人很头疼的一件事情。

6 小结

本文使用python模拟Switch向SDN控制器发送大量连接请求,已达到资源耗尽的目的,过程虽然很简单但是却提醒我们在控制集中的环境下安全问题成为了不可忽视的一环,根据《SDN Security: A Survey》[2]文中所述,SDN中的安全问题还有很多,本文只是很勉强地起了一个抛砖引玉的作用,例如控制器劫持,安全认证的穷举破解等传统安全问题在SDN上都可以相应实现,如有相关问题,欢迎一起交流讨论学习。 最后,祝大家学运昌盛。

引用:

[1]《Early Detection of DDoS Attacks against SDN Controllers》(Seyed Mohammad Mousavi and Marc StHilaire Department of Systems and Computer Engineering Carleton University, Ottawa, Canada)
[2]《SDN Security: A Survey》 (Sandra Scott-Hayward, Gemma O’Callaghan and Sakir SezerCentre for Secure Information Technolocy (CSIT)

作者简介:
李方洲,2014/09-至今,哈尔滨理工大学信息安全方向,主要研究SDN安全和高性能SDN架构。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/11322.html
分享到:
相关文章
条评论

登录后才可以评论

李方洲 发表于15-05-04
7