网络层的DDoS攻击与应用层的DDoS攻击之间的区别

DDoS攻击(即“分布是拒绝服务攻击”),是基于DoS的特殊形式的拒绝服务攻击,是一种分布式、协作的大规模攻击方式,主要瞄准一些企业或政府部门的网站发起攻击。根据攻击原理和方式的区别,可以把DDoS攻击分为两个不同层次,一种是传统的、基于网络层的DDoS攻击,另一种则是现阶段较为常见的、基于应用层的DDoS攻击,这两类不同层面的DDoS攻击方式各有特点,都对网络的安全造成了极大的危害。

一、网络层DDoS攻击原理及方式

常见的网络层DDoS攻击就是利用TCP/IP协议族的一些特征,控制大量的傀儡机发送合理的请求来消耗攻击目标主机的CPU和内存资源,由于攻击目标主机资源的快速消耗,就会使得合法的用户无法得到所请求的服务。

常见的网络层DDoS攻击方式有:

1、SYN-Flood攻击

SYN-Flood攻击是指攻击者利用TCP三次握手的原理,向目标主机发送大量SYN标志的TCP请求,当服务器接收的这些请求数据包的时候,会为这些连接请求建立会话,并且把这些并未建立完整连接的会话排到缓冲区队列中。攻击者可以发送源地址为假的分组,等待服务器发送分组,而由于源地址为假,因为系统发送回来的分组就等不到源地址主机的响应,因此,服务器的带宽和资源将在维持大量的这类半连接上被消耗掉,一旦请求超过了服务器的缓冲区容量,此时服务器就不能再接收新的连接请求了。此时其他合法的用户就无法建立与服务器的连接。

2、ACK-Flood攻击

ACK Flood攻击。在TCP连接建立之后,所有的数据传输TCP报文都是带有ACK标志位的,主机在接收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在。通常状态检测防火墙所做的事情与此类似,只不过防火墙只拦截非法的数据包,而不主动回应。

对比主机以及防火墙在接收到ACK报文和SYN报文时所做动作的复杂程度,显然ACK报文带来的负载要小得多。所以在实际环境中,只有当攻击程序每秒钟发送ACK报文的速率达到一定的程度,才能使主机和防火墙的负载有大的变化。当发包速率很大的时候,主机操作系统将耗费大量的精力接收报文、判断状态,同时要主动回应RST报文,正常的数据包就可能无法得到及时的处理。这时候客户端(以IE为例)的表现就是访问页面反应很慢,丢包率较高。但是状态检测的防火墙通过判断ACK报文的状态是否合法,借助其强大的硬件能力可以较为有效的过滤攻击报文。当然如果攻击流量非常大,由于需要维护很大的连接状态表同时要检查数量巨大的ACK报文的状态,防火墙也会不堪重负导致全网瘫痪。

3、UDP-Flood攻击

UDP在Internet中的应用是比较广泛的,尤其在一类实时性要求较高,而对数据包传输的完整性要求不高的应用来说,这其中以视频和即时通信最为典型,这些服务首先要求保证的不是质量而是实时性。UDP Flood常发生对DNS服务器以及流媒体视频服务器上,UDP是基于无连接的协议,当攻击目标接收到一个UDP数据包时,它会确定目的端口所对应的应用程序。当攻击目标主机发现该应用程序并不存在时,会产生一个目的地址无法连接的ICMP数据包发送给源地址。如果向攻击目标主机的端口发送了足够多的UDP数据包的时候,攻击目标主机就会崩溃。常见的UDP攻击有NTP攻击。

4、ICMP-Flood攻击

ICMP Flood 的攻击原理和ACK Flood原理类似,属于流量型的攻击方式,也是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤ICMP报文,因此ICMP Flood出现的频度较低。

二、应用层DDoS攻击原理及方式

传统上的攻击DDoS是指发生在网络层的DDoS攻击,如本章上文所指的DDoS攻击一般就是指代的网络层DDoS攻击。而应用层DDoS攻击是在网络层DDoS攻击的基础上发展起来的,应用层DDoS攻击是一种新型的攻击方式,这类攻击方式的本质还是基于洪水式的攻击方式,即攻击者通过代理服务器或者僵尸网络向攻击目标发送大量的高频合法请求,以达到消耗攻击目标带宽的目的,然而,应用层DDoS攻击更为主要的目的是要能够消耗主机资源。

常见的应用层DDoS攻击有:

1、 DNS-Flood攻击

DNS-Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。

2、 慢连接攻击

在POST提交方式中,允许在HTTP的头中声明content-length,也就是POST内容的长度。在提交了头以后,将后面的body部分卡住不发送,这时服务器在接受了POST长度以后,就会等待客户端发送POST的内容,攻击者保持连接并且以10S-100S一个字节的速度去发送,就达到了消耗资源的效果,因此不断地增加这样的链接,就会使得服务器的资源被消耗,最后可能宕机。

3、CC攻击

CC攻击是基于页面攻击的,主要攻击目标是提供网页访问服务的服务器。这些网页往往存在ASP,JSP,PHP等脚本程序,并且CC攻击会重点调用Mssql、Mysql、Oracle等数据库,并对这些数据库发起操作。对于网页的访问来说,如果只是查看静态的网页内容,这种服务是不会占用太多服务器的资源的,然而当需要访问涉及到用户与页面之间存在交互的动态网页,这时就需要占用服务器的大量资源了。

比如用户在对数据库进行查找,修改时,服务器第一次会把用户所发出的对于数据库的操作返回,进行相应的操作后,第二次再把结果返回给用户,这其中就包括了至少两次的输入输出操作。如果同一时刻有大量的用户发起这样的请求,服务器的性能会很快下降。CC攻击利用了这个特点,模拟许多用户不间断的对服务器进行访问,而且CC攻击往往是攻击服务器上开销比较大的动态页面。这样的攻击方式有很强的隐蔽性,使得系统很难区分是正常的用户操作还是恶意的攻击。

CC攻击和HTTP GET攻击的攻击方式差不多,唯一的区别在于CC攻击是利用了代理作为攻击的发起点,这一方面使得追查攻击源变得困难。而HTTP GET攻击则并没有使用代理的方式。另一方面CC攻击还利用了代理服务器的缓存特性,即当客户端断开连接得时候,代理服务器还能保持和服务器的一段时间的连接,这个特性可以保障CC攻击的发起者无需关心由服务器发回的响应,而继续保持对服务器的持续交互。CC攻击的这种特性更加严重损害了服务器的性能。因此,CC攻击对服务器性能所造成的损失将更为巨大,也更加难以防范。而当HTTP GET连接被断开之后,发起攻击的傀儡机也就不能再继续发送请求数据包了,这种情况下HTTP GET攻击就比CC攻击显得易于防范,其危害也相应的就显得较易控制。

三、应用层DDoS攻击与网络层DDoS攻击的差异

应用层DDoS攻击和传统的网络层DDoS攻击之间存在着较大的差别,很多网络层DDoS攻击的特性在应用层攻击中已经不复存在了,这两类攻击的具体差别体现在以下几个方面:

1、两者实现的层次不同

网络层DDoS攻击发生在低层,而应用层DDoS攻击利用了高层协议实现。网络层DDoS攻击的典型攻击方式是:攻击者使用虚假的IP地址来控制攻击节点,然后由被控制的攻击节点向目标主机发送大量的攻击数据包,这些数据包包括有UDP和ICMP等,同时这种攻击方式将会利用TCP协议三次握手机制的缺点,使得攻击目标在收到这些不存在的IP地址的连接请求之后,为了维护一个开销非常大的半开连接而需要消耗大量的CPU和内存资源,最终将导致无法再为用户提供服务。

而应用层则DDoS则不然,以Web服务为例,基于Web的应用(如HTTP和HTTPS)通过开放的TCP端口为客户提供服务,应用层DDoS攻击利用了高层的协议,其攻击得以实现是以正常TCP连接和IP分组为前提,因此这就不具备传统DDoS攻击的行为特征(以TCP半开放连接最为显著),而且它无法采用虚假的IP地址(利用虚假的IP地址将无法建立合法和有效的TCP连接)的方法。因为基于网络层的检测系统很难对高层的行为进行判断,所以系统就无法判断经过这些端口的用户请求由正常用户还是攻击者发出的,因此针对高层协议的应用层DDoS攻击的请求可以顺利穿越基于底层协议的检测系统。

2、应用层DDoS有更多更复杂的形式

以Web服务器为例,它可以提供诸如数据库查询、客户端服务端的交互等服务,所以攻击者通过大量傀儡机向攻击目标主机发送请求数据包的攻击方式并不是应用层DDoS攻击的主流攻击方式,相反,应用层DDoS攻击可以用低速率的请求、少量的攻击节点来实现攻击效果。从这点上来看,应用层的DDoS攻击远比网络层DDoS攻击来的复杂,它可以实现更多的功能。因此,应用层DDoS攻击可以产生更大的破坏力。这种以简单的HTTP请求就可以触发服务器执行一系列复杂操作的攻击方式是应用层DDoS和网络层DDoS攻击的差异之一。

总的来说,网络层DDoS攻击和应用层DDoS攻击的主要区别在于攻击的目标和手段。网络层攻击主要针对网络基础设施,而应用层攻击则针对应用程序本身。因此,在防御策略上也需要有所不同。对于网络层DDoS攻击,防御措施通常包括配置防火墙、路由器和交换机等网络设备以过滤伪造或无效的数据包,以及使用内容分发网络(SCDN)等技术来分散和缓解攻击流量。对于应用层DDoS攻击,防御措施则更加复杂。除了使用防火墙等基础设施防御手段外,还需要加强应用程序的安全性和稳定性,例如通过限制请求频率、实施验证码机制、使用负载均衡等技术来分散和过滤有害请求。总之,无论是网络层DDoS攻击还是应用层DDoS攻击,都对网络安全构成了严重威胁。因此,我们需要不断学习和研究新的防御技术和策略,以确保网络安全和稳定。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“一代传奇”宗庆后谢幕,500亿元饮料帝国迎交棒时刻

宗庆后同志逝世 2月25日,娃哈哈集团发布讣告,娃哈哈创始人、董事长宗庆后同志,因病医治无效,于 2024-02-25 10:30 逝世,享年 79 岁。 这是一位伟大的企业家。 伟大的地方不仅仅在于,宗庆后 42 岁开始白手起…

【网站项目】437物流管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Python字符串访问与拼接你搞懂了吗?

使用下标访问字符串,从0开始计数,-1表示最后一个字符。三种遍历字符串的方法:for循环、len()和enumerate()。字符串拼接只能是字符串之间使用,不能与数字拼接。 1.下标访问字符串 通过下标访问字符串的内容,下标从 0 …

蛋白结构预测模型评价指标

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、蛋白结构预测模型评价指标TM-scorelDDT 二、Alphafold中的评价指标pLDDTpTMPAE 三、AlphaFold-multimer 蛋白结构的评价指标DockQipTM 总结参考资料 前言 本文汇总了AlphaFold和AlphaFold-mul…

C语言函数递归

一、什么是递归 递归实际上就是函数自己调用自己。 递归在书写的时候,有2个必要条件: • 递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。 • 每次递归调用之后越来越接近这个限制条件。 在下面的例子中&#xff0…

将一个 PostgreSQL 数据库复制到另一个数据库中

以管理员身份进入cmd窗口,输入如下命令 语法: pg_dump -C -h 本机IP -U 本机postgresql用户名 源数据库名 | psql -h 服务器IP -U 服务器postgresql用户名 目标数据库名 示例: pg_dump -C -h 127.0.0.1 -U postgres test01-dbname | psql…

leetcode:1925. 统计平方和三元组的数目(python3解法)

难度&#xff1a;简单 一个 平方和三元组 (a,b,c) 指的是满足 a2 b2 c2 的 整数 三元组 a&#xff0c;b 和 c 。 给你一个整数 n &#xff0c;请你返回满足 1 < a, b, c < n 的 平方和三元组 的数目。 示例 1&#xff1a; 输入&#xff1a;n 5 输出&#xff1a;2 解释…

AI绘画丨精美3D立体插图

利用衍纸艺术制作的3D立体精美插图&#xff0c;以星星作为主题&#xff0c;错落在整个画面中&#xff0c;一起看看他的生成关键词吧~ 使用关键词&#xff1a;A gorgeous multi-dimensional paper illustration, paper quilling, 3D diorama of a vintage stargazing illustrat…

JSON:简介与基本使用

目录 什么是JSON&#xff1f; JSON的基本结构 JSON的基本使用 在JavaScript中使用JSON 创建JSON对象 解析JSON字符串 生成JSON字符串 在其他编程语言中使用JSON 总结 什么是JSON&#xff1f; JSON&#xff0c;全称为JavaScript Object Notation&#xff0c;是一种轻量…

NCDA视觉传达设计大赛终极攻略:助你斩获佳绩

第十二届全国高校未来设计师数字艺术设计大赛&#xff08;NCDA&#xff09; A类&#xff1a;视觉传达设计 参赛对象&#xff1a; 大学生小组&#xff1a;分①研究生组②本科生组③专科生组&#xff0c;三组分别进行评审 教师小组&#xff1a;普通高校教师&#xff0c;不分小…

解除网页复制限制

chrome 中右击点检查&#xff0c; 找到要复制的文字块 把如图所示右边的 copy里的事件全部remove 然后就可以右击复制了

043 多态

示例 public class A {public void say(){System.out.println("I am A");} } public class B extends A {Overridepublic void say(){System.out.println("I am B");} } public class Test {public static void main(String[] args) {A a new B(); // …

项目管理基本要素--项目、项目集、项目组合

本文描述从事项目管理和了解项目管理领域所需的基本要素&#xff0c;词汇定义来自于《项目知识管理体系》(PMBOK指南)第六版&#xff0c;仅作个人学习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处&#xff0c;不得用于商业用途。 如有侵权、联系速删 文章目录…

项目管理工具git

git 1. git介绍1.1. 版本控制系统 2. 创建本地版本库2.1 概念2.2 操作步骤 3. 修改文件4. 练习: 添加一个本地项目到仓库5. 添加远程仓库5.1 添加远程仓库5.2 本地仓库同步到远程仓库5.3 克隆远程仓库到本地5.4 SSH设置 6. 分支管理6.1 创建分支6.2 切换分支6.3 合并分支6.4 解…

猫头虎分享已解决Bug || ValueError: No gradients provided for any variable

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

JAVA工程师面试专题-《Mysql》篇

目录 一、基础 1、mysql可以使用多少列创建索引&#xff1f; 2、mysql常用的存储引擎有哪些 3、MySQL 存储引擎&#xff0c;两者区别 4、mysql默认的隔离级别 5、数据库三范式 6、drop、delete 与 truncate 区别&#xff1f; 7、IN与EXISTS的区别 二、索引 1、索引及索…

操作系统系列学习——操作系统启动

文章目录 前言操作系统启动 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【哈工大…

亚信安慧AntDB:数据处理的好帮手

亚信安慧AntDB分布式数据库凭借平滑扩展、高可用性和低成本三大核心优势&#xff0c;在业界获得了极高的评价和认可。这些优点不仅为AntDB提供了巨大的市场发展潜力&#xff0c;也使其成为众多企业在数据管理上的首选解决方案。 AntDB的平滑扩展特性极大地提升了企业的灵活性和…

基于51单片机的智能监护与健康检测[proteus仿真]

基于51单片机的自行车测速系统设计[proteus仿真] 个人健康检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的智能监护与健康检测 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xff…

系统找不到xinput1_3.dll怎么办?试试这五种解决方法轻松搞定

在计算机系统运行过程中&#xff0c;当我们遭遇“找不到xinput1_3.dll”这一错误提示时&#xff0c;实际上正面临一个软件兼容性、系统组件缺失以及游戏或应用程序无法正常启动的关键问题。深入探究这一现象&#xff0c;我们会发现它可能引发一系列连带问题&#xff0c;例如某些…