网络安全之DDos攻击原理与防御

请添加图片描述

DDos简介

  • 对于DDos(分布式拒绝服务)攻击,人们往往谈虎色变。它被认为是安全领域中最难解决的问题之一,迄今为止也没有完美的解决方案。
  • DDos攻击是一种网络攻击方式,其目的是通过利用大量的互联网连接设备同时向目标网站或服务发送大量请求,使得目标服务器无法处理正常流量,进而导致服务拒绝、系统瘫痪或者严重影响正常用户的使用体验。
  • DDos攻击中,“分布式” 意味着攻击流量来自多个源头,这使得攻击更难以防御,因为攻击者可以控制成千上万的设备形成所谓的“僵尸网络”,对目标发起大规模冲击。"拒绝服务"则表示攻击的目标是让合法用户无法正常使用目标网站或服务。

DDos攻击案例

  • Dyn 遭受的 DDoS 攻击:2016 年 10 月,主要域名服务 (DNS) 提供商 Dyn 遭受每秒 1 TB 的流量洪水攻击,有证据表明,DDoS 攻击实际上可能达到了每秒 1.5 TB 的速度。流量海啸使 Dyn 的服务下线,对很多主要网站造成了破坏,导致包括 GitHub、HBO、Twitter、Reddit、PayPal、Netflix 和 Airbnb 在内的许多知名网站无法访问。
  • GitHub遭DDoS攻击:2018年2月,GitHub平台遭遇了史上最大规模的DDoS网络攻击。这次攻击以每秒1.3太字节(Tbps)的速率传输流量,每秒发送1.269亿的数据包。攻击者利用memcached数据库缓存系统的放大效应,将攻击放大了约50,000倍。幸运的是,由于GitHub正在使用DDoS防护服务,该服务器在接收攻击后的10分钟内自动发出警报,触发了DDoS防护的缓解过程,成功阻止了攻击,这次攻击仅持续了约20分钟。
  • 美国大面积断网事件:2016年10月22日凌晨,美国域名服务器管理机构Dynamic Network Service(Dyn)宣布,该公司在遭受了一次大规模的DDoS攻击后,导致很多网站在美国无法访问。这次攻击展示了DDoS攻击对于全球互联网基础设施的潜在破坏力。
  • 针对AWS的大规模攻击:2020年AWS经历了一次前所未有的大规模DDoS攻击。这次攻击达到了2.3Tbps的流量,是有史以来最猛烈的攻击之一。攻击持续了整整三天,主要目标是AWS的云服务,攻击者似乎企图使其瘫痪。幸运的是,由于AWS拥有强大的防御系统,攻击者的目标并未达成。据悉,此次针对AWS的攻击是基于CLDAP反射的攻击,这种反射攻击会利用受欺骗的IP地址向第三方服务器发送请求,以此来滥用合法协议。

DDos攻击原理

  • 拒绝服务攻击的方式有很多中,比如触发了服务器bug,导致服务器进程崩溃,或者大量恶意得到请求导致服务器的CPU、内存、磁盘等资源被过度消耗,还有网络流量劫持、DNS劫持都可能导致服务中断,都可以被称为拒绝服务攻击。
  • 多台计算机节点共同发起拒绝服务攻击,就能形成规模效应。这些攻击节点往往是黑客所控制的"肉鸡",当肉鸡数量到达一定规模后,就形成了一个"僵尸网络"。在大型的僵尸网络中,肉鸡数量甚至能达到数万、数十万的规模。如此大规模的僵尸网络发起的DDos攻击,几乎是不可阻挡的。
    请添加图片描述

DDos攻击类型

网络层泛洪攻击

  • 网络层泛洪攻击是一种常见的DDos攻击类型,攻击发生在网络层,其目的是通过向目标系统或网络设备发送大量数据包、请求或无效信息,从而耗尽目标的网络带宽、CPU资源或其他关键资源,最终导致合法用户无法正常访问该服务或系统。
  • 常见的网络泛洪攻击有 : SYN Flood、ACK Flood、FIN Flood、RST Flood、TCP Fragment Flood、、UDP Flood、UDP Fragment Flood、IP Flood等。下面重点介绍下 SYN Flood攻击

SYN Flood攻击

  • SYN Flood是一种最为经典的DDos攻击,它利用了TCP协议设计中的缺陷,而TCP/IP协议是整个互联网的基础,如今想要修复这样的缺陷几乎是不可能的事情。
  • 正常情况下,TCP三次握手的过程如图所示
    请添加图片描述
  • 客户端向服务端发送一个带有SYN标志位的包,包含了客户端使用的初始序列号
  • 服务端收到客户端发送的SYN包后,向客户端发送了一个SYN和ACK都置位的TCP报文,其中包含确认号和服务端的初始序列号
  • 客户端收到服务端返回的SYN+ACK报文后,向服务端返回一个ACK置位且确认号的报文。至此,一个标准的TCP连接就完成了,双向都可以收发数据。
  • 在SYN Flood攻击中,攻击者向服务端发送大量伪造源IP地址的SYN包,此时服务端会返回SYN+ACK包,因为源IP地址是伪造的,所以伪造的IP地址并不会应答ACK包,而服务端没有收到ACK回应包,就会等待一段时间,此时的连接状态称为半开连接,如果超时则丢弃这个连接。
  • 虽然是半开连接,服务端也需要为它们分配系统资源,并使用一个队列来存储这些半开连接。如果攻击者大量发送这种伪造源IP地址的SYN报文,服务端将会消耗非常多的资源来处理这种般连接,同时半开连接数量会超过队列中连接数的最大限制。随后的结果是,服务端没办法处理正常的连接请求,因而拒绝服务。
    请添加图片描述
  • 对抗SYN Flood攻击,有一种方案为Safe Reset,一般在网络防火墙中使用。接收到客户端的SYN报文后,防火墙返回一个确认号错误的SYN+ACK报文,真实的客户端在发现错误后会回应一个RST报文,这样防火墙就知道这个IP地址是真实客户端,并将其添加到白名单中,后面如果客户端重新请求连接时就将它放行。而虚假的源IP地址不会有响应,所以它们就不会被列入白名单。

反射放大型攻击

  • 反射放大型攻击是近几年非常流行的DDos攻击方式,超大流量的DDos攻击多数是由反射放大型攻击产生的。
  • 绝大部分反射放大型攻击是使用UDP协议,因为UDP是无连接的协议,当客户端伪造源IP地址访问UDP服务时,服务端会把响应内容返回给伪造的源IP地址,所以当攻击者把源IP地址指定为攻击目标时,响应内容就被发送给了攻击目标。
  • 如果一个UDP响应内容远大于请求内容,攻击者就借助UDP服务器实现了四两拔千斤的放大攻击效果。
    请添加图片描述

Web应用层DDoS攻击

  • Web应用层DDos攻击,攻击发生在应用层,TCP三次握手已经完成。所以发起攻击的IP地址都是真实的。但应用层DDos攻击有时甚至比网络层DDos攻击更为可怕,因为网络层DDos攻击通常都伴随着超大流量,并且都是非正常的网络数据包,攻击流量和正常访问流量比较容易区别,而应用层DDos攻击流量可能与正常访问流量的相似度很高,这对网络安全产品提出了很大的挑战。
  • 常见的Web应用层DDos攻击有:HTTP Flood、HTTPS Flood、Slowloris、CC攻击等。

HTTP Flood

  • HTTP Flood攻击主要是通过向目标网站发送大量看似合法的HTTP请求来消耗服务器资源,从而导致服务器无法处理正常用户的访问请求。
  • 在HTTP Flood攻击中,攻击者通常使用大量的肉鸡或僵尸网络,模拟真实用户发起HTTP请求。这些请求可以包括GET、POST等各种HTTP方法,并且可能携带各种不同的URL和HTTP头信息,使得防御系统难以简单地通过过滤特定IP地址或识别异常数据包特征的方式来抵御攻击。
  • 攻击的目标在于耗尽服务器资源,例如CPU使用率、内存占用、数据库连接数或者Web服务器线程池等。当这些资源被恶意请求填满时,正常的网页访问将变得极其缓慢甚至完全无法响应。

CC攻击

  • CC攻击源自一个叫fatboy的攻击程序,当时黑客为了挑战绿盟的一款反DDos设备开发了它。绿盟是中国著名的安全公司之一,它有一款叫"黑洞" (Collapasar)的反DDos设备,能够有效清洗SYN Flood等有害流量。而黑客则挑衅式地将fatboy所实现地攻击方式命名为 Collenge Collapasar,简称CC,意指在黑洞地防御下,仍然能有效地完成拒绝服务攻击。

  • CC攻击的原理非常简单,就是对一些资源消耗量较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。

  • 这种攻击手法利用多个代理服务器、肉鸡网络(被恶意软件感染并控制的计算机网络)或僵尸网络向目标网站发送大量并发请求,尤其是对那些资源消耗较大的动态页面发起攻击。由于这些请求看似合法且通常来自不同的IP地址,因此难以通过简单的过滤手段来防御。

  • 攻击的目标是耗尽受害服务器的CPU使用率、内存占用或者数据库连接数等关键资源,导致服务器响应速度极度下降,甚至无法正常处理合法用户的访问请求,最终造成网站服务中断或严重性能下降。相较于传统的网络层DDoS攻击,CC攻击更难以防御,因为它往往需要识别和区分出恶意用户流量与正常访问流量,而这在应用层上具有更高的复杂性。

Slowloris攻击

  • Slowloris攻击原理是以极低的速度向服务器发送HTTP请求。由于Web服务器对于并发的连接数都设有上限,因此若是恶意占用住这些连接不释放,那么Web服务器的所有连接都将被恶意连接占用,从而无法接受新的请求,导致网站拒绝服务。
  • 为了保持住这个连接,攻击者构造了一个畸形的HTTP请求,准确的说,是一个不完整的HTTP请求
  •   GET / HTTP/1.1\r\nHost:www.csdn.netUser-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36\r\nContent-Length:42\r\n
    
  • 正常的HTTP请求是以两个"\r\n"表示HTTP Headers部分结束的,比如
  •   Content-Length:42\r\n\r\n
    
  • 由于Web服务器只收到了一个"\r\n",因此认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求。
  • 此时,客户端每隔一段时间再发送任意HTTP头,并保持住连接即可。因为一直没有收到两个"\r\n",所以服务端就一直认为请求还没有发送完,这个连接就会很长时间不断开。当构造很多个连接后,服务器的连接数很快就会达到上限,从而产从拒绝服务。
  • 这种攻击可以通过设置Web服务器读取请求头的超时时间,或者通过设置网络层读取数据包的超时时间来防御。

DDos攻击类型分布

网络层DDos攻击

在这里插入图片描述

应用层DDos攻击

在这里插入图片描述

总结

  • DDos攻击自1996年首次出现,距今已过去近30年的时间,依旧是安全领域最难解决的问题之一。
  • 由于DDoS攻击利用的是互联网协议的漏洞和弱点,因此没办法从根本上去解决,只能被动采取一些防御措施去抵御攻击。并且随着技术的不断进步,DDoS攻击的手法也在不断演变和升级。攻击者可能会利用新的漏洞、协议缺陷或者技术手段来发起更加复杂和难以防御的攻击。
  • 虽然无法从根本上完全解决DDoS攻击,但可以通过技术、管理和合作等多种手段来降低其影响和风险,保护网络的安全和稳定。抵御DDos攻击之路任重而道远。

参考

  • 《白帽子讲Web安全》 - 吴翰清 叶敏/著

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件架构设计 C/S与B/S架构的区别

一、什么是C/S架构? C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或SQLServer。 C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端&#x…

uni-popup(实现自定义弹窗提示、交互)

一般提示框的样式,一般由设计稿而定,如果用uniapp的showmodel,那个并不能满足我们需要的自定义样式,所以最好的方式是我们自己封装一个!(想什么样就什么样)! 一、页面效果 二、使用…

SpringMVC03 基础操作续与几个简单的交互

前文 第一篇 第二篇 基础操作 上篇博客我们知道了如何获取Session内容以及传输数组,json,对象,集合等的传送和获取 这节课我们可以从上篇的结束开始,其实Spring对Session进行了进一步的封装,我们可以使用其他的方式也可以读取和设置Session(更简洁的方式) 1.直接使用HTTPSessio…

【GPT-SOVITS-02】GPT模块解析

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

文件包含漏洞(input、filter、zip)

一、PHP://INPUT php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码…

wireshark解析https数据包

Debian11环境: 在linux环境下抓取访问某个https的网址时抓取的数据包都是加密的,导致无法跟踪到数据包流,现在尝试将抓取的https包进行解密。 1、解密https数据包需要设置SSLKEYLOGFILE变量,推荐写入配置文件中。 echo "exp…

使用IDEA进行Scala编程相关安装步骤

一、相关安装包(jdk最好用1.8版本,其他不做要求) IDEA安装包 jdk-8u101-windows-x64.exe scala-2.12.19 二、安装顺序 在安装IDEA之前,首先要安装好java和scala环境,以便后续配置 三、jdk和scala安装要求 1.jdk安…

【启动npm run serve 奇怪的报错】

报错如下: INFO Starting development server... utils.js:587Uncaught TypeError [ERR_INVALID_ARG_VALUE]: The argument path must be a string or Uint8Array without null bytes. Received E:\\#\u0000#idea-workspace\\wonderful-search\\wonderful-search-v…

研究生总结

Note:本博客更多是关于自己的感悟,没有翻阅文件详细查证,如果存在错过,也请提出指正。 1. 半监督回归 相比于半监督分类,半监督回归相对冷门。回归和分类之间有着难以逾越的天谴,预测精度。分类中的类别是可数的&…

Vue2 引入使用ElementUI详解

目录 1 安装2 引入2.1 全局引入2.1.1 引入2.1.2 使用 2.2 按需引入2.2.1 引入2.2.2 使用 3 总结 1 安装 推荐使用 npm 的方式安装,它能更好地和 webpack打包工具配合使用。(本项目使用安装方式) npm i element-ui -S也可以使用其他的包管理…

ioDraw:与 GitHub、gitee、gitlab、OneDrive 无缝对接,绘图文件永不丢失!

🌟 绘图神器 ioDraw 重磅更新,文件保存再无忧!🎉 无需注册,即刻畅绘!✨ ioDraw 让你告别繁琐注册,尽情挥洒灵感! 新增文件在线实时保存功能,支持将绘图文件保存到 GitHu…

【TB作品】MSP430,单片机,Proteus仿真,单片机通信,串口通信

文章目录 题目虚拟串口仿真图程序介绍获取代码和仿真 题目 30、单片机通信 基本要求: 设计一串口通信程序,波特率 9600,通过 RS232 与 PC 机通信。 由 PC 机向单片机发送字符串数据,单片机接收到数据后发回 PC 机,其中…

Centos yum报错‘Connection timed out after 30002 milliseconds‘) 正在尝试其它镜像。解决办法

修改源后更新报错 我有两个Centos 一个7 一个8,疏忽在7上面配置了8的源后报错,通过下面的报错发现提示的是Centos7的源找不到,才意识到是不是配置错了源。 报错信息: http://mirrors.aliyun.com/centos/7/AppStream/x86_64/os/r…

【AI系列】Torchvision、Torchaudio 和 Torchtext关系

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

学习笔记 | 微信小程序项目day02

今日学习内容 安装uni-ui跟uni-helper/uni-ui-types配置pinia持久化请求工具类的拦截器请求工具类的请求函数 安装uni-ui跟uni-helper/uni-ui-types npm install -g cnpm --registryhttps://registry.npmmirror.com npm set registry https://registry.npmmirror.com npm i …

PC电脑如何使用HDMI连接小米电视当显示屏

使用HDMI连接好当时和电脑,HDMI2.0会更清晰;小米电视会自动弹窗提示你有HDMI 接口连接,或者你进入信号源进行选择即可;需要平时我们电脑的显示器正常连接,然后按 win p ,选择 扩展 屏幕; 进入设…

如何通过蓝牙获取手机时间同步时钟RTC万年历走ble或者edr经典蓝牙

一、功能简介 KT6368A支持连接手机获取手机的时间信息,可以同步时钟 无需安装任何app,直接使用系统蓝牙即可实现 走的就是edr的经典蓝牙 同时它不影响音频蓝牙,还能保持低功耗的运行 实现的方式就是手机连接好蓝牙芯片KT6368A&#xff0…

R语言聚类分析-K均值聚类与系统聚类法

一、数据集为firm.csv,给出了22家美国公用事业公司的相关数据集,各数据集变量的名称和含义如下:X1为固定费用周转比(收入/债务),X2为资本回报率,X3为每千瓦容量成本,X4为年载荷因子&…

Etcd 介绍与使用(入门篇)

etcd 介绍 etcd 简介 etc (基于 Go 语言实现)在 Linux 系统中是配置文件目录名;etcd 就是配置服务; etcd 诞生于 CoreOS 公司,最初用于解决集群管理系统中 os 升级时的分布式并发控制、配置文件的存储与分发等问题。基…

使用 GitHub Actions 通过 CI/CD 简化 Flutter 应用程序开发

在快节奏的移动应用程序开发世界中,速度、可靠性和效率是决定项目成功或失败的关键因素。持续集成和持续部署 (CI/CD) 实践已成为确保满足这些方面的强大工具。当与流行的跨平台框架 Flutter 和 GitHub Actions 的自动化功能相结合时,开发人员可以创建无…