论文阅读笔记:基于 Mininet 的 DDoS 攻击和防御研究与实现

论文阅读:基于 Mininet 的 DDoS 攻击和防御研究与实现(BUPT本科生论文)

总结

​ ​\qquad 该论文主要研究及实现 SDN 中的 DDoS 攻击与防御,使用 Mininet+Ryu 控制器搭建虚拟网络拓扑作为实验平台,模拟真实的 SDN 环境。该论文通过训练决策树算法模型作为 DDoS 攻击检测方法。利用流表下发的原理设计了 DDoS 攻击的缓解方法,编写了一款 Ryu 控制器,以实现对 SDN 网络中的 DDoS 攻击的检测与缓解功能。

​ ​\qquad 该论文可以作为初学者了解SDN、DDoS攻击、决策树算法等知识的入门参考。

一、绪论

​ ​\qquad 该部分主要阐述了研究背景、研究意义、国内外研究现状、本文研究内容等,暂不展开介绍。

二、相关背景知识介绍

2.1 SDN基础

2.1.1 SDN基本框架

Alt

如上图所示,SDN由应用层、控制层、转发层三层构成。

  1. 应用层:包含了实现各种网络功能和服务的SDN应用程序。

  2. 控制层:包含控制器,负责管理和控制网络中的所有数据平面设备(可以理解为物理设备)。

  3. 转发层:包含网络中的所有数据平面设备(交换机、路由器等),这些设备通过OpenFlow或其他协议与控制器交互,并接收从控制器下发的流表以控制其行为(OpenFlow和流表见下文介绍)。

​ ​\qquad 可以看到,SDN的控制层和转发层是分开的(而传统的分布式控制架构中,用于协议计算的控制层和用于报文转发的转发层位于同一台设备中),该结构使得控制器可以预先设计、规划网络,而不用重新计算路由()。控制器可以监控、管理整个网络,十分厉害!

2.1.2 SDN控制器

控制器的功能有:

  1. 管理网络拓扑结构:控制器可以获取和维护网络拓扑结构信息,如交换机之间的连接、链路带宽等
  2. 控制网络流量:控制器可以根据网络流量的特征(源地址、目的地址、协议类型等)对网络流量进行分类、过滤和控制
  3. 编写SDN应用程序:SDN应用程序可以实现各种网络功能和服务
  4. 监控和管理网络:控制器可以收集和分析网络流量信息和性能指标(流量大小、带宽利用率等)

​ ​\qquad 常见的SDN控制器有OpenDayLight、Ryu、ONOS等。该论文使用的是Ryu。Ryu 控制器是一个基于 Python 编写的 SDN 控制器框架,它提供了一组 API 和工具,用于开发和部署 SDN 应用程序。通过使用 OpenFlow 协议,Ryu 控制器能够与 SDN 交换机进行通信,获取交换机的状态信息和网络拓扑结构。

2.1.3 流表

​ ​\qquad 流表是SDN网络中控制层下发给转发层的转发规则,用于指引交换机按照指定的规则对数据包进行特定的处理(转发、丢弃等)

一个流表项主要包含以下三个部分:

  1. 包头域:主要包含数据包的一些基本信息(源IP地址、目的端口号、协议号等),相当于匹配用的
  2. 计数器:保存数据包的一些相关统计信息(数据包的数量、长度、存活时间),控制器可通过计数器来监视网络流量和性能
  3. 动作表:交换机收到数据包后的处理方法(转发数据包、修改数据包头部、丢弃数据包等)
2.1.4 OpenFlow协议

​ ​\qquad OpenFlow是SDN中用于在网络交换机等设备和控制器之间进行通信的一种协议,控制器可通过OpenFlow消息来对交换机进行配置、管理和监控。

OpenFlow的三种消息:

  1. 控制消息:控制交换机的行为(配置交换机、请求交换机状态、设置流表等),是从控制器到交换机的单向消息
  2. 数据消息:用于数据转发,是从交换机到控制器或者从交换机到另一个交换机的双向消息。
  3. 异步消息:用于通知控制器发生的事件(端口状态改变、数据包丢失等),由交换机异步发送给控制器
2.1.5 Mininet网络仿真工具

​ ​\qquad 一个SDN网络仿真工具,可创建由控制器、交换机、主机构成的虚拟的软件定义网络。

2.1.6 sFlow-rt工具

​ ​\qquad 一种网络流量监测和分析工具,可以将网络拓扑中的流量可视化

2.2 SDN中的DDoS攻击

2.2.1 常见的DDoS攻击种类:
  1. HTTP Flood攻击:向目标服务器发送大量的HTTP请求,以耗尽服务器的资源并使其无法正常工作。
  2. SYN Flood攻击:向目标服务器发送大量的SYN包,但不发送ACK包,从而建立大量 TCP 半连接,占用服务器的资源。
  3. ICMP Flood 攻击:ICMP Flood 攻击是指攻击者向目标服务器发送大量的 Internet 控制消息协议(ICMP)请求,从而耗尽服务器的资源。
  4. UDP Flood 攻击:UDP Flood 攻击是指攻击者向目标服务器发送大量的用户数据报协议包(UDP 包),从而占用服务器的资源。
2.2.2 SDN中的DDOS攻击:
  1. 针对应用层的攻击:使用大量的请求或恶意数据包来占用控制器的带宽、处理能力和存储资源,如HTTP Flood攻击。

  2. 针对控制层的攻击:使用大量的控制消息或恶意流表规则来占用控制器的带宽和处理能力,从而导致网络流量无法正常转发,常见的攻击方式是使用随机的 IP 地址来进行 ICMP Flood 和 UDP Flood 攻击。

  3. 针对转发层的攻击:这种攻击可以使用大量的恶意数据包或无效流表规则来占用路由器或交换机设备的带宽和处理能力,从而导致网络流量无法正确地转发,常用方法是 ICMP Flood 和 UDP Flood 等洪泛攻击。

三、DDoS攻击的检测

3.1 决策树算法

3.1.1 算法基本原理

​ ​\qquad 该算法是通过对数据集进行递归划分,构建一棵树形结构,使得在每个节点上选择最优的划分特征(最佳的划分特征通常是能够最大程度减少数据集的不确定性),从而实现对样本的分类或回归预测。

三种选择最优特征的算法:

  1. ID3算法:采用信息增益最大化作为决策树选择最优特征的标准。一个特征的信息增益越大,表明该特征的重要性越大。

    G a i n A ( D ) = H ( D ) − H ( D ∣ A ) GainA(D) = H(D) − H(D|A) GainA(D)=H(D)H(DA)

    H ( D ∣ A ) = − ∑ i = 1 n P ( A i ) ∑ k = 1 K P ( D k ∣ A i ) l o g 2 P ( D k ∣ A i ) H(D|A)=−\sum_{i=1}^{n}P(A_i)\sum_{k=1}^{K}P(D_k|A_i)log_2P(D_k|A_i) H(DA)=i=1nP(Ai)k=1KP(DkAi)log2P(DkAi)

    其中特征 A 的信息增益是指总体的信息熵与特征 A 的条件熵( H(D|A) )之差

  2. C4.5 算法:C4.5 算法采用信息增益率最大化作为决策树的划分标准,特征 A的信息增益率是指特征 A 的信息增益与与特征 A 的条件熵之比。

    G a i n R a t i o A ( D ) = G a i n A ( D ) H ( D ∣ A ) GainRatio_A(D) = \frac{Gain_A(D)}{H(D|A)} GainRatioA(D)=H(DA)GainA(D)

  3. CART 算法:CART 算法使用 Gini 系数最小化准则作为划分标准,基尼系数代表了模型的不纯度,基尼系数越小,特征重要性越大。

​ ​\qquad ID3 算法用于处理离散的输入变量,并且在生成树的过程中不考虑数据的概率分布,C4.5 算法是 ID3 的改进版,它能够处理离散和连续的输入变量,并且在生成树的过程中考虑数据的概率分布,而 CART 算法引入基尼系数,CART 算法既可以用于二分类和多分类的问题,也可以用于回归问题

3.1.2 决策树的构建

​ ​\qquad 决策树算法的构建过程实际上就是对一个特征的重要程度进行排序的过程。该算法的可解释性强,但当决策树过于复杂时,往往会出现过拟合的现象。因此要进行剪枝操作。

  1. 预剪枝:设定最大深度、设定最小样本数、设定最小信息增益
  2. 后剪枝:对决策树进行自下而上的遍历,对每个非叶子节点进行考虑,将该节点对应的子树替换为叶子节点,并记录该叶子节点的类别。计算使用该叶子节点代替子树后的测试集分类准确率,如果准确率提高,则保留该叶子节点代替子树,否则还原子树。重复以上步骤,直到所有非叶子节点都被考虑过。

3.2 基于决策树算法的DDoS攻击检测实验

  1. 实验过程:

​ ​\qquad 为了实现对 DDoS 攻击的检测功能,需利用训练好的决策树算法模型编写 SDN 控制器。本实验所用控制器基于Ryu自带的SimpleSwitch13样例编写。SimpleSwitch13样例实现了简单的流表下发和流量转发的功能,在这一样例的基础上,将 DDoS检测算法整合到控制器中,从而实现 DDoS 攻击的检测,具体方法为:在控制器运行过程中,会不断向各交换机发送请求流表统计信息。在接收到交换机发回来的流表统计信息时,控制器将会触发 _flow_stats_reply_handler 函数,将用于分类的特征从交换机返回的流表信息中提取出来,输入本文训练好的决策树算法模型中,根据算法运行结果来检测该流表项是否为 DDoS 攻击流量。若检测出为 DDoS 攻击流量,且攻击流量所占比例超过一定阈值时,则判断网络受到了 DDoS 攻击,根据流表统计信息中提取的源 IP 地址、目的 IP 地址、目的端口等可以判断出被攻击的主机,从而采取防御措施。
Alt

  1. 实验结果:

​ ​\qquad 该实验最后选择的决策树最大高度为10,准确率达到了99%,决策树结果发现存活时间、目的端口、每秒发送包的数量和协议种类是最重要的几个特征,这些特征对分类准确程度的影响是最大的。

Alt

四、DDoS攻击的防御

4.1 防御原理

  1. 流量监测:SDN控制器可以监测网络流量并检测异常流量
  2. 流量控制:当SDN控制器检测到异常流量时,它可以告知网络交换机或路由器降低或阻止流量。这些可以通过使用流量限制策略。
  3. 集中式管理:SDN 的集中式管理和控制架构允许网络管理员快速响应 DDoS 攻击,管理员可以使用 SDN 控制器在整个网络中实施相同的 DDoS 防御策略

4.2 基于流表下发的DDoS攻击防御实验

4.2.1 防御方法设计

​ ​\qquad 在某一主机受到 DDoS 攻击时,SDN 可以通过控制器下发流表的操作临时关闭受攻击的端口来缓解攻击。当 Ryu 控制器检测到 DDoS 攻击后,立即获取被攻击主机和攻击者的信息,而后通过下发流表来完成关闭被攻击主机端口的操作。

​ ​\qquad 在下发流表过程中,通过设置 match、action、priority 和 hardtime 等主要字段,能够完成对特定源或目的地的流量的拦截工作。

  1. match:完成攻击流量的匹配,常用参数为源地址、目的地址、端口号、协议类型等。在下发流表时设置这些参数的值能够使得流表仅作用于特定类型的数据包。
  2. action:指示交换机对匹配的数据包执行特定的动作,主要有转发(目的端口或下一个交换机)、修改(修改MAC地址、IP地址等)、处理(丢弃、发送到控制器等)、其他(设置QoS等)等。对于DDOS攻击流量,只需要将action字段置空,表示丢弃处理
  3. priority:用于指示交换机对匹配到的多个流表项进行匹配时的优先级顺序。数值越高,优先级越高
  4. hardtime:用于指示交换机在匹配到该流表项的数据包之后,多长时间后将该流表项从交换机中删除。
4.2.2 DDoS攻击缓解方案

在这里插入图片描述

4.2.3 实验过程及结果
具体实验过程:
  1. 启动本文第三章中使用的网络拓扑,如图 3-2 所示。
  2. 启动编写好的 Ryu 控制器,使用 pingall 命令测试网络的连通性。
  3. 启动 sFlow-rt 插件,监测网络中的流量。
  4. 使用 hping3 工具模拟 DDoS 攻击,观察 Ryu 控制器的报警信息以及网络中流量的变化情况。
实验结果

​ ​\qquad 下发流表的方式实现DDoS攻击的缓解是可行的,实验效果较为明显

在这里插入图片描述

五、总结与展望

​ ​\qquad 总的来说,该论文的实验部分均基于Mininet仿真平台,并未在真实的 SDN 中进行实践验证,没有对在真实 SDN 中的效果加以探究。本文中设计的 DDoS 缓解方案只是做到了对 DDoS 攻击的被动缓解,并没有从根源上解决 DDoS 攻击的影响。同时,本文中测试所用的 DDoS 攻击只是一些基本的、简单的 DDoS 攻击,并未针对一些复杂的 DDoS 攻击进行深入的研究

  • 15
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值