文章目录
背景知识
SPRT:https://blog.csdn.net/zhaoxiaoba/article/details/108407901
abstract
sdn中针对控制器的ddos攻击可能拖垮整个网络。ddos是指攻击者生成大量新流触发恶意泛洪。本文针对ddos提出防御方法,并进一步定位恶意主机。
- 首先进行流分类
- 利用sprt做决定
introduction
普通的ddos攻击就是攻击者生成大量新流,触发packet_in,这可能耗尽控制器的资源。
最近的研究工作: 包过滤机制,记录包头值,相同值认为是同一个;另一种方法利用熵,普通流的目的ip基本均匀散列,但是ddos的攻击者目的为少数几台主机;–缺点是恶意主机并不难可以生成低流量的流做到均匀三类ip。
problem formulation
如下图,我们描述了网络模型:
定义变量
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提供基于端口和给予规则的统计,包总数统计等
- netflow
- sflow
detection based on sprt
a. flow classification
cib 表示流xib的包总数统计,设置阈值Cmax
Fib服从伯努利分布:
其中Cmax可以通过训练得到。
b. attack detection based on SPRT
一个检测功能可以有两类错误:消极错误和积极错误
。
积极错误:接口正常(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的取值:
evaluation and discussion
a. parameters of the method
四个参数需要确定:α,β,λ0, λ1。
其中λ0,λ1是需要通过数据集训练得出结果,分别使用没有任何攻击的数据集和带有攻击的数据集。
通过为一个流中数据包的数量分类,如果数量少于阈值,认为是low-traffic流,否则是正常流。 通过这种分类,计算所有流中低流量数据包的比例,评估λ0,λ1.
所谓判断低流量的阈值就是 3,tcp三次握手。
b. promptness
这一节讨论有恶意主机的时候 ,需要至少几次观察可以监测到受损接口。
设置α = 0.01,β=0.02,根据实验结果,只需要几步就可以做出决定。
c. versatility
通用性。