SYN泛洪一直是互联网上最常见也是最经典的DDoS攻击方式。这种攻击通过向服务器发送大量tcp请求连接报文(源IP一般是离散的),服务器为每一条连接分配资源最终导致内存耗尽而无法为后续的合法请求建立连接和服务。

攻击原理:

为了更好地理解SYN Flood攻击我们从老生常谈的TCP三次握手(three way handshake)谈起。熟悉的同学可以跳过^_^,笔者以如下的一次HTTP请求和回复(共11个报文)为例为大家说明。

细心的同学可能会发现报文中的seq是0,实际上握手时的初始序号是随机的。我们在wireshark上看到其序号为零是因为wireshark为了方便我们查看分析而做了优化,大家可以在:编辑>首选项>Protocols>TCP>Relative sequence number中关闭这个选项。

三次握手连接过程:

1.客户端向服务器发送一个syn消息请求建立连接,初始序号seq为1675805722

2.服务器对请求做出响应,首先创建传输控制块TCB(Transmission Control Block)记录这个未完成的连接,然后启动超时定时器(负责syn-ack报文的超时重传)并向客户端发送SYN-ACK报文,如下报文seq=3078681102,ack=1675805722+1

3.客户端确认服务器的SYN的ack正确后回复ACK报文(否则回复RST),seq=1675805723,ack=307861103。此时客户端进入ESTABLISHED(已建立连接状态),当服务器收到客户端的确认后,也进入ESTABLISHED状态。

协议漏洞及攻击原理:

我们回过头来从安全的角度看三次握手,会发现这个流程是有缺陷的:在第二次握手中,当服务器发送了syn+ack报文后,若该连接的定时器超过超时重传时间(出现超时的原因可能是syn+ack报文丢失、客户ack报文丢失、RTT时间过长、甚至可能客户是在进行synflood攻击),服务器就会对报文进行重传,当重传次数超过阈值服务器认为TCP连接超时,而后才会销毁该请求套接口释放TCB。如果攻击者用快于服务器TCP连接超时的速度,连续对目标服务器开放的端口发送SYN报文,服务器的所有资源都将被消耗,以至于不能再接受其他客户的正常连接请求。

攻击检测及防御手段:

目前对于SYN Flood攻击一般都通过实时监测tcp的新建连接速率来判断。显然地,当恶意客户端向目标发起攻击时,对目标服务器的请求连接报文会在短时间内大量增加,安全设备发现去往服务器的请求连接速率超过指定的阈值后即可开启防御。

防御的前提当然是要区分出那些请求是合法的连接哪些是SYN泛洪,有一种机制叫SYN cookies,各大厂商的防御手段多采用该机制实现,但具体实现起来各公司还是略有区别,我们现在来看几种典型的实现方法。

方法一:①当安全设备获取到发往服务器的SYN报文后,设备模拟服务端会给此源IP回复ack=Cookie的SYN/ACK报文(Cookie是通过五元组加密计算出来的值,正常情况下的ack=seq+1)。

②正常客户端会回复RST报文,而攻击流则不会回复。

③安全设备收到RST报文并校验后便可把回复正确报文的客户端IP加入白名单(校验通过的标准是RST报文中携带的seq等于用该报文的五元组等信息算出的Cookie)。

④后续安全设备放行属于该IP的正常流量。

方法二:①当安全设备获取到发往服务器的SYN报文后,设备模拟服务器给源IP回复seq=Cookie的SYN/ACK报文。

②正常客户端会回复ACK报文,确认序列号为Cookie+1。

③安全设备收到ack报文并校验无误后将该客户端的IP加入白名单,并向客户端发送RST报文断开连接。

④后续安全设备放行属于该IP的正常流量。

方法三:①当安全设备获取到发往服务器的SYN报文后,设备模拟服务器给源IP回复seq=Cookie的SYN/ACK报文。

②正常客户端会回复ACK报文,确认序列号为Cookie+1。

③安全设备收到ack报文并校验无误后,设备与服务发送连接请求,通过三次握手后与服务器建立起连接。

④客户端与防火墙之间建立了连接,防火墙与服务器之间也建立了连接,客户端与服务器间关于此次连接的后续数据报文都将通过安全设备进行代理转发。

可见以上几种方式都是通过源认证的方式,即判断请求是否是真实源发出的方式来防御SYN Flood攻击。

SYN Flood攻击原理及防御技术相关推荐

  1. 详解SYN Flood攻击原理与防范

    详解SYN Flood攻击原理与防范 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,它是利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被 ...

  2. TCP/IP:TCP SYN Flood攻击原理与实现

    目录 三次握手过程 SYN Flood攻击原理 SYN Flood攻击实验 1. 初始化 IP 头部 2. 初始化 TCP 头部 3. 初始化 TCP 伪首部 4. 构建 SYN 包 5. 创建原始套 ...

  3. 服务器SYN洪水攻击原理和防御办法-SynAttackProtect保护机制

    服务器SYN洪水攻击原理和防御办法-SynAttackProtect保护机制 一.设置SynAttackProtect键值步骤 二.防止SYN洪水攻击修改项说明 三.特别注意 SYN洪水攻击是利用客户 ...

  4. syn flood攻击原理及防范

    sync攻击原理 DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带宽攻击和 ...

  5. php攻击方式及防御方法,Syn Flood 攻击 及其一般防御方法

    防火墙通知受到Syn Flood攻击,并解释说: A SYN Flood is an attempt to consume memory and resources. A Normal TCP/IP ...

  6. SYN flood***的原理及其防御 (一)

    摘要 介绍了SYN Flood***的基本原理,详细地描述了目前几种比较有效的两种防御措施:SYN-cookie技术和地址状态监控技术. 关键词 SYN Flood*** 拒绝服务*** SYN co ...

  7. SYN Flood攻击防范技术白皮书

    SYN Flood攻击防范技术白皮书 关键词:SYN Flood ,SYN Cookie,Safe Reset 摘    要:本文主要介绍了H3C防火墙为保护服务器免受SYN Flood攻击采用的防范 ...

  8. pythonddos防御_浅谈拒绝服务攻击的原理与防御(7):用Python和C实现syn flood攻击...

    01 前言 以前做DDOS的实验都是用python来编写工具的,开始不会编写结构不会算校验和的时候就用scapy写,后来学会了报文结构开始自己构造各种报文,但是用python写成之后虽然是能实现基本功 ...

  9. SYN Flood攻击及防御方法

    SYN Flood攻击及防御方法   一.  为什么Syn Flood会造成危害   这要从计算机网络的TCP/IP协议栈的实现说起.当开放了一个TCP端口后,该端口就处于Listening状态,不停 ...

最新文章

  1. JQuery制作的toolTip,针对图片预览效果
  2. 电厂MIS,SIS简介
  3. 我终于拿到CMU的offer了!
  4. 《从0到1学习Flink》—— Apache Flink 介绍
  5. 前端学习(2698):重读vue电商网站19之处理图片预览操作
  6. excel生成mysql语句_通过SQL语句直接实现Excel与数据库的导入导出
  7. Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:
  8. oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...
  9. 这个被程序员捧上神坛的IDEA插件出来后,我扔掉了Postman了
  10. java mail pom_集成JavaMail
  11. 【Pytorch】ResNet-18实现Cifar-10图像分类
  12. 小程序源码:uni-app云开发的网盘助手
  13. 分手快乐---(哪个更好呢)
  14. 基于ijkplayer实现低延迟直播播放器
  15. 今15年创业,享受改变的过程
  16. Linux 命令 —— tree
  17. 视频去水印免费软件有哪些?快来收藏这三款实用工具
  18. 【春秋云境】 CVE-2022-24663复现
  19. matlab dir 自然排序,自然顺序文件名排序【含Matlab源码】
  20. dw网页设计期末设计一个网页_Dreamweaver网页设计期末试卷

热门文章

  1. 【RISC-V】 li指令
  2. Excel定位功能删除空值所在行
  3. Android 虚拟运营商apn与spn配置
  4. linux调度原理,有谁真的了解Linux / BSD中HFSC调度的工作原理?
  5. centos 如何测udp端口是否开放_CentOS如何测试端口是否打开
  6. 香港公司银行开户需要注意。
  7. unicode,UTF-8,UTF-16,UTF-32是什么,各有什么关系
  8. [7]深入浅出工作开源框架Camunda: camunda-webapp 用户登录功能代码分析
  9. 血管内冲击波:冠状动脉钙化处理的技术革新
  10. Java项目:(小程序)前台+后台相结合水果商城系统(spring+spring mvc+mybatis+layui+微信小程)