查看: 19666|回复: 28

SYN Flood攻击原理和防御

[复制链接]
发表于 2017-1-5 13:52:19 | 显示全部楼层 |阅读模式
SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于1999年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了TCP三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

标准的TCP三次握手过程如下:

● 客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;

● 服务器在收到客户端的SYN报文后,将返回一个SYN+ACK(即确认Acknowledgement)的报文,表示客户端的请求被接受,同时TCP初始序号自动加1;

● 客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1。

经过这三步,TCP连接就建立完成。TCP协议为了实现可靠传输,在三次握手的过程中设置了一些异常处理机制。第三步中如果服务器没有收到客户端的最终ACK确认报文,会一直处于SYN_RECV状态,将客户端IP加入等待列表,并重发第二步的SYN+ACK报文。重发一般进行3-5次,大约间隔30秒左右轮询一次等待列表重试所有客户端。另一方面,服务器在自己发出了SYN+ACK报文后,会预分配资源为即将建立的TCP连接储存信息做准备,这个资源在等待重试期间一直保留。更为重要的是,服务器资源有限,可以维护的SYN_RECV状态超过极限后就不再接受新的SYN报文,也就是拒绝新的TCP连接建立。

SYN Flood正是利用了上文中TCP协议的设定,达到攻击的目的。攻击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。

SYN Flood防御

SYN Flood攻击大量消耗服务器的CPU、内存资源,并占满SYN等待队列。相应的,我们修改内核参数即可有效缓解。主要参数如下:

C

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
1
2
3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。

SYN Cookie的作用是缓解服务器资源压力。启用之前,服务器在接到SYN数据包后,立即分配存储空间,并随机化一个数字作为SYN号发送SYN+ACK数据包。然后保存连接的状态信息等待客户端确认。启用SYN Cookie之后,服务器不再分配存储空间,而且通过基于时间种子的随机数算法设置一个SYN号,替代完全随机的SYN号。发送完SYN+ACK确认报文之后,清空资源不保存任何状态信息。直到服务器接到客户端的最终ACK包,通过Cookie检验算法鉴定是否与发出去的SYN+ACK报文序列号匹配,匹配则通过完成握手,失败则丢弃。当然,前文的高级攻击中有SYN混合ACK的攻击方法,则是对此种防御方法的反击,其中优劣由双方的硬件配置决定tcp_max_syn_backlog则是使用服务器的内存资源,换取更大的等待队列长度,让攻击数据包不至于占满所有连接而导致正常用户无法完成握手。net.ipv4.tcp_synack_retries是降低服务器SYN+ACK报文重试次数,尽快释放等待资源。这三种措施与攻击的三种危害一一对应,完完全全地对症下药。但这些措施也是双刃剑,可能消耗服务器更多的内存资源,甚至影响正常用户建立TCP连接,需要评估服务器硬件资源和攻击大小谨慎设置。

除了定制TCP/IP协议栈之外,还有一种常见做法是TCP首包丢弃方案,利用TCP协议的重传机制识别正常用户和攻击报文。当防御设备接到一个IP地址的SYN报文后,简单比对该IP是否存在于白名单中,存在则转发到后端。如不存在于白名单中,检查是否是该IP在一定时间段内的首次SYN报文,不是则检查是否重传报文,是重传则转发并加入白名单,不是则丢弃并加入黑名单。是首次SYN报文则丢弃并等待一段时间以试图接受该IP的SYN重传报文,等待超时则判定为攻击报文加入黑名单。

首包丢弃方案对用户体验会略有影响,因为丢弃首包重传会增大业务的响应时间,有鉴于此发展出了一种更优的TCP Proxy方案。所有的SYN数据报文由清洗设备接受,按照SYN Cookie方案处理。和设备成功建立了TCP三次握手的IP地址被判定为合法用户加入白名单,由设备伪装真实客户端IP地址再与真实服务器完成三次握手,随后转发数据。而指定时间内没有和设备完成三次握手的IP地址,被判定为恶意IP地址屏蔽一定时间。除了SYN Cookie结合TCP Proxy外,清洗设备还具备多种畸形TCP标志位数据包探测的能力,通过对SYN报文返回非预期应答测试客户端反应的方式来鉴别正常访问和恶意行为。

清洗设备的硬件具有特殊的网络处理器芯片和特别优化的操作系统、TCP/IP协议栈,可以处理非常巨大的流量和SYN队列。
回复

使用道具 举报

 楼主| 发表于 2017-1-9 10:29:49 | 显示全部楼层
7777777777777777777777777777777777777777777777777777777777777777
回复

使用道具 举报

 楼主| 发表于 2017-1-11 09:58:15 | 显示全部楼层
88888888888888888888888888888888888888888888888888888
回复

使用道具 举报

 楼主| 发表于 2017-1-12 09:44:54 | 显示全部楼层
090909090900090909090909090909090909
回复

使用道具 举报

 楼主| 发表于 2017-1-13 09:53:42 | 显示全部楼层
555555555555555555555555555555555555555555555
回复

使用道具 举报

 楼主| 发表于 2017-1-14 09:25:38 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-1-16 10:21:13 | 显示全部楼层
666666666666666666666666666
回复

使用道具 举报

 楼主| 发表于 2017-1-19 10:13:16 | 显示全部楼层
87557875656565667656
回复

使用道具 举报

 楼主| 发表于 2017-1-20 11:05:29 | 显示全部楼层
89779989090099089708907890879078980798709870908
回复

使用道具 举报

 楼主| 发表于 2017-1-22 10:49:03 | 显示全部楼层
545787789789807800-=-000897987897789
回复

使用道具 举报

 楼主| 发表于 2017-1-23 13:38:56 | 显示全部楼层
767676767676776766776676776767676677676
回复

使用道具 举报

发表于 2017-1-23 14:19:28 | 显示全部楼层
好贴好贴,通俗的讲解了SYN Flood的具体原理和方法,很到位,赞一个
回复

使用道具 举报

 楼主| 发表于 2017-1-24 14:23:13 | 显示全部楼层
68686686886688668668686868686868686686886868
回复

使用道具 举报

 楼主| 发表于 2017-1-25 13:42:22 | 显示全部楼层
688888888888888888888888888888888868686868686868686868866868686868686868
回复

使用道具 举报

 楼主| 发表于 2017-2-3 13:47:50 | 显示全部楼层
6666666666666666666666666666666666
回复

使用道具 举报

 楼主| 发表于 2017-2-4 13:38:43 | 显示全部楼层
4444444444444444444444444444444444444444444444444444444444
回复

使用道具 举报

 楼主| 发表于 2017-2-6 14:20:31 | 显示全部楼层
5555555555555555555555555555555555555555555567
回复

使用道具 举报

 楼主| 发表于 2017-2-7 14:24:16 | 显示全部楼层
645555555555555555555555555555555555555557777777777777777
回复

使用道具 举报

 楼主| 发表于 2017-2-8 14:48:11 | 显示全部楼层
8799999999999999999999997899999999999999999999
回复

使用道具 举报

 楼主| 发表于 2017-2-9 14:26:23 | 显示全部楼层
54444444444444444444444444444444444444444444444444
回复

使用道具 举报

 楼主| 发表于 2017-2-10 13:59:02 | 显示全部楼层
765755555555555555555555555555555555555555555567
回复

使用道具 举报

 楼主| 发表于 2017-2-12 13:52:10 | 显示全部楼层
6544444444444445555555555566666666666666666666666666666666666666666666667
回复

使用道具 举报

 楼主| 发表于 2017-2-13 11:38:44 | 显示全部楼层
76445454545754645754674554774575476747
回复

使用道具 举报

 楼主| 发表于 2017-2-14 15:18:40 | 显示全部楼层
5634444444444444444444444444444444
回复

使用道具 举报

 楼主| 发表于 2017-2-16 14:05:47 | 显示全部楼层
3653666666666666666666666666666666666666666666666633356
回复

使用道具 举报

 楼主| 发表于 2017-2-22 15:25:54 | 显示全部楼层
5654444444444444444444444444444444446777777777777
回复

使用道具 举报

 楼主| 发表于 2017-3-2 13:40:27 | 显示全部楼层
7356353644444444444445
回复

使用道具 举报

 楼主| 发表于 2017-3-7 14:12:44 | 显示全部楼层
32432423324234234234565555555555555555555555
回复

使用道具 举报

 楼主| 发表于 2017-3-13 14:06:18 | 显示全部楼层
6666666666666666666666666666666666666666666666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表