dFence: Transparent Network-based Denial of Service Mitigation
Mahimkar A , Dange J , Shmatikov V , et al. dFence: Transparent Network-based Denial of Service Mitigation[J]. Nsdi ’, 2007:24-24.,
本文通过添加dFence中间设备,实现透明的DoS防御。图1架构图,将中间设备透明插入可能受攻击的主机前并拦截所有流量。
Transparent Middlebox Invocation
本部分讲如何透明调用中间设备,网络不用了解中间设备存在于否。要解决的问题有:1.双向流拦截,指定流固定到中间设备;2.动态状态管理;3.中间设务错误恢复。
Dynamic Traffic Interception
当前存在的方法无法满足我们的需要。
Inbound traffic interception
通过使用iBGP和隧道技术来拦截inbound流量,iBGP在本在AS发路由表到所有的S,这样所有的目标主机的流量都被定位到一个固定的(dFence Middle box)M上。具体步骤: 见图2a
- 找M。在a中,IGP找的M是M1,但它不是HM。(home middle box,即该M是否是处理某流的M)
- 不是HM,而由M找HM,图a中由M1找M3,M3为HM。(某个特定的目标主机需要由一个M处理。)用流的hash来确认是不是HM。 3.HM通过隧道技术将包发给出口路由Rn,这里这们做是避免环。隧道技术声明:(ACLs-to-S和ACLs-from-S)
Outbound traffic interception
为达到这样的目的,hash函灵敏定义为:更换sIP和dIP计算得到的Hash值不变。 $h_{1}\left(\operatorname{src} a d d r, \operatorname{src}{-} p o r t\right) \oplus h{2}\left(d s t_{-} a d d r, d s t_{-} p o r t\right)$ 使用PBR交付所有目的主机流量到M。如图2b
- 若满足ACL-from-S而交付到一个M上,这里是M4
- M找HM,这里是M3
- 处理后正常交付即可。
Dynamic State Management
当M介入或移除时,分别引入启动时间$T_b$和移除时间$T_r$。
- state bootstrapping:在$T_b$内,所有已有的双向连接都视为合理。
- state removal:在$T_r$内,对新来的连接不应用策略。 经过分析,启动时间设为5或10秒较合理,移除时间稍长以处理完连接。移除决策只能由M自己作出。
Falure Recovery and load balancing
可能的出错原因有:power outage,hardware malfunciton,software errors,network outages,..。 解决办法:优雅地流转移。即通过转移处理流的HM来解决出错和负载平衡。 所有的M都维护一个全局home Hash表,对于某个流识别f,计算hash:h(f),再通过HM(h(f))找到它的HM。
Failure rcovery
所有的dF设备连成一个逻辑环,可通过R.next(Mi)递归找到每一个设备。当Mi失效时,则R.next(Mi)接替Mi的工作。
Load balancing
与上面相似,假如M1过载,而通过 HM(e)=M2将e从M1转到M2.
Middlebox Disign.
M维护的TCP连接主要分两类:M引进前和M引进后。 M主要维护连接的一个Connection Hash表,表项由FlowID(sIP,dIP,sP,dP)作键,表项组成:
- flow definition
- offset:C和S的序列号差值,后面会讲到。
- Timestamp:连接最近一次的包到达时间
- service bits:
- inboundPacketRate:每个时间间隔到达的包数。
另个还有个Src-Dest表,记录同样sIP-dIP的连接数,超过阈值就禁止建立新的连接。 再另外,对于目的主机S主动发送的连接使用Bloom filter来维护。
Mitigation Policies
本文要实现的目标是透明实现DoS防御,攻击形式:SYN flood,Smurf-type,reflection attacks。
Mitigation spoofed attacks
- network-based SYN cookie generation 过程图见图4
当C发送SYN,M通过计算SYN cookies,并以此作为SYN-ACK序列号。此时为无状态。M与C连接阶段通过设置window=0来chock防止C发数据,这很重要,若C未完成连接即可丢弃。 M与C握后完成,创建Connection和Src-Dest表项,此时,M与S握手,序列号为C的SYN序列号。 当M与S完成shake,就不再chock,此时要维扩展护一个序列号偏移offset。 当要中继时,可通过offset来进行序列号转换,该如何处理可以通过service bit来决定。
- Spoofed data floods and reflector attacks 也可用上面的机制解决。
Mitigation unspoofed attacks
- Unspoofed data floods:过于占用带宽,M拦截S的ACK,使C减速,项不减速则弃包。
- Too many unspoofed connection:控制Zombie完成握手,控制src-dst连接数在一个合理的范围。
- NAPTHA attacks:攻击都关闭TCP并不发送FIN,M通过时间,是就RST
- Botnet attack:黑客控制上些机器对victim进行HTTP或其他请求轰炸,通过流量统计或ISP的/24前缀白名单优化。因为zombie 机器通常sparsely distributed,因此有效。
Evasions and Attacks on Middlebos
- exhausting the connection state。即填满Connection表。限制单主机连接数量,只保留未欺骗源的状态。
- Adaptive traffic variation:你on 我off,你off 我on。避免快速加入或退出M。
- werewolf attack:先正常连接,连上后再攻击你。定期检查流发送率和白名单。
- Multiple attacks:增加MiddleBox数据 policy desion tree见图5,这个和Avant-guard有点像。
implementation
控制平面流量截取XOPR,数据平面攻击缓解IXP(这个并不是SDN里的那个。)完整设计可见图6a,控制平面利用BGP和IGP来进行路由决策并更新交付表。
- Control plane interception: 当有攻击时,M拦截,利用iBGP使所有的victim的流量通向M,并设定隧道和ACL规则来配置egress以防止环路。
- Data plane mitigation:使用Shangri-La framework 实现IXP,将攻击缓解实现成一个包处理函数映射。如图6b。
- Control-data planes interaction: XORP和IXP之间使用ioctl()和系统调用来交流。XORP运行BGP/IGP并在数据平面上映射MAC/IP下一跳IP,PORT等信息。
评估
Micro benchmarks
- lantency:各个功能的处理时间见到表1.
- 吞吐量:见表2,单位为:Kpps (kilo packets per second)。
end-to-end benchmarks
服务器:1GHz Intel P-3 processor 256MB RAM,256KB cache,Apache Web Server Linux 2.4.20 kernel。评估:连接时间和最大TCP吞吐量。结果见图7
- Lantency:7a,x轴为攻击率,y轴为连接时间。
- 吞吐量:10s时加入M,可见加入M后吞吐量随之恢复正常。
如果这篇文章帮到了你, 那就赞助我一瓶水吧, 这可以让我有动力去写更多的文章
Sponsor