我们在上网时可能会遇到无法访问网站、网站加载缓慢、游戏卡顿等现象,我们通常认为这是网速问题。
其实这只是其中一种可能性,今天文档君就给大家揭秘另一种可能——SynFlood泛洪攻击。
1.什么是SynFlood
SynFlood泛洪攻击也叫SYN泛洪,是DDoS(Distributed Denial of Service,分布式拒绝服务)的经典攻击方式之一。
SynFlood就像它的名字一样,利用洪水一样的Syn报文来攻击服务器,占用服务器的资源,导致服务器无法为正常用户服务。
当我们遇到网站无法访问等问题时,可能就是因为服务器被Syn泛洪攻击了,导致无法响应我们的请求。
由于攻击者可以利用工具向服务器发送海量变源IP地址或变源端口的Syn报文,因此即使增强了服务器的性能、或提高服务器的连接能力,也无法抵御Syn泛洪攻击。
防御SynFlood的关键在于判断哪些连接请求来自于非正常用户,让服务器屏蔽非正常用户的请求,保障正常用户的业务请求能得到服务。
2.SynFlood是如何抓住漏洞进行攻击的
SynFlood是一种攻击服务器的方式,它通过向服务器发送大量伪造的Syn报文来耗尽服务器的资源,从而使服务器无法响应正常用户的请求。
其中,Syn报文指的是TCP协议中的Synchronize报文,是TCP三次握手过程中客户端向服务器发送的首个报文。
要了解Syn Flood的攻击手段,首先我们先来回顾一下TCP三次握手的过程是什么样的:
图片
第一次握手:客户端向服务器发送一个Syn请求报文,等待服务器确认。
第二次握手:服务器收到Syn报文,回应一个Syn-Ack请求确认报文。
第三次握手:客户端收到服务器的Syn-Ack报文,向服务器发送Ack确认报文表示确认,服务器收到Ack报文后完成三次握手,建立TCP连接。
图片
在上述过程中,还有一个重要的概念就是未连接队列。
在三次握手的过程中,服务器在收到客户端的Syn报文后,会在未连接队列中,为每个客户端的Syn报文开设一个条目。
该条目表明服务器已收到Syn包,并向客户发出Syn-Ack报文,等客户端回复Ack报文或连接超时之后,服务器才删除该条目。
当未连接队列被占满后,服务器就无法响应其他客户的请求了。
而SynFlood正是利用TCP连接中三次握手的这种机制,如下图所示,SynFlood的攻击过程如下图所示:
图片
- 攻击者通过伪造的源IP地址或端口,向服务器发送大量的Syn报文,请求建立TCP连接。