TCP--SYN洪水攻击

在查看TCP标识位SYN时,顺便关注了一下SYN Flood,从网上查阅一些资料加以整理,SYN洪水攻击利用TCP三次握手。

1.SYN洪水介绍

当一个系统(客户端C)尝试和一个提供了服务的系统(服务器S)建立TCP连接,客户端C和服务端S会交换一系列报文。

正常的3次握手连接:首先是C发送一个SYN报文给服务端S,然后这个服务端发送一个SYN-ACK包以回应C,接着,C就返回一个ACK包来实现一次完整的TCP连接。就这样,C到服务端的连接就建立了,这时C和服务端就可以互相交换数据了。

SYN洪水:在S返回一个确认的SYN-ACK包的时候,S可能由于各种原因不会接到C回应的ACK包。这个也就是所谓的半开放连接,S需要 耗费一定的数量的系统内存来等待这个未决的连接,虽然这个数量是受限,但是恶意者可以通过创建很多的半开放式连接来发动SYN洪水攻击 。
攻击者可以通过IP欺骗发送SYN包给受害者系统,这个看起来是合法的,但事实上所谓的C根本不会进行ACK回应服务端S的SYN-ACK报文,这意味着受害者将永远不会接到ACK报文。 而此时,半开放连接将最终耗用受害者所有的系统资源(即使等待ACK包有超时限制),受害者将不能再接收任何其他的请求。

2.SYN cookie
SYN cookie用一个cookie来响应TCP SYN请求的TCP实现,在正常的TCP实现中,当S接收到一个SYN数据包,他返回 一个SYN-ACK包来应答,然后进入TCP-SYN-RECV(半开放连接)状态来等待最后返回的ACK包。S用一个数据空间来描述所有未决的连接, 然而这个数据空间的大小是有限的,所以攻击者将塞满这个空间。 在TCP SYN COOKIE的执行过程中,当S接收到一个SYN包的时候,他返回一个SYN-ACK包,这个数据包的ACK序列号是经过加密的,也就是说,它由源地址,端口源次序,目标地址,目标端口和一个加密种子计算得出。然后S释放所有的状态。如果一个ACK包从C返回, S将重新计算它来判断它是不是上个SYN-ACK的返回包。如果这样,S就可以直接进入TCP连接状态并打开连接。这样,S就可以避免守侯半开放连接。(检验加密数据可能会带来一定的CPU运算)
以上只是SYN COOKIE的基本思路,它在应用过程中仍然有许多技巧,本人也没有具体的实战经验。

3.SYN COOKIE 防火墙 
SYN COOKIE 防火墙是SYN cookie的一个扩展,SYN cookie是建立在TCP堆栈上的,他为linux操作系统提供保护。SYN cookie防火墙是linux的一大特色,可以使用一个防火墙来保护你的网络以避免遭受SYN洪水攻击。

SYN cookie防火墙的原理:

client                 firewall server 
------ ------------------------------
1. SYN----------- - - - - - - - - - -> 
2. <------------SYN-ACK(cookie) 
3. ACK----------- - - - - - - - - - -> 
4. - - - - - - -SYN---------------> 
5. <- - - - - - - - - ------------SYN-ACK 
6. - - - - - - -ACK--------------->

7. -----------> relay the -------> 
<----------- connection <-------

####################C与防火墙建立连接开始####################
1:SYN包从C发送到S(计划建立连接)
2:防火墙在这里扮演S的角色来回应一个带SYN cookie的SYN-ACK包给C 
3:如果C发送ACK包,接着防火墙和C的连接就建立了

####################C与防火墙建立连接结束###################

####################防火墙与S建立连接开始####################
4:防火墙这个时候扮演C的角色发送一个SYN给S 
5:S返回一个SYN给C 
6:防火墙扮演C发送一个ACK确认包给S,这个时候防火墙和S的连接也就建立了 

###################防火墙与S建立连接结束####################
7:防火墙转发C和S间的数据 
如果系统遭受SYN Flood,那么第三步就不会有,S不会收到相应在第一步的SYN包,所以击退了这次SYN洪水攻击。

时间: 2024-10-16 10:42:22

TCP--SYN洪水攻击的相关文章

网络安全系列之1 SYN洪水攻击

近期又在准备参加网络安全比赛,将相关的内容整理一下,也请多提宝贵意见. 在之前的博文中曾提到"死亡之ping",如"ping IP地址 –l 65500 –t",通过该命令可以连续地向某一台主机发送最大数据包,这样就有可能导致对方的系统资源耗尽或是网络堵塞.由于目前的电脑硬件配置以及网络带宽都非常高,因而"死亡之ping"已很难发挥作用,但这类攻击的方式有一个统一的名字--拒绝服务攻击"DoS(Denial of Service)&qu

1.tcp协议 三次握手建链接 四次挥手断开链接 tcp协议的状态 syn洪水攻击与半连接池 互联网协议详解 3. socket介绍 4. 基于socket来编写C/S架构的软件

网络=底层的物理连接介质+互联网协议(就是计算机界的英语) OSI七层 应用层(应用层\表示层\会话层):http,ftp 传输层:tcp/udp 网络层:ip 数据链路层:ethernet 物理层:发送电信号 1. 互联网协议,可看作是一个安装在计算机上的包 2. 交换机:有mac地址学习功能 3. ARP(地址解析协议),可将IP地址转成mac地址,mac地址转成IP地址 4. IP+端口可锁定一架计算机上的某个应用程序 5. IP 和子网掩码->局域网地址(子网地址) 6.  TCD又称好

tcp三次握手和syn 洪水攻击

1. 连接后,所有的 ack 为1才有效(连接后,ack 也一般都是1) 2. 建立连接3次握手, 如何确认对方收到了你发的包, seq 是自己发出去的,自己知道seq的值.所以怎么确认对方收到了自己的包呢? seq+ 1 == ACK ,相等就说明对方收到了.三次握手,最主要的是序列号的确认机制这才是tcp3次握手的核心.序列号取值范围(2的32次方减去1,循环重新开始). 序列号的作用: 对数据包进行重组!使用序列号来重组数据 arp -n 第3步中,Client 断开连接 4次挥手.

Linux系统-抵御SYN洪水攻击

本文源链接地址:https:www.93bok.com 说明: 本文中所提到的这些内核配置参数应该在每台服务器上线之前配置好的,防止意外. SYN攻击: SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络SYN包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问. 原理图: 正常情况下TCP三次握手: SYN攻击情况: SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送

IP报文解析及基于IP 数据包的洪水攻击

版本(4bit) 报头长度(4bit) 优先级和服务类型(8bit) 总长度(16bit) 标识(16bit) 标志(3bit) 分段偏移(13bit) 存活期(8bit) 协议(8bit) 报头校验和(16bit) 源IP地址(32bit) 目的IP地址(32bit) 选项(0或32bit,若有的话) 数据(可变) 版本 IP版本号.报头长度 32位字的报头长度(HLEN).优先级和服务类型 服务类型描述数据报将如何被处理.前3位表示优先级位.总长度 包括报头和数据的数据包长度.标识 唯一的I

浅谈iptables防SYN Flood攻击和CC攻击

------------------------本人为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------------------------- 何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式(TCP协议

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的FIN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries).这样的话,对于服务器的内存,带宽都有很大的消耗.攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难. 攻与防 攻击者角度 从攻击者的角度来看,有两个地方可以

洪水攻击怎么办?

洪水攻击是网络攻击里比较常见的一种,一般体现就是机器慢(CPU居高不下),ssh等网络服务登陆缓慢甚至会出现登陆不上的情况,甚至在# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 的命令里,发现SYN_RECV 的数量要远远大于ESTABLISHED的数量(几乎是5~8倍以上),然后查看系统的日志或者使用#dmesg的时候,就会出现如下的语句: possible SYN flooding on port

洪水攻击

TCP洪水攻击(SYN Flood)的诊断和处理 2013-09-04 11:25:27            收藏   我要投稿 攻击原理: SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,常用假冒的IP或IP号段发来海量的请求连接的第一个握手包(SYN包),被攻击服务器回应第二个握手包(SYN+ACK包),因为对方是假冒IP,对方永远收不到包且不会回应第三个握手包.导致被攻击服务器保持