概念
SYN泛洪攻击利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,使得半连接队列溢出,从而不能与正常的客户端建立连接。
原理
利用TCP连接的两个缺陷。
-
SYN Timeout
服务器在从SYN_RECV状态切换到Establish状态时,有一个最长等待时间SYN Timeout,一般是分钟量级的。
-
对IP完全信任
报文传输过程中,对报文的源IP是完全信任的。
SYN Flood攻击类别
1. 直接攻击
攻击者直接利用自己没有经过伪装的IP地址,快速大量的发送SYN报文,而阻止自己的主机对服务器的SYN+ACK做出响应。攻击者可以通过设置防火墙,让防火墙阻止一切发往服务器的数据包(SYN除外),或者屏蔽服务器发送的SYN+ACK包。
这种方法一旦被检测到,非常容易抵御。只需通过设置防火墙阻止带有攻击者IP的数据包就可以了。
2. 欺骗式攻击
攻击者不使用自己的源IP,而是伪装一些IP地址,一般是伪装许多个IP地址。这些IP地址上可能根本就没有分配主机,或者是不能响应SYN+ACK包。
3. 分布式攻击
攻击者利用在网络中主机数量上的优势,可以从不同网段进行攻击。主机群既可以直接攻击,也可以运用欺骗攻击。
SYN Flood防御技术
1. 缩短SYN Timeout的时间
2. 设置SYN cookie
SYN Cookie是TCP服务端专门用来防范SYN Flood的一种手段。
它的原理是,在有SYN包到来时,系统不直接给服务器,而是先根据SYN包计算出一个 Cookie值,作为SYN+ACK的初始序列号。当客户端返回ACK包时,检查确认序列号ack是否为cookie+1,如果相同,则是一个正常连接,然后再分配资源,建立连接。
3. 设置SYN可疑队列
- 单一IP攻击
对于同一IP在短时间内,发送大量的重复连接请求时,可直接将数据丢弃。
- 一组IP攻击
对于一组IP在短时间内,发送大量的重复连接请求时,将其放入可疑队列,当某个IP的请
求数大于一定阈值时,作为攻击数据丢弃;若在期间收到I某个IP的应答,则将其转入正常队列。
- 网段范围攻击
收到某个网段内不同主机的大量连接请求时,将其放入可疑队列。
为防止堆栈溢出,在收到客户端ACK包之前,不给当前连接分配资源和存储状态信息。
当服务器负载较重时,首先丢弃可疑队列中的数据。
4. 使用防火墙
- SYN网关
- 防火强收到SYN包时,直接转发给服务器;
- 防火墙收到服务器的SYN+ACK包后,转发给客户端;
- 另外,先以客户端的名义给服务器回复一个ACK包,完成三次握手。因为服务器承受连接状态的能力要比半连接状态强的多。
- 当真正的ACK到来时,携带数据则发给服务器,否则则丢弃;
- 被动式SYN网关
在SYN网关的基础上,不以客户端的名义回复ACK包,而是设置SYN请求超时参数,
让它远小于服务器的超时期限。这样,如果在规定时间内未收到客户端的ACK包,防火墙
向服务器发送RST包,使该连接从半连接队列中删除。
3. SYN中继
SYN中继防火墙在收到客户端的SYN包之后,尝试与客户端完成接下来的两次握手,
若完成三次握手,则再有防火墙以客户端的名义与服务器完成连接。
这样由防火墙作为代理,可以完全过滤不可用的连接请求。
1154

被折叠的 条评论
为什么被折叠?



