SYN 洪水利用 TCP/IP 握手漏洞以尝试破坏 Web 服务。
阅读本文后,您将能够:
复制文章链接
SYN 洪水(半开连接攻击)是一种拒绝服务 (DDoS) 攻击,旨在耗尽可用服务器资源,致使服务器无法传输合法流量。通过重复发送初始连接请求 (SYN) 数据包,攻击者将可击垮目标服务器计算机上的所有可用端口,导致目标设备在响应合法流量时表现迟钝乃至全无响应。
SYN 洪水攻击利用 TCP 连接的握手过程发动攻击。正常情况下,TCP 连接将完成三次握手以建立连接。
为发起拒绝服务攻击,攻击者需利用这样一项事实:收到初始 SYN 数据包后,服务器将通过一个或多个 SYN/ACK 数据包做出回响,等待完成握手过程的最后一步。工作方式如下:
在网络中,如果服务器连接处于打开状态但另一端的机器连接未打开,则视为半开连接。在此类 DDoS 攻击中,目标服务器将使连接一直处于打开状态,静待各个连接超时,避免再次开放端口。因此,此类攻击可视为“半开连接攻击”。
恶意用户可以通过 SYN 洪水攻击尝试在目标设备或服务中创建拒绝服务,其流量远低于其他 DDoS 攻击。SYN 攻击不属于容量耗尽攻击,其目的并非使目标周围的网络基础设施达到饱和,只需保证大于目标操作系统的可用积压工作即可。如果攻击者能够确定积压工作规模以及每个连接保持打开状态的时间长度(超出时间将进入超时状态),攻击者将可以找出禁用系统所需的确切参数,从而将创建拒绝服务所需的总流量降至最低。
SYN 洪水漏洞早已为世人所知,而且开创了大量缓解方法。其中一些方法包括:
目标设备安装的每个操作系统都允许具有一定数量的半开连接。若要响应大量 SYN 数据包,一种方法是增加操作系统允许的最大半开连接数目。为成功扩展最大积压工作,系统必须额外预留内存资源以处理各类新请求。如果系统没有足够的内存,无法应对增加的积压工作队列规模,将对系统性能产生负面影响,但仍然好过拒绝服务。
另一种缓解策略是在填充积压工作后覆盖最先创建的半开连接。这项策略要求完全建立合法连接的时间低于恶意 SYN 数据包填充积压工作的时间。当攻击量增加或积压工作规模小于实际需求时,这项特定的防御措施将不奏效。
此策略要求服务器创建 Cookie。为避免在填充积压工作时断开连接,服务器使用 SYN-ACK 数据包响应每一项连接请求,而后从积压工作中删除 SYN 请求,同时从内存中删除请求,保证端口保持打开状态并做好重新建立连接的准备。如果连接是合法请求并且已将最后一个 ACK 数据包从客户端机器发回服务器,服务器将重建(存在一些限制)SYN 积压工作队列条目。虽然这项缓解措施势必会丢失一些 TCP 连接信息,但好过因此导致对合法用户发起拒绝服务攻击。
Cloudflare 通过隔离目标服务器与 SYN 洪水攻击来缓解此类攻击。当发出初始 SYN 请求时,Cloudflare 将在云中完成握手过程,拒绝与目标服务器建立连接,直到完成 TCP 握手过程。此策略使目标服务器不再需要浪费资源与伪造的 SYN 数据包建立连接,而是将资源用于打造 Cloudflare Anycast network。了解有关 Cloudflare DDoS 保护工作原理的更多信息。