首页 > 编程语言 >SYN Flood攻击原理,SYN Cookie算法

SYN Flood攻击原理,SYN Cookie算法

时间:2023-06-17 12:03:18浏览次数:45  
标签:cookie 攻击 SYN TCP Flood Cookie 服务器

SYN Flood是一种非常危险而常见的Dos攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,SYN Cookie就是其中最著名的一种。

SYN Flood攻击原理

SYN Flood攻击是一种典型的拒绝服务(Denial of Service)攻击。所谓的拒绝服务攻击就是通过进行攻击,使受害主机或网络不能提供良好的服务,从而间接达到攻击的目的。SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。

TCP服务器收到TCP SYN request包时,在发送TCP SYN + ACK包回客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接。一般把收到SYN包而还未收到ACK包时的连接状态称为半打开连接(Half-open Connection)。在最常见的SYN Flood攻击中,攻击者在短时间内发送大量的TCP SYN包给受害者。受害者(服务器)为每个TCP SYN包分配一个特定的数据区,只要这些SYN包具有不同的源地址(攻击者很容易伪造)。这将给TCP服务器造成很大的系统负担,最终导致系统不能正常工作。

SYN Flood攻击原理,SYN Cookie算法_服务器

SYN Cookie

SYN Cookie是对TCP服务器端的三次握手做一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器接收到TCP SYN包并返回TCP SYN + ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。这个cookie作为将要返回的SYN ACK包的初始序列号。当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号(初始序列号 + 1)进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。实现的关键在于cookie的计算,cookie的计算应该包含本次连接的状态信息,使攻击者不能伪造。


SYN Cookie算法

服务器收到一个SYN包,计算一个消息摘要mac。

mac = MAC(A, k);


MAC是密码学中的一个消息认证码函数,也就是满足某种安全性质的带密钥的hash函数,它能够提供cookie计算中需要的安全性。

在Linux实现中,MAC函数为SHA1。

A = SOURCE_IP || SOURCE_PORT || DST_IP || DST_PORT || t || MSSIND

k为服务器独有的密钥,实际上是一组随机数。

t为系统启动时间,每60秒加1。

MSSIND为MSS对应的索引。

感谢您的阅读,若是想要了解更多服务器技术干货,加个关注再走吧~

标签:cookie,攻击,SYN,TCP,Flood,Cookie,服务器
From: https://blog.51cto.com/u_16129597/6504662

相关文章

  • rsync推送案例练习与总结
    案例实践:客户端: 1.客户端提前准备存放的备份的目录,目录规则如下:/backup/主机名_IP_时间 2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/主机名_IP_时间 3.客户端最后将备份的数据进行推送至备份服务器 4.客户端每天凌晨1点定时执行脚本 ......
  • 关于Cookie Session 和Token,以及应用场景
    关于Cookie和Session(面试经常问)共同之处:cookie和session都是用来跟踪浏览器用户身份的会话方式。关于会话在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话。Web应用中的会话过程类似于生活中的打电话过程,它指的是一个客户端(浏览器)与Web服务器之间连......
  • cookie
    1、介绍http本身是无状态的,但实际业务中往往需要http请求表明请求者的身份和状态等信息,cookie是该问题的一种解决方案。(另外的包括session、token、浏览器localstorage)cookie本质是一个对象,具有name、value等属性。一般由服务端创建,然后基于响应头部的set-cookie字段发送给......
  • rabbit MQ —— ha-sync-mode. message 同步/ 丢失 in new pods
    经典队列镜像—兔子MQ(rabbitmq.com) why?message信息同步=》queue一段时间不可用(可用性降低) ConfiguringSynchronisationLet'sstartwiththemostimportantaspectofqueuesynchronisation: whileaqueueisbeingsynchronised,allotherqueueoperati......
  • RTSP/Onvif安防视频平台EasyNVR设备在线但通道无法播放的原因排查
    EasyNVR是基于RTSP/Onvif协议的视频平台,可支持将接入的视频流进行全平台、全终端的分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求,我们也提供了丰富的API接口供用户调用。有需要的用户可参照官方接口文档进行操作。有用......
  • 页面会话技术介绍,什么是Cookie和Session
    页面会话技术Cookie什么是cookie:服务端保存在浏览器端的数据片段。以key/value的形式进行保存。每次请求的时候,请求头会自动包含本网站此目录下的cookie数据。网站经常使用这个技术来识别用户是否登陆等功能。用途:保存登录状态,购物车等缺点:做为请求或响应报文发送,无形中......
  • c++多线程 std::async std::future
    c++标准库中对线程操作有完善的封装,其中最常用到的如std::thread,std::async。EffectiveModernCpp中指出,应尽量使用std::async即基于任务的编程而非基于线程的编程。std::thread在前面的文章有提到过,此处仅对std::async作以记录。正如前面所说,std::async是基于任务的策略,本人理......
  • 解决SyntaxError: Generator expression must be parenthesized
    在创建django的app时出现问题: 是因为python3.8与django1.11不兼容。解决办法,打开"F:\python\lib\site-packages\django\contrib\admin\widgets.py"这个文件,去掉'%s=%s'%(k,v)fork,vinparams.items(), 这一句末尾的逗号即可。 ......
  • mormot2 THttpAsyncServer
    mormot2THttpAsyncServer支持delphi和lazarus。///<author>cxg2023-2-12</author>///mormot2异步httpserver支持delphi+lazarusunitsock.mormot2.httpserver;{$IFDEFfpc}{$MODEDELPHI}{$H+}{$ENDIF}interfaceusesclasses,keyValue.serialize,......
  • 异步编程 asynico、async、await最佳实践
    使用异步函数:Asynico是为了处理异步操作而设计的,因此使用异步函数而不是同步函数是最佳实践之一。使用async关键字将函数定义为异步函数,并使用await关键字来等待异步操作的结果。示例:importasyncioasyncdefmy_async_function():#异步操作awaitasyncio.sleep(1)......