简单说下 SYN FLOOD 是什么

SYN Flood 又称 SYN 洪水攻击,也是拒绝服务攻击的一种,是一种曾经很经典的攻击方式。攻击者利用TCP协议的安全缺陷,不断发送一系列的SYN请求到目标系统,消耗服务器系统的资源,从而导致目标服务器不响应合法流量请求。

在谈SYN flood 之前,我们先了解一下一次正常的网络请求都有哪些步骤,从而更清晰的了解SYN Flood的攻击方式。

一般一次正常的网络请求分以下几个步骤:

  • 域名解析
  • TCP握手建立链接
  • 客户端发起请求
  • 服务器响应请求
  • 客户端解析并且渲染页面
  • 至此一次请求结束。

而此种攻击正是发生在TCP握手的阶段。TCP握手一般分为三步。客户端发送SYN请求数据包。服务器回复(ACK)确认包。客户端再次回复(ACK)确认包。至此,TCP握手阶段结束。

image-20210910003906299

SYN Flood / SYN 洪水攻击原理

为了创建拒绝服务,攻击者利用的正是TCP协议的安全缺陷。在接收到初始SYN数据包之后,服务器用一个或多个SYN / ACK数据包进行响应,并等待握手中的最后一步。这是它的工作原理。

此种攻击是攻击者向目标服务器发送大量的SYN数据包,服务器会响应每一个请求然后返回ACK确认包,并且等待客户端的最终响应。

因为攻击者通常会采用虚拟ip,所以也就意味着服务器永远不可能接收到最终的确认包。这种情况下当服务器未接收到最终ACK数据包的时候,服务端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。

这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),那么服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。从而造成服务器的崩溃,即使你的服务器系统资源够强大,服务端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小)。

此时,正常用户就会觉得服务器失去响应,这种情况就叫做,服务端收到了SYN Flood攻击(SYN 洪水攻击)。

image-20210910004026011

在网络中,当服务器断开连接但连接另一端的客户端没有断开连接时,连接被认为是半开的。在这种类型的DDoS攻击中,目标服务器不断离开打开的连接,等待每个连接超时,然后端口再次可用。所以这种攻击也可以被认为是“半开攻击”。

发表评论

后才能评论