SYN攻击解析

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。所以TCP协议采用三次握手建立一个连接。2880990294

第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认;2880990294

第二次握手:服务器收到syn包,必须确认客户的SYN 同时自己也发送一个SYN包 即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

SYN攻击利用TCP协议三次握手的原理,大量发送伪造源IP的SYN包也就是伪造第一次握手数据包,服务器每接收到一个SYN包就会为这个连接信息分配核心内存并放入半连接队列,如果短时间内接收到的SYN太多,半连接队列就会溢出,操作系统会把这个连接信息丢弃造成不能连接,当攻击的SYN包超过半连接队列的最大值时,正常的客户发送SYN数据包请求连接就会被服务器丢弃, 每种操作系统半连接队列大小不一样所以抵御SYN攻击的能力也不一样。那么能不能把半连接队列增加到足够大来保证不会溢出呢,答案是不能,每种操作系统都有方法来调整TCP模块的半连接队列最大数,例如Win2000操作系统在注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里 TcpMaxHalfOpen,TcpMaxHalfOpenRetried ,Linux操作系统用变量tcp_max_syn_backlog来定义半连接队列的最大数。但是每建立一个半连接资源就会耗费系统的核心内存,操作系统的核心内存是专门提供给系统内核使用的内存不能进行虚拟内存转换是非常紧缺的资源windows2000 系统当物理内存是4g的时候 核心内存只有不到300M,系统所有核心模块都要使用核心内存所以能给半连接队列用的核心内存非常少。Windows 2003 默认安装情况下,WEB SERVER的80端口每秒钟接收5000个SYN数据包一分钟后网站就打不开了。标准SYN数据包64字节 5000个等于 5000*64 *8(换算成bit)/1024=2500K也就是 2.5M带宽 ,如此小的带宽就可以让服务器的端口瘫痪,由于攻击包的源IP是伪造的很难追查到攻击源,,所以这种攻击非常多。

时间: 2024-10-04 21:21:16

SYN攻击解析的相关文章

TCP三次握手原理与SYN攻击

本文内容包括以下几点 1.TCP三次握手四次挥手解析 2.迭代型服务器程序编写,并给出客户端,结合这一模式详细介绍Berkeley套接字的使用 3.介绍SYN攻击的原理 TCP连接建立,传输数据,连接释放上层图解. 结合此图来说明SYN攻击.SYN攻击发生在TCP连接的第二个阶段,服务器确认客户端同步信息(SYN),用32位确认号(ACK)确认SYN信息. 可以提出这样一个假设,客户端(client)给服务器发syn之后就不存在了,那么第二次握手失败,服务器会根据预先设置的超时时间继续做第二次握

awl多进程SYN攻击

一.TCP连接状态图 说明如下: 服务器端:LISTEN:侦听来自远方的TCP端口的连接请求 客户端:SYN-SENT:发送连接请求后等待匹配的连接请求 服务器端:SYN-RECEIVED:收到和发送一个连接请求后等待对方对连接请求的确认 客户端/服务器端:ESTABLISHED:代表一个打开的连接 客户端:FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 服务器端:CLOSE-WAIT:等待从本地用户发来的连接中断请求 客户端:FIN-WAIT-2:从远程TCP等待

SYN攻击

一.TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态: 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服

SYN 攻击 常识 预防

SYN攻击 Windows系统开放tcp 139端口 UNIX系统开放 tcp7 , tcp21,tcp23等端口 SYN攻击特点 系统自带的 netstat工具 检测 SYN 攻击 UNIX系统 #netstat –n –p TCP 命令行 如果很多连接处于SYN_RECV 状态特别是源IP地址是随机的 Windows系统 Netstat–n –p TCP  CMD命令行 如果很多连接处于 SYN_RECEIVERD 状态特别是源IP地址是随机的 SYN 防范技术 注册表设置: 开始->运行-

看我linux如何防SYN攻击

[[email protected] ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 172 ESTABLISHED 59 CONNECTED 589 SYN_RECV 15 STREAM SYN居然这么高,继续追查是那些ip发出的SYN: [[email protected] ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort

Linux安全之SYN攻击原理及处理

TCP自从1974年被发明出来之后,历经30多年发展,目前成为最重要的互联网基础协议,但TCP协议中也存在一些缺陷. SYN攻击就是利用TCP协议的缺陷,来导致系统服务停止正常的响应. SYN攻击原理 TCP在传递数据前需要经过三次握手,SYN攻击的原理就是向服务器发送SYN数据包,并伪造源IP地址. 服务器在收到SYN数据包时,会将连接加入backlog队列,并向源IP发送SYN-ACK数据包,并等待ACK数据包,以完成三次握手建立连接. 由于源IP地址是伪造的不存在主机IP,所以服务器无法收

CentOS防SYN攻击

netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 172 ESTABLISHED 59 CONNECTED 589 SYN_RECV 15 STREAM SYN居然这么高,继续追查是那些ip发出的SYN: [[email protected] ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr |

SYN攻击处理

针对SYN攻击的几个环节,提出相应的处理方法: 方式1:减少SYN-ACK数据包的重发次数(默认是5次): sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3 方式2:使用SYN Cookie技术: sysctl -w net.ipv4.tcp_syncookies=1 方式3:增加backlog队列(默认是1024): sysctl -w net.ipv4.tcp_max_syn_backlo

SYN攻击防护措施

SYN攻击的应对措施 针对SYN攻击的几个环节,提出相应的处理方法: 方式1:减少SYN-ACK数据包的重发次数(默认是5次): sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3 方式2:使用SYN Cookie技术: sysctl -w net.ipv4.tcp_syncookies=1 方式3:增加backlog队列(默认是1024): sysctl -w net.ipv4.tcp_max