SYN Flood是什么?这篇给你讲明白!

简介: SYN Flood是1994年发现的DDoS攻击方式,利用TCP三次握手的漏洞,通过发送大量伪造源IP的SYN报文,使服务器创建半连接,耗尽资源,导致服务中断。防御策略包括源认证、首包丢弃和使用Anti-DDoS系统。高防服务器和抗D盾等解决方案提供DDoS清洗和CC攻击防御,通过智能分布式云接入隐藏真实IP,保持TCP连接稳定,同时提供网络加速和防掉线功能。

一、前言
SYN Flood是互联网上最原始、最经典的DDoS(Distributed Denial of Service)攻击之一。它利用了TCP协议的三次握手机制,攻击者通常利用工具或者控制僵尸主机向服务器发送海量的变源IP地址或变源端口的TCP SYN报文,服务器响应了这些报文后就会生成大量的半连接,当系统资源被耗尽后,服务器将无法提供正常的服务。增加服务器性能,提供更多的连接能力对于SYN Flood的海量报文来说杯水车薪,防御SYN Flood的关键在于判断哪些连接请求来自于真实源,屏蔽非真实源的请求以保障正常的业务请求能得到服务。

二、目录
SYN洪泛攻击的历史和技术基础

SYN Flood是如何发生的?

如何识别和防御SYN Flood?

三、SYN Flood的历史和技术基础
(一)历史
早在1994年,Bill Cheswick和Steve Bellovin就发现了TCP SYN泛洪弱点[B96]。他们在《防火墙和互联网安全:击退威利黑客》(CB94)一书中加入并删除了一段关于攻击的内容。不幸的是,在接下来的两年内没有制定任何对策。

SYN泛洪攻击于1996年在Phrack杂志上首次公开,杂志发布了一个SYN泛洪攻击的描述和利用工具[P48-13]。除了一些小的错误,本文的质量足够高,非常有用,文章中的代码被广泛分发和使用。

到1996年9月,开始广泛观察到SYN泛洪袭击。特别是,针对一家ISP邮件服务器的攻击导致了众所周知的停机。CERT很快发布了一份关于此次攻击的建议[CA-96.21]。与当时已知的其他拒绝服务攻击相比,SYN泛滥尤为严重。SYN洪泛不是依赖于简单耗尽网络资源的常见暴力策略,而是针对需要消耗更少数据包的终端主机资源。

社区很快开发了许多不同的技术来防止或限制SYN泛洪攻击的影响。其中许多已经在互联网上不同程度地部署,包括终端主机和中间路由器。这些技术中的一些已经成为某些操作系统中TCP实现的重要部分,尽管有些技术与TCP规范有很大的不同,并且这些技术中没有一项技术已经被IETF过程标准化或认可。
(二)操作理论
TCP实现可以允许使用应用程序指定的IP地址和端口号对中的全部、部分或全部进入LISTEN状态。在许多常见的应用程序(如web服务器)中,远程主机的任何信息都不是预先已知或预先配置的,因此可以与服务器事先不知道其详细信息的任何客户端建立连接。这种类型的“未绑定”LISTEN是SYN洪泛攻击的目标,因为它通常由操作系统实现。

为了成功,SYN洪泛攻击依赖于受害主机TCP实现的行为。特别是,它假设受害者在收到每个TCP SYN段时为其分配状态,并且对这种状态的数量有限制,不能在任何时候保持。当前的基本TCP规范RFC 793[RFC0793]描述了传入SYN段的标准处理。RFC 793描述了传输控制块(Transmission Control Block,TCB)数据结构的概念,以存储单个连接的所有状态信息。在实践中,操作系统可能以不同的方式实现这个概念,但关键是每个TCP连接都需要一些内存空间。

根据RFC 793,当接收到连接处于LISTEN状态的本地TCP端口的SYN时,状态转换为SYN-REEVED,并且使用来自接收到的SYN段的报头字段的信息初始化一些TCB。实际上,许多操作系统不改变LISTEN中的TCB,而是复制TCB,并在副本上执行状态转换和更新。这样做使得本地TCP端口可以在几个不同的连接之间共享。这种TCB复制行为实际上对这一目的并不重要,但会影响希望通过单个TCP端口处理多个同时连接的应用程序的编写方式。这种行为的关键结果是,必须将新的(或未使用的)内存专用于复制的TCB,而不是更新已分配的内存。

例如,在Linux2.6.10网络代码中,使用“sock”结构来实现TCB概念。通过检查,这种结构需要1300多个字节才能存储在内存中。在实现较不复杂的TCP算法和选项的其他系统中,开销可能较小,尽管它通常超过280字节[SK+97]。

为了保护主机内存不被连接请求耗尽,任何时候可以驻留的TCB结构的数量通常受到操作系统内核的限制。系统因限制是全局应用还是本地应用于特定端口号而有所不同。限制是否适用于完全建立的连接以及SYN-REEVED中的连接也存在差异。通常,系统为典型的listen()系统调用实现一个参数,该参数允许应用程序为这个限制建议一个值,称为backlog。当达到backlog限制时,要么忽略传入的SYN段,要么替换backlog中未完成的连接。标准文档中没有描述使用backlog的概念,因此到达backlog时的失败行为可能在堆栈之间有所不同(例如,可能会生成TCP RST)。确切的故障行为将决定发起主机是随时间继续重新发送SYN段,还是快速停止。这些实现上的差异是可以接受的,因为它们仅在本地堆栈的资源受到约束时影响其行为,而不会导致互操作性问题。

SYN洪泛攻击并不试图使网络资源或终端主机的内存过载,而只是试图耗尽与端口号相关的缓存的半开放连接。目标是从IP地址(通常是伪造的)快速发送SYN段,这些SYN段不会生成对生成的SYN ACK的回复。通过让缓存的连接充满了虚假的半开放连接,合法的请求将被拒绝。成功的三个重要攻击参数是拦阻的大小、生成拦阻的频率以及选择IP地址进行欺骗的方式。

四、SYN Flood是如何发生的?
SYN Flood顾名思义就是用洪水一样的SYN报文进行攻击。SYN报文指的是TCP协议中的Synchronize报文,是TCP三次握手过程中的首个报文。让我们先来了解一个正常的TCP三次握手过程。

图片.png

(一)TCP三次握手过程
开始建立连接时,客户端发送SYN报文到服务器,等待服务器确认。SYN报文的源IP地址和端口是客户端的IP地址和端口。

服务器收到SYN报文,回应一个SYN-ACK(Synchronize-Acknowledgement)报文。SYN-ACK报文的目的P地址和端口是客户端的IP地址和端口。

客户端收到服务器的SYN-ACK报文,向服务器发送ACK报文,服务器收到ACK报文后完成三次握手,TCP连接建立成功。在连接超时之前,服务器会一直等待ACK报文,此时该连接状态为半开放连接(也被称为半连接)。半连接会占用服务器的连接数,当连接数被占满时,服务器就无法提供正常的服务了。黑客正是通过这个机制来实现SYN Flood。

图片.png

(二)SYN Flood的攻击过程
黑客通常通过伪造的源IP地址或端口,向服务器发送大量的SYN报文,请求建立TCP连接。由于源IP地址或端口是伪造的,服务器发送的SYN-ACK报文永远不会被真实的客户端接收和回应。极少数情况下,黑客也会使用真实源IP地址,但他们只是通过攻击工具发送海量SYN报文,工具并不会响应来自服务器SYN-ACK报文。无论如何,服务器都接收不到ACK报文,产生了大量的半连接。此时服务器需要维持一张巨大的等待列表,不停地重试发送SYN-ACK报文,同时大量的资源无法释放。当服务器被这些恶意的半连接占满时,就不会再响应新的SYN报文,从而导致正常的用户无法建立TCP连接。

五、如何识别和防御SYN Flood?
SYN Flood的目的是占满服务器的连接数,消耗服务器的系统资源。对于服务器自身来说,最直接的做法就是提高服务能力,比如组建集群,升级硬件。但是这种方式成本巨大,且对于海量的攻击报文来说,并没有太大的作用,仅多撑几分钟甚至几秒而已。

所以,必须在这些攻击报文到达服务器之前就进行拦截。然而对于防火墙这类安全设备而言,SYN报文是正常的业务报文,防火墙的安全策略必须允许其通过,否则服务器就无法对外提供服务。如果能明确虚假源的IP地址,就能通过精细的安全策略阻止这些源发来的SYN报文。但是管理员无法预知哪些是虚假源。即使能分析出虚假源,也无法做到快速、自动地配置或取消安全策略来应对不可预期的攻击流量。

此时就需要Anti-DDoS系统的能力了,它部署在网络入口处,在服务器之前处理SYN报文,识别出虚假源,屏蔽来自这些地址的报文,只将合法的SYN报文传递给服务器。Anti-DDoS系统处理SYN报文主要有两种手段,源认证和首包丢弃。

(一)源认证
Anti-DDoS系统拦截客户端发送的SYN报文,代替服务器向客户端发送SYN-ACK报文,如果客户端不应答,则认为该客户端为虚假源;如果客户端应答,则Anti-DDoS系统认为该客户端为真实源,并将其IP地址加入白名单,在一段时间允许该源发送的所有SYN报文通过,也不做代答。

(二)首包丢弃
如果Anti-DDoS系统代替服务器应答了所有的SYN Flood攻击报文,那么性能瓶颈仅仅是从服务器转移到了Anti-DDoS系统而已。一旦Anti-DDoS系统的系统资源耗尽,攻击依旧会透传到服务器,而且大量反弹的SYN-ACK报文也会对网络造成一定的压力。Anti-DDoS系统利用首包丢弃来解决这个问题。

TCP协议的可靠性不仅体现在三次握手,还体现在超时与重传的机制。正常情况下客户端发送SYN报文后如果在一定时间没有收到服务器的SYN-ACK应答,客户端会重新发送SYN报文。Anti-DDoS系统会丢弃掉收到的第一个SYN报文。SYN Flood攻击时,黑客发送的绝大多数是变源的SYN报文,所有的SYN报文对于Anti-DDoS系统来说都是首包,都将被直接丢弃。如果客户端重传了SYN报文,Anti-DDoS系统再对该报文进行源认证。如此一来,大大减少了Anti-DDoS系统代答的压力。首包丢弃和源认证两种手段结合,对于防御SYN Flood(特别是不断变换源IP和源端口的虚假源攻击)非常有效。

(三)高防服务器
T级别数据中心,具备完善的机房设施,核心骨干网络有效保证高品质的网络环境和丰富的带宽资源

DDoS清洗:近源清洗多种流量清洗部署方案,无损防御各种DDoS攻击

CC攻击防御:5s发现恶意请求,10s快速阻断攻击,事前拦截、事后溯源、全方位防黑

Web应用防火墙:防SQL注入、XSS跨站,后门隔离保护、Webshell上传、非法HTTP协议请求。

德迅卫士:系统层安全软件,为用户远程桌面扫描登陆、手机短信验证登陆等。一键后台优化服务器权限、威胁组件、威胁端口。


图片.png


图片.png


图片.png

(四)抗D盾的使用
抗D盾是新一代的智能分布式云接入系统,接入节点采用多机房集群部署模式,隐藏真实服务器IP,类似于网站CDN的节点接入,但是“抗D盾”是比CDN应用范围更广的接入方式,适合任何TCP 端类应用包括(游戏、APP、微端、端类内嵌Web等)。用户连接状态在各机房之间实时同步,节点间切换过程中用户无感知,保持TCP连接不中断,轻松应对任何网络攻击。

DDoS防御:基于SDK接入的分布式防御体系,可精准定位恶意攻击者并主动隔离,具备自动化溯源能力。

CC攻击防御:私有化协议二次封装,非链接限速、报文检测机制,0误杀、0漏过。

集成方式:EXE封装、SDK接入,支持Windows、iOS、Android系统,分钟级集成。

网络加速:智能多线节点分布,配合独家研发的隧道填补技术,保证每条线路都是优质网络

防掉线系统:研发新SocKet协议,弥补WinSock链接失败会断开问题,链接失败自动无缝切换

承诺服务:提供被攻击打死无理由退款,封装失败或者无效无理由退款,24小时运维在线服务

图片.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
安全 网络协议 网络安全
UDP Flood是什么?及其防护方法
UDP Flood是互联网上最经典的DDoS(Distributed Denial of Service)攻击之一。攻击者在短时间内向目标设备发送大量的UDP报文,导致链路拥塞甚至网络瘫痪。一般的UDP报文由攻击工具伪造,通常在数据段具备相同的特征,另一部分由真实网络设备发出的UDP报文,虽然数据段不相同,但固定的目的端口也可作为一种特征。 确定UDP攻击报文的特征后,即可根据特征进行过滤。特征过滤就是常说的指纹过滤,可根据攻击报文的特征,自定义过滤属性。指纹过滤包括静态指纹过滤和动态指纹学习两种方法。
UDP Flood是什么?及其防护方法
|
存储 缓存 固态存储
存储性能的关键指标:IOPS与吞吐量详解
【4月更文挑战第21天】
3689 0
|
10月前
|
网络协议 安全 物联网
网络安全涨知识:基础网络攻防之DDoS攻击
网络安全涨知识:基础网络攻防之DDoS攻击
540 0
|
11月前
|
Java Unix Shell
Python 发展历史
【10月更文挑战第8天】Python 发展历史。
125 3
|
11月前
|
负载均衡 安全 网络协议
DDOS攻击与防护
DDoS攻击通过大量合法请求占用目标服务器资源,导致正常用户无法访问。常见类型包括洪水攻击(如SYN Flood和UDP Flood)和放大攻击。其危害包括服务中断、经济损失及数据泄露。防护措施涵盖网络层面(流量清洗、带宽扩容、负载均衡)、系统层面(优化配置、安装防护软件、更新补丁)和应用层面(验证码、限速策略、动态IP封禁)。
1840 1
|
9月前
|
监控 负载均衡 安全
什么是DDoS攻击及如何防护DDOS攻击
通过上述防护措施,企业和组织可以构建全面的DDoS防护体系,有效抵御各类DDoS攻击,确保网络和服务的稳定运行。
6399 10
|
11月前
|
消息中间件 物联网 Java
开发者如何使用云消息队列 MQTT 版
【10月更文挑战第14天】开发者如何使用云消息队列 MQTT 版
816 111
|
5月前
|
监控 安全 BI
Active Directory 迁移的分步指南
活动目录(AD)迁移是一项复杂任务,可能因执行不当导致业务中断。为确保顺利迁移,需遵循10个关键步骤:评估现有环境、定义域结构、规划目标架构、检查安全性、准备数据、试点迁移、正式迁移对象、同步密码、验证新环境及停用旧系统。ManageEngine ADManager Plus 是一款高效工具,可简化迁移流程,支持跨域或林迁移用户、组和GPO,同时避免数据丢失并保持环境性能。通过精准规划与专业工具结合,可实现安全、顺畅的AD迁移体验。
235 0
|
10月前
|
网络协议 算法 网络性能优化
|
11月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?