1. 概念
SYN Flood 攻击是一种典型的拒绝服务攻击方式,利用 TCP 协议缺陷,发送大量伪造的 TCP 连接请求,使被攻击方资源耗尽,最终导致系统或服务器宕机。
2. 种类
(1)Direct Attack:攻击方使用固定的源地址发起攻击,消耗最小。
(2)Spoofing Attack:攻击方使用变化的源地址发起攻击,需不断修改源地址,消耗也不大。
(3)Distributed Direct Attack:利用僵尸网络进行固定源地址攻击。
3. 攻击原理
TCP 连接建立需三次握手。首先客户端发送包含 SYN 标志的报文请求连接,服务器收到后返回 SYN+ACK 报文表示接受请求并要求客户端确认。客户端再返回 ACK 报文完成连接。SYN Flood 攻击正是利用了这个过程,攻击者发送大量伪造源地址的 SYN 数据包,服务器在发出 SYN+ACK 应答报文后无法收到客户端的 ACK 报文。服务器一般会重试并等待一段时间后丢弃未完成的连接,这个等待时间称为 SYN Timeout,通常为分钟量级(大约 30 秒 - 2 分钟)。如果有大量这样的等待丢失情况发生,服务器将为维护大量半连接请求而消耗大量资源。例如,服务器可能需要保存并遍历大量半连接,这会消耗很多 CPU 时间和内存。同时,服务器还不断对列表中的 IP 进行 SYN+ACK 的重试,负载会变得非常巨大。如果服务器的 TCP/IP 栈不够强大,可能会导致堆栈溢出崩溃。此时,正常用户的请求会被服务器忽略,表现为打开页面缓慢或服务器无响应。
二、攻击的危害与表现
(一)服务器的困境
SYN Flood 攻击会使服务器陷入严重的困境。当遭受攻击时,服务器由于无法收到大量伪造连接请求的 ACK 报文,导致其无法提供正常服务。正常的连接请求会被拒绝或者超时,用户在尝试访问受攻击的服务器时,可能会遇到页面无法打开、加载缓慢或者直接报错的情况。
通过命令检查可以发现大量处于半连接状态的条目。例如,可以在终端通过netstat -n -p tcp来查看服务器的 TCP 连接情况。在正常情况下,SYN_RECEIVED 状态的条目应该很少或者没有,但在遭受 SYN Flood 攻击时,会出现大量的 SYN_RECEIVED 条目,这表明服务器很可能正在遭受攻击。因为 SYN Flood 攻击一般使用随机源 IP,服务器回应的 SYN - ACK 报文得不到回应,导致服务器会使用大量内存去处理这些 TCP 连接。据统计,在一些严重的攻击案例中,服务器可能会因为处理这些半连接而消耗超过 70% 的内存资源,极大地影响了服务器的性能和稳定性。
(二)网络的瘫痪风险
SYN Flood 攻击不仅会影响单个服务器,还可能导致整个网络瘫痪,给企业和各类网络平台带来巨大的影响。当大量服务器同时遭受攻击时,网络中的数据流量会急剧增加,占用大量的网络带宽。这不仅会使受攻击的服务器无法正常通信,还可能影响到其他正常的网络设备和服务。
对于企业来说,网络瘫痪可能导致业务中断,影响生产效率和客户满意度。例如,在线购物平台如果遭受 SYN Flood 攻击,可能会导致用户无法下单、支付或者查询订单状态,给企业带来巨大的经济损失。对于各类网络平台,如社交媒体、在线游戏等,网络瘫痪会影响用户体验,导致用户流失。据不完全统计,一次大规模的 SYN Flood 攻击可能会使一个中型企业的网络瘫痪数小时甚至数天,造成数十万元甚至上百万元的经济损失。
三、常见防御措施
(一)黑名单与监视
对 SYN 包进行监视是一种常见的防御手段。当发现某个 IP 发起了较多的攻击报文时,可以将这个 IP 列入黑名单,以阻止其继续发起攻击。然而,实际情况中,即使设置了黑名单,攻击者可能会采用不断变换 IP 地址的方式继续发动攻击,导致设置黑名单后仍然可能遭受攻击。例如,在一些攻击案例中,攻击者利用僵尸网络,不断切换不同的 IP 地址发起 SYN Flood 攻击,使得黑名单的防御效果大打折扣。
(二)技术手段防御
- 延缓 TCB 分配:消耗服务器资源主要是因为当 SYN 数据报文一到达,系统立即分配 TCB。而 SYN Flood 由于很难建立起正常连接,当正常连接建立起来后再分配 TCB 可以有效地减轻服务器资源的消耗。
- 无效连接监视释放:不停监视系统的半开连接和不活动连接,当达到一定阈值时拆除这些连接,从而释放系统资源。但这种方法可能会误释放正常连接,属于入门级的 SYN Flood 方法。
- 使用 Syn Cache 和 Syn Cookie 技术:
-
- Syn Cache 技术:在收到 SYN 数据报文时不急于分配 TCB,而是先回应一个 SYN ACK 报文,并在专用 HASH 表(Cache)中保存半开连接信息,直到收到正确的回应 ACK 报文再分配 TCB。例如,在 FreeBSD 系统中,这种 Cache 每个半开连接只需使用 160 字节,远小于 TCB 所需的 736 个字节。
-
- Syn Cookie 技术:完全不使用任何存储资源,使用特殊算法生成 Sequence Number。在收到对方的 ACK 报文后,重新计算看其是否与对方回应报文中的(Sequence Number - 1)相同,从而决定是否分配 TCB 资源。
(三)防火墙的作用
防火墙在防御 SYN Flood 攻击中起着重要作用。防火墙采用 SYN 代理功能,对试图穿越的 SYN 请求进行验证后才放行。防火墙在确认了连接的有效性后,才向内部的服务器发起 SYN 请求,所有的无效连接均无法到达内部的服务器。例如,可以结合 Syn Cookie 或 Syn Proxy 等技术来验证连接的有效性。Syn Proxy 在服务器前端的防火墙上使用,当防火墙收到 syn 包,自己就回复一个 syn - ack 的包给发起方,在自己内部建立连接。等发起方将 ack 包返回后,再重新构造 syn 包发给服务器,建立真正的 tcp 连接。
(四)内核参数调整
通过修改服务器内核参数可以缓解 SYN Flood 攻击。例如,设置net.ipv4.tcp_max_syn_backlog变量,它告诉在内存中可以缓存多少个 SYN 请求,该变量需要打开tcp_syncookies才有效。如果服务器负载很高,可以尝试提高该变量的值。net.ipv4.tcp_synack_retries变量用于 TCP 三次握手机制中第二次握手,设置发送 SYN + ACK 包的次数,超过这个次数,服务端将放弃连接。默认值是 5。net.ipv4.tcp_abort_on_overflow变量的值是个布尔值,默认值为 0(FALSE 关闭)。如果开启,当服务端接收新连接的速度变慢时,服务端会发送 RST 包给客户端,令客户端重新连接。
(五)限制连接数
使用 iptables 可以限制单 IP 并发数、C 类子网并发数和单位时间内连接数等。例如,限制单个地址的并发连接数量可以使用iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT。限制单个 c 类子网的并发链接数量可以使用iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT。设置单位时间内连接数可以使用iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --set和iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP。
四、应对困境的探索
(一)设置黑名单后的困境
尽管设置黑名单是一种常见的防御手段,但在实际应用中,攻击者往往会采用不断变换 IP 地址的方式继续发动攻击,使得黑名单的防御效果大打折扣。例如,攻击者可能利用僵尸网络,短时间内从大量不同的 IP 地址发起 SYN Flood 攻击,导致服务器在将这些 IP 加入黑名单的过程中,新的攻击 IP 又不断出现,难以完全阻止攻击。
(二)旁路设备的设想
旁路设备可以作为一种新的解决思路。旁路设备通过镜像流量,对网络中的数据包进行实时监测。当发现 SYN 超时后,发送特殊包给服务器,释放服务器上的半连接。这样可以避免服务器因大量半连接而消耗过多资源。例如,假设一个企业网络遭受 SYN Flood 攻击,通过部署旁路设备,可以在不影响正常网络流量的情况下,及时检测到超时的 SYN 请求,并向服务器发送特殊包,快速释放半连接资源。据相关测试数据显示,在一些实际应用场景中,旁路设备能够有效减少服务器处理半连接的时间,提高服务器的响应速度和稳定性。
(三)未来可能的发展方向
面对设置黑名单后仍在攻击的情况,除了旁路设备的设想,未来还可以探索更多的防御手段。例如,结合人工智能和机器学习技术,对网络流量进行更智能的分析和识别,快速准确地判断攻击流量并采取相应的防御措施。同时,不断改进和优化现有的防御技术,如 Syn Cookie、Syn Proxy 等,提高其防御效果和稳定性。此外,加强网络安全意识教育,提高用户和企业对网络攻击的认识和防范能力,也是应对 SYN Flood 攻击的重要方向之一。
墨者安全 防护盾
墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。