`

SYN Flood攻击,防御?无解!

阅读更多
SYN Flood攻击及其防御

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,

严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn


1.TCP连接基本原理
TCP协议是一个标准的面向连接协议,在真正的通信前,必须按一定协议先建立连接,连接建立好后才能通信,通信结束后释放连接。连接建立过程称为三次握手,发起方先发送带有只SYN标志的数据包到目的方,目的方如果端口是打开允许连接的,就会回应一个带SYN和ACK标志的数据包到发起方,发起方收到后再发送一个只带ACK标志的数据包到目地方,目的方收到后就可认为连接已经正确建立。服务器只收到SYN包时称为半连接状态,收到ACK包成为全连接,半连接和全连接服务器端都要分配一定的资源来处理。

2.SYN Flood攻击
SYN Flood攻击就是根据TCP服务器不验证连接对方,一收到SYN就要回应的特点进行的DOS攻击,攻击方发送大量的伪造SYN包到服务器,使服务器建立大量的半连接,使自己的连接队列被填满,这样真正的请求就无法响应,造成服务无法提供。只要攻击方构造攻击包的代价小于服务器的处理代价,SYN攻击就可以起效。

3.syn cookie和syn proxy防御
syn cookie方法是在收到SYN包后,服务器根据一定的方法,以数据包的源地址、端口等信息为参数计算出一个cookie值作为自己的SYNACK包的序列号,回复SYNACK包后服务器并不分配资源进行处理,等收到发起方的ACK包后,重新根据数据包的源地址、端口计算该包中的确认序列号是否正确,如果正确则建立连接,否则丢弃该包。该方法可以在服务器上自己使用,确实能缓解SYN Flood攻击,但如果不用SYN而用ACK攻击,DOS就会很有效。即使是这样,就算只有SYN包,由于计算cookie值并不很简单,也需要消耗资源,因此流量大时也会形成DOS的。
syn proxy方法一般不在服务器本身使用,而是在服务器前端的防火墙上使用,防火墙上收到SYN包,自己就回复一个SYNACK包给发起方,在自己内部建立连接,等发起方将ACK包返回后,再重新构造SYN包发到服务器,建立真正的TCP连接,这个过程中防火墙要给发起方发送SYNACK一个包,给服务器发送SYN和ACK两个包,通信的后续包防火墙都应该注意修改序列号或确认号,因为防火墙回复发起方的SYNACK包的序列号基本不可能等于服务器发送的SYNACK包的序列号,所以要进行调整。syn proxy的方法可以保证到达服务器的连接都是合法的连接,有攻击时服务器并不会受到冲击,都是由防火墙来承受了,本质上也不能真正防御SYN Flood。

4. 根据SYN包异常来判断
对于构造出来的SYN攻击,源地址、源端口等值都可能是随机的,不能确定是否真是攻击包,但攻击程序一般并不是真正完善,还是可以通过一定特点检测出来,以下是一些判断依据:
1) 是否带TCP选项,一般的TCP SYN包中都要带选项,只是要告诉对方自己的MSS是多少,完全不带选项的SYN包理论上虽然合法,但伪造的可能性更大;
2) tcp window值,window值表示当前机器所能接收的数据缓冲大小,作为连接发起方,该值太小是说不过去的,伪造成分居多;
3) IP TTL值,对于固定的服务器,可以事先探测出到其他地址的TTL值,如果发现该TTL和理论值差异太大,伪造成分居多;
4) IP ID, TCP window, TCP序列号等值在不同SYN包中相同的可能性很小,如果连续的SYN包这些值都相同,基本就是伪造包当然,对于完善的SYN攻击器,是可以避免上述缺点的。

5. 首包丢弃法
对于真正的TCP连接,如果第一个包没有响应,发起方会再次发送SYN包,而攻击程序大都不会重发,因此防火墙上可以对首次出现的SYN包进行丢弃,只接收后面的,也会缓解SYN Flood攻击。但如果攻击程序确实会重复发包,该方式无效。

6. 总结
由于一般情况下TCP发起方消耗的资源都要小于服务方,所以SYN攻击是TCP协议的死结,根子是出在协议上,所以真正的SYN Flood是无法防御的,所有措施都只能在某些情况下起效,真正从根本上进行防御是不可能的,如果有号称能真正防御SYN攻击的设备,只能说是用来测试的SYN攻击器功能不完善,真正完善的SYN攻击器没有任何设备能防御。
分享到:
评论

相关推荐

    Linux下基于SYN Cookie的防SYN Flood攻击的实现与改进.pdf

    SYN Cookie是一种防御SYN Flood攻击的机制,它可以检测到攻击者的SYN报文,并将其过滤掉,避免服务器受到攻击。SYN Cookie的实现机制主要有两个部分:Cookie生成和Cookie验证。 Cookie生成过程中,服务器将客户端的...

    SYN flood攻击的原理及其防御

    ### SYN Flood攻击的原理及其防御 #### 一、SYN Flood攻击概述 拒绝服务(Denial of Service,简称DoS)攻击是一种常见的网络攻击手段,其目的是通过各种方法占用目标系统的资源,使得合法用户无法正常访问服务。...

    SYN flood攻击的原理及其防御.rar

    **SYN Flood攻击原理** SYN Flood攻击是网络层拒绝服务(DoS,Denial of Service)攻击的一...总之,理解SYN Flood攻击的原理对于防御这类攻击至关重要。结合多种防御策略,可以有效地提高网络服务的稳定性和安全性。

    syn flood测试工具

    **TCP/IP基础知识** TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网上最广泛使用的...同时,也要关注网络防御技术的发展,如SYN Cookie、连接复用等技术,它们是抵抗SYN Flood攻击的有效手段。

    SYN Flood攻击源程序

    Microsoft Visual C++ 6.0环境下的syn flood源程序

    SYN flood C源代码

    SYN flood是属于DOS攻击的一种典型方式,其发生方式就出现在TCP连接的三次握手中,假设一个用户向服务器发送了SYN...服务器失去响应,并处于崩溃状态,这种情况我们称之为:服务器端受到了SYN Flood攻击(SYN洪泛)。

    TCP协议的SYN Flood攻击原理详细讲解

    SYN Flood攻击的防御策略通常包括: 1. **SYN Cookie**:服务器使用一种技术,将SYN请求的部分信息加密,并作为SYN+ACK响应的一部分返回,这样即使攻击者伪造SYN请求,也无法正确回应服务器的SYN+ACK,从而避免资源...

    Linux平台下防御SYN Flood攻击策略的研究.pdf

    【标题】: "Linux平台下防御SYN Flood攻击策略的研究" 【描述】: 本文主要探讨了在Linux操作系统环境下如何有效防御SYN Flood攻击,并提出了改进算法和构建新型防御模块。 【标签】: Linux操作系统、系统开发、...

    SYN flood攻击

    在提供的压缩包中,`SYN.cpp`可能是实现SYN Flood攻击检测或防御的C++源代码文件,它可能会包含使用WinPcap库来捕获和分析网络封包的代码。`packet.h`可能是包含封包处理相关函数和结构体定义的头文件,提供了与封包...

    synflood.zip

    SYN Cookie是一种防御SYN Flood攻击的方法,它在服务器接收到SYN包但无法完成完整的三次握手时,会发送一个含有特殊信息的SYN+ACK包,这些信息可以用来在后续的连接请求中验证客户端的身份,而无需等待完整的三次...

    面向Web服务的SYN flood攻击防护算法.pdf

    描述中提到的"SYN重传算法"是防御SYN Flood攻击的一种常见方法。在TCP三次握手过程中,如果服务器收到SYN请求但未收到确认的SYN+ACK回应,通常会重新发送SYN,这就是SYN重传。然而,这种机制在面对SYN Flood攻击时...

    SYN Flood攻击防范技术白皮书.docx

    SYN Flood 攻击防范技术白皮书 SYN Flood 攻击是一种常见的网络攻击方式,通过向目标服务器发送大量的 SYN 报文,以消耗服务器的系统资源,降低服务器的性能,甚至导致服务器崩溃。为了防范 SYN Flood 攻击,需要...

    synflood 攻击 C语言文件 源码 原始套接字

    synflood源码,C语言实现原始套接字可以直接编译,执行./synflood ip

    原始套接字 synflood攻击

    syn flood c的简易实现,编译即可

    syn flood.zip

    4. **部署专门的DoS防御设备和服务**: 这些设备和服务能自动检测并缓解SYN Flood攻击。 综上所述,SYN Flood攻击是通过滥用TCP连接建立过程来实施的,而在Windows下编写攻击程序需理解TCP协议、Winsock API以及源...

    synflood 攻击与防御

    硕士论文 synflood攻击与防御 互联网常见DDos攻击

    H3C华三 SecPath防火墙SYN Flood攻击防范的典型组网

    H3C华三 SecPath防火墙SYN Flood攻击防范的典型组网

    SYNFlood.zip_ Synflood_SYNflood_YSNFlood_attack_synflood攻击MFC

    SYNFLOOD 攻击源代码 C++ 实现拒绝服务攻击 可以不断发送SYN包

    Linux下synflood源码

    在这里,我们将详细探讨Linux环境下synflood攻击的原理,源码的实现细节以及相关的防御策略。 一、TCP三次握手与synflood攻击 在TCP/IP协议栈中,连接建立的过程被称为三次握手。它包括以下步骤: 1. 客户端发送SYN...

Global site tag (gtag.js) - Google Analytics