TCP半连接与SYN攻击

TCP握手协议相关概念

TCP协议建立连接的时候需要双方相互确认信息,来防止连接被伪造和精确控制整个数据传输过程数据完整有效。TCP建立连接的“三次握手”和关闭连接的“四次挥手”过程详见文章TCP连接的“三次握手”与“四次挥手”和文章TCP连接状态详解

握手协议中的重要概念:

  • 半连接
    在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.
  • 半连接队列
    在三次握手协议中,服务器维护一个半连接队列,存放半连接。该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的ACK确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
  • Backlog参数
    表示半连接队列的最大容纳数目。
  • SYN-ACK 重传次数
    服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 
  • 半连接存活时间
    是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

SYN攻击

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。
SYN攻击利用TCP协议三次握手的原理,大量发送伪造源IP的SYN包也就是伪造第一次握手数据包,服务器每接收到一个SYN包就会为这个连接信息分配核心内存并放入半连接队列,如果短时间内接收到的SYN太多,半连接队列就会溢出,操作系统会把这个连接信息丢弃造成不能连接,当攻击的SYN包超过半连接队列的最大值时,正常的客户发送SYN数据包请求连接就会被服务器丢弃。目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。每种操作系统半连接队列大小不一样所以抵御SYN攻击的能力也不一样。
Syn攻击是一个典型的DOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击
  
  netstat -n -p TCP | grep SYN_RECV

更多SYN攻击的基本原理、工具及检测方法,并全面探讨SYN攻击防范技术参见文章TCP漏洞:半连接

参考

  1. http://blog.csdn.net/cpk154505/article/details/8768241

目录

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP SYN Flood攻击是一种常见的拒绝服务(DoS)攻击方式,攻击者通过发送大量的TCP SYN请求来消耗目标服务器的资源,导致正常用户无法访问该服务器。为了防御TCP SYN Flood攻击,可以采取以下几种方法: 1. SYN Cookie技术:当服务器收到一个TCP SYN请求时,不立即分配资源,而是根据请求的源IP地址和端口号生成一个加密的cookie,并将其发送给客户端。客户端在后续的请求中需要携带这个cookie才能建立连接。这样可以有效防止伪造的TCP SYN请求。 2. SYN Proxy:使用SYN Proxy可以将服务器的负载分散到多个代理服务器上,代理服务器负责接收和验证TCP SYN请求,并将合法的请求转发给目标服务器。这样可以减轻目标服务器的负载压力。 3. 防火墙设置:通过在防火墙上设置规则,限制对服务器的TCP SYN请求的数量和频率,可以有效减少攻击的影响。可以设置防火墙规则来限制每个IP地址的连接数或者限制每秒钟接收的TCP SYN请求的数量。 4. 流量清洗设备:流量清洗设备可以对进入服务器的流量进行实时监测和分析,识别并过滤掉恶意的TCP SYN请求,保护服务器免受攻击。 5. 负载均衡器:使用负载均衡器可以将流量分发到多个服务器上,从而分散攻击的影响。当一个服务器受到攻击时,负载均衡器可以将流量转发到其他正常的服务器上,确保服务的可用性。 6. 更新操作系统和应用程序:及时更新操作系统和应用程序的补丁可以修复已知的漏洞,提高服务器的安全性,减少受到攻击的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值