网页无法加载?原来是服务器被洪水冲垮了

服务器 服务器产品
如果客户端应答,则认为该客户端为真实源,将该客户端加入白名单,在一段时间内允许该客户端发送的所有Syn报文通过。但这种方式其实是将服务器的压力转移到Anti-DDos系统上,一旦Anti-DDos系统的资源被消耗完,攻击还是会回到服务器上。

我们在上网时可能会遇到无法访问网站、网站加载缓慢、游戏卡顿等现象,我们通常认为这是网速问题。

其实这只是其中一种可能性,今天文档君就给大家揭秘另一种可能——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连接。
  • 服务器收到Syn报文,回应一个Syn-Ack报文并等待用户确认。
  • 由于源地址是不存在的,服务器接收不到回应的Ack报文,需要反复发送Syn-Ack确认报文直至连接超时。这些伪造的Syn包将长时间占用未连接队列,使服务器无法回应正常用户的Syn报文请求。

图片图片

3.如何应对SynFloo d

对于SynFlood这样利用海量Syn报文攻占服务器连接资源的攻击,提高服务器的连接能力并没有太大的作用。

所以,必须在这些攻击报文到达服务器之前就进行拦截。

但是对于防火墙这类安全系统而言,Syn报文是正常的业务报文,防火墙无法将其拦截,否则服务器将无法对外提供服务。

另外,防火墙也不能提前明确虚假源的IP地址,利用安全策略来拦截这些源发来的Syn报文。

这时就需要Anti-DDoS系统的能力了,Anti-DDos系统部署在客户端和服务器之间,可以在服务器之前处理Syn报文,识别出虚假源,屏蔽这些地址发送的报文,只将合法的Syn报文传送给服务器。

Anti-DDos系统处理Syn报文的方式主要有两种:源认证和首包丢弃。

源认证

Anti-DDos系统拦截客户端发送的Syn报文。

如下图所示,在源认证方式下,Anti-DDos系统会代替服务器向客户端发送Syn-Ack报文,如果客户端无回应,则认为该客户端为虚假源。

如果客户端应答,则认为该客户端为真实源,将该客户端加入白名单,在一段时间内允许该客户端发送的所有Syn报文通过。

但这种方式其实是将服务器的压力转移到Anti-DDos系统上,一旦Anti-DDos系统的资源被消耗完,攻击还是会回到服务器上。

图片图片

首包丢弃

TCP协议的可靠性除了体现在三次握手机制,还体现在超时与重传的机制。

首包丢弃的方式就是利用TCP协议可靠性中超时与重传的机制。

就像服务器如果长时间未收到客户端的Ack报文,会重新给客户端发送Syn-Ack报文一样,如果客户端发送Syn请求报文后长时间未收到服务器发来的Syn-Ack报文,客户端也将重新发送Syn请求报文给服务器。

如下图所示,Anti-DDos系统会丢弃客户端发送的第一个Syn报文。

而因为攻击者在发动SynFlood攻击时,发送的绝大多数是变源的Syn报文,因此这些Syn报文对于Anti-DDos系统来说都是首包,系统将直接丢弃。只有当客户端重传了Syn报文,Anti-DDos才会对该报文进行源认证,这样就大大减少了Anti-DDos系统的压力。

图片图片

通过首包丢弃和源认证这两种方式的结合使用,就可以帮助服务器有效抵御Syn Flood攻击,让服务器可以为正常用户提供服务。

责任编辑:武晓燕 来源: 中兴文档
相关推荐

2009-03-10 12:42:45

2018-03-07 10:59:52

2019-08-30 10:27:37

数据库通信技术

2017-06-06 15:13:07

2022-12-14 07:32:40

InnoDBMySQL引擎

2021-02-07 08:13:18

@DateTimeFo@NumberFormSpring

2018-03-20 14:24:10

Web服务器HTTP

2024-02-06 09:30:25

Figma矩形矩形物理属性

2020-02-23 15:55:00

疫情AI人工智能

2022-05-05 08:55:12

工业物联网IIoT

2023-05-22 15:58:11

2023-10-11 07:29:21

2017-11-12 21:12:34

HPC

2018-04-02 15:13:21

网络

2025-02-17 09:22:16

MySQLSQL语句

2024-04-30 08:22:51

Figma图形编辑变换矩阵

2021-02-02 09:13:11

索引SQL数据库

2021-02-11 09:14:36

内存虚拟机数据

2023-02-15 08:17:38

2020-05-26 08:52:36

Java JVM多态
点赞
收藏

51CTO技术栈公众号