码迷,mamicode.com
首页 > 其他好文 > 详细

SYN泛洪攻击与SYN cookie

时间:2021-02-05 10:37:34      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ret   mamicode   攻击   工作   ash   info   三次   建立连接   端口号   

TCP三次握手

TCP是可靠的连接,在进行TCP数据传输前,客户端和服务器之间会进行三次握手操作。主要涉及的地方是序列号(seq)、确认号(ack)、SYN标志位、ACK标志位,这都是TCP的报文格式中的部分。序列号是当前发送到报文的序列号,确认号是希望下一次收到报文的序列号。SYN标志位表示请求建立连接,ACK标志位表示确认受到报文。基础概念介绍完了,梳理一下TCP的工作流程。
技术图片

  1. 客户端向服务器发送TCP连接请求,其中SYN位为1,序列号为j。
  2. 服务器回复客户端报文,其中SYN位和ACK为都为1,序列号为k,确认号为j+1。发送后服务器开启了一个半连接,等待客户端回复报文。
  3. 客户端回复报文,其中ACK位为1,序列号为j+1,确认号为k+1。

SYN泛洪攻击

通过上一部分的介绍,很清楚的知道,服务器端是被动打开连接的,而传统tcp连接建立在受到客户端的连接请求后开启一个半连接,等待客户端的做法有着很大的问题。在TCP三次握手的时候,服务器分配并初始化变量和缓冲区以响应收到的SYN,然后服务器发送一个SYNACK作为响应,并等待一个来自客户端的ACK报文段。如果客户端没有发送一个ACK来完成三次握手的第三步,最终(通常一分钟或更久以后)服务器会终止这个半开的连接并收回分配的资源。这个时间间隔给了攻击者可乘之机。

其为一种典型的被称为SYN泛洪攻击的拒绝服务攻击(DoS)提供了舞台。在这个攻击中,攻击者发送大量的TCP SYN报文段,不完成第三次握手的步骤。随着SYN报文段的大量涌入,服务器的连接资源在分配给(但从未使用)半开连接时会耗尽。然后合法的用户就被拒绝服务了。

SYN cookie

SYN cookie是防御SYN泛洪攻击的一种手段,现已被大多数的操纵系统集成。
技术图片
其防御的思路采用了hash值不可逆的原理,在接收到客户端发送的SYN后,服务器不会随机给出一个序列号返回,而是通过计算源ip、目标IP、SYN端口号、以及只有该服务器知道的secret number,四个值一起通过计算得到一个hash值对应的数字cookie,用此cookie作为序列号返回SYNACK,同时服务器端并不会记录客户端的连接信息。当有客户端ACK返回时,ACK的值需要进行验证,若服务器计算cookie值后加1得到的值等于确认号的值,则连接建立成功,否则舍弃。有了这样一层手段,SYN泛洪攻击者发送过来的大量SYN并不会给服务器造成大量的半连接,从而保护了服务器的安全。

SYN泛洪攻击与SYN cookie

标签:ret   mamicode   攻击   工作   ash   info   三次   建立连接   端口号   

原文地址:https://www.cnblogs.com/ningningjia/p/14373022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!