SPRT:https://blog.csdn.net/zhaoxiaoba/article/details/108407901
sdn中针对控制器的ddos攻击可能拖垮整个网络。ddos是指攻击者生成大量新流触发恶意泛洪。本文针对ddos提出防御方法,并进一步定位恶意主机。
首先进行流分类利用sprt做决定普通的ddos攻击就是攻击者生成大量新流,触发packet_in,这可能耗尽控制器的资源。 最近的研究工作: 包过滤机制,记录包头值,相同值认为是同一个;另一种方法利用熵,普通流的目的ip基本均匀散列,但是ddos的攻击者目的为少数几台主机;–缺点是恶意主机并不难可以生成低流量的流做到均匀三类ip。
如下图,我们描述了网络模型: 定义变量
Fib= 1 : 如果流xib是低流量流。 Fib= 0 : 如果流xib不是低流量流。 其中,H1表示接口i 受损,H0表示接口i是正常的。
low-traffic: 作者认为如果受损接口和普通接口是不同的,受损接口会有更多的low-traffic流。 攻击者生成vast new low-traffic是很合理的: vast: 大量packet_in 数据包才可能堵塞控制器 new: 新流才会引发packet_in =low-traffic: 这样对于攻击者是很高效的。
有很多的方法可以获得流统计数据:
openflow提供基于端口和给予规则的统计,包总数统计等netflowsflowcib 表示流xib的包总数统计,设置阈值Cmax
Fib服从伯努利分布:
其中Cmax可以通过训练得到。
一个检测功能可以有两类错误:消极错误和积极错误。
积极错误:接口正常(H0)被认为接口异常(H1)–误判 消极错误:接口异常被判断为接口正常-放过。
两个错误的发生概率应该不超过å和ß。 观察n次流事件,我们定义了D’n评估接口i的表现力,
Fi1, Fi2, Fi3: 其中123表示不同的流,i表示接口i。 不同流之间独立,所以 定义变量: λ0 = Pr(Fib = 1| H0) λ1 = Pr(Fib = 1| H1) 定义边界值A和B,如果
D’n <= B, 接收H0,D’n>=A, 接收H1介于两者之间,继续测试关于A和B的取值:
四个参数需要确定:α,β,λ0, λ1。
其中λ0,λ1是需要通过数据集训练得出结果,分别使用没有任何攻击的数据集和带有攻击的数据集。
通过为一个流中数据包的数量分类,如果数量少于阈值,认为是low-traffic流,否则是正常流。 通过这种分类,计算所有流中低流量数据包的比例,评估λ0,λ1.
所谓判断低流量的阈值就是 3,tcp三次握手。
这一节讨论有恶意主机的时候 ,需要至少几次观察可以监测到受损接口。
设置α = 0.01,β=0.02,根据实验结果,只需要几步就可以做出决定。
通用性。