SYN洪泛攻击

本文详细介绍了TCP三次握手的过程,重点剖析了SYN洪泛攻击的原理,包括其如何利用TCP协议缺陷进行DoS攻击。此外,文中提到SYNcookie作为有效的防御手段,以及服务器如何通过散列函数验证合法连接。
摘要由CSDN通过智能技术生成

前言

最近在准备计网期中考试,分享一些计网有趣的知识吧~

正文

首先我们先了解TCP三次握手的过程,然后再讨论为什么会有SYN洪泛攻击,以及如何解决。

TCP三次握手

(1)⼀开始,客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口,处于 LISTEN 状态

(2)客户端会随机初始化序号( client_isn ),将此序号置于 TCP 报文段首部的序号字段中,同时把 SYN 标志位置为 1表示SYN报文段(不包含应用层数据)。该报文段会被封装在一个IP数据报中,并发送给服务器,表示向服务端发起连接,之后客户端处于 SYN-SENT状态

(3)服务端收到客户端的 SYN 报文后,为该TCP连接分配TCP缓存和变量。随后服务端也随机初始化⾃⼰的序号( server_isn ),将此序号填入TCP 报文段首部的序号字段中,其次把 TCP报文段首部的确认应答号字段填入 client_isn + 1 , 接着把 SYN和 ACK 标志位置为 1,表示SYNACK报文段 。最后把该报文发给客户端,表示允许连接。该报文也不包含应用层数据,之后服务端处于 SYN-RCVD 状态。

(4)客户端收到服务端报文后,客户也要给该连接分配缓存和变量。并向服务端回应最后⼀个应答报文,将该应答 TCP报文段 首部 ACK 标志位置为 1 ,SY标志位被置为0,其次确认应答号字段填入 server_isn + 1 ,最后把报文发送给服务端,这次报文可以携带客户到服务器的数据,之后客户端处于 ESTABLISHED 状态。服务器收到客户端的应答报文后,也进入 ESTABLISHED状态。

在这里插入图片描述
注意到每一次连接,客户端和服务器都要给该连接分配缓存和变量(变量指的是接收窗口,表示该接收方还有多少可用的缓存空间)。
在这里插入图片描述

SYN洪泛攻击

如上握手过程,我们知道服务器为了响应一个收到的SYN分配并初始化连接变量和缓存。然后服务器发送一个SYNACK进行响应,并等待来自客户的ACK报文段。如果某客户不发送ACK来完成该三次握手的第三步,服务器则处于半开连接状态

SYN洪泛攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。在这种攻击中,攻击者发送大量的TCP SYN报文段,而不完成第三次握手的步骤。随着这种SYN报文段纷至沓来,服务器不断为这些半开连接分配资源(但从未使用),导致服务器的连接资源被消耗殆尽

Dos攻击有如下三种,而SYN洪泛攻击就是连接洪泛攻击的一种。
在这里插入图片描述

现在有一种有效的防御系统,称为SYN cookie它们被部署在大多数主流操作系统中

  • 当服务器接收到一个SYN报文段时,它并不知道该报文段是来自一个合法的用
    户,还是一个SYN洪泛攻击的一部分。因此服务器不会为该报文段生成一个半
    开连接
    。相反,服务器生成一个初始TCP序列号,该序列号是SYN报文段的源 和目的IP地址与端口号以及仅有该服务器知道的秘密数的一个复杂函数(散列函数)。这种精心制作的初始序列号被称为“cookie”。服务器则发送具有这种
    特殊初始序列号的SYNACK分组。重要的是,服务器并不记忆该cookie或任何
    对应于SYN的其他状态信息

  • 如果客户是合法的,则它将返回一个ACK报文段。当服务器收到该ACK,需要
    验证该ACK是与前面发送的某些SYN相对应的
    。前面讲过对于一个合法的ACK,在确认字段中的值等于在SYNACK字段(此时为cookie值)中的值加1 。服务器则将使用该报文段中的源和目的地IP地址与端口号以及秘密数运行相同的散列函数。如果该函数的结果加1与在客户的SYNACK中的确认(cookie)值相同的话,服务器认为该ACK对应于较早的SYN报文段,因此它是合法的。服务器则生成一个具有套接字的全开的连接

  • 在另一方面,如果客户没有返回一个ACK报文段,则初始的SYN并没有对服务
    器产生危害,因为服务器没有为它分配任何资源。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焦妮敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值