DDoS攻击与防御

一、DDOS介绍

要了解DDOS攻击是什么,首先要了解DOS攻击的基本原理是至关重要的。

DoS攻击是最早出现的,它的攻击方法说白了就是单挑,是比谁的机器性能好、速度快。但是现在的科技飞速发展,一般的网站主机都有十几台主机,而且各个主机的处理能力、内存大小和网络速度都有飞速的发展,有的网络带宽甚至超过了千兆级别。这样我们的一对一单挑式攻击就没有什么作用了,搞不好自己的机子就会死掉。举个这样的攻击例子,假如你的机器每秒能够发送10个攻击用的数据包,而被你攻击的机器(性能、网络带宽都是顶尖的)每秒能够接受并处理100攻击数据包,那样的话,你的攻击就什么用处都没有了,而且非常有死机的可能。要知道,你若是发送这种1Vs1的攻击,你的机器的CPU占用率是90%以上的,你的机器要是配置不够高的话,那你就死定了。

不过,科技在发展,黑客的技术也在发展。正所谓道高一尺,魔高一仗。经过无数次当机,黑客们终于又找到一种新的DoS攻击方法,这就是DDoS攻击。它的原理说白了就是群殴,用好多的机器对目标机器一起发动DoS攻击,但这不是很多黑客一起参与的,这种攻击只是由一名黑客来操作的。这名黑客不是拥有很多机器,他是通过他的机器在网络上占领很多的“肉鸡”,并且控制这些“肉鸡”来发动DDoS攻击,要不然怎么叫做分布式呢。还是刚才的那个例子,你的机器每秒能发送10攻击数据包,而被攻击的机器每秒能够接受100的数据包,这样你的攻击肯定不会起作用,而你再用10台或更多的机器来对被攻击目标的机器进行攻击的话,嘿嘿!结果我就不说了。

DDOS(Distributed Denial of Service),中文全称分布式拒绝服务(大量分布式的攻击导致服务器不堪重负拒绝服务),就是借助多台计算机作为平台来攻击服务器的一种方式的统称,DDOS攻击还包括 CC攻击、NTP攻击、SYN攻击、DNS攻击等。遭受DDOS攻击的网站会出现:网站无法访问、访问提示“server unavailable”、服务器CPU使用率100%、内存高占用率。

被DDoS攻击时的现象:

  • 被攻击主机上有大量等待的TCP连接。

  • 网络中充斥着大量的无用的数据包,源地址为假。

  • 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯。

  • 利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求。

  • 严重时会造成系统死机。

2、DDoS的类型及原理

DDOS攻击主要分为三类:流量型攻击;连接型攻击;特殊协议缺陷。

2.1 Ip lood

攻击原理:此攻击以多个随机的源主机地址向目的主机发送超大量的随机或特定的IP包,造成目标主机不能处理其他正常的IP报文。

原理图:
在这里插入图片描述

2.1 Syn Flood

攻击原理:依据tcp建立连接的三次握手。此攻击以多个随机的源主机地址向目的主机发送syn包,而在收到目的主机的syn+ack包后并不回应,目的主机就为这些源主机建立大量的连接队列,由于没有收到ack一直维护这些连接队列,造成资源的大量消耗而不能向正常的请求提供服务。与之类似的攻击方式还有ackflood、s-ackflood、finflood、rstflood、tcpflood 。

原理图:
在这里插入图片描述

2.3 Udp 反射 Flood

攻击原理:有时被保护服务器也有同外部服务器进行udp交互的需求,攻击者就会利用此交互对被保护服务器进行udp反射放大攻击。此攻击在短时间那冒充被攻击地址向外部公用的服务器发送大量的udp请求包,外部服务器收到虚假的udp请求就会回复大量的回应包给被攻击服务器地址,造成目标主机被保护服务器不能处理其他正常的交互流。

原理图:
在这里插入图片描述

2.4 Dns Query Flood

攻击原理:通过发起大量的DNS请求,导致DNS服务器无法响应正常用户的请求,正常用户不能解析DNS,从而不能获取服务。

原理图:
在这里插入图片描述

2.5 Dns Reply Flood

攻击原理:攻击者通过发起大量伪造的DNS回应包,导致DNS服务器带宽拥塞无法响应正常用户的请求,正常用户不能解析DNS,从而不能获取服务。

原理图:
在这里插入图片描述

2.6 Http Flood

攻击原理:此攻击类型主要攻击目标为Web服务器上的网页访问服务,当发生攻击时攻击者向被攻击服务器大量高频的发送一个网页或多个网页的请求服务,使服务器忙于向攻击者提供响应资源从而导致不能想正常的合法用户提供请求响应服务。

2.7 Https Flood

攻击原理:此攻击类型主要攻击目标是使用https协议的Web服务器上的访问服务,当发生攻击时攻击者向被攻击服务器大量高频的发送请求服务,使服务器忙于向攻击者提供https响应资源从而导致不能想正常的合法用户提供请求响应服务。

在这里插入图片描述

2.8 Sip Invite Flood

攻击原理:Sip协议为网络视频电话会议的udp协议,攻击者通过发起大量的Sip invite请求,导致网络视频电话会议Sip服务器无法响应正常用户的请求报文,占用服务器带宽使其阻塞,达到SIP报文洪水攻击的目的。

原理图:
在这里插入图片描述

2.9 Sip Register Flood

攻击原理:Sip协议为网络视频电话会议的udp协议,攻击者通过发起大量的Sip register注册信息,导致网络视频电话会议Sip服务器无法响应正常用户的注册报文信息,占用服务器带宽使其阻塞,达到SIP注册报文洪水攻击的目的。

原理图:
在这里插入图片描述

2.10 Connection Flood

攻击原理:利用真实 IP 地址(代理服务器、广告页面)在服务器上建立大量连接服务器上残余连接(WAIT状态)过多,效率降低,甚至资源耗尽,无法响应; 蠕虫传播过程中会出现大量源IP地址相同的包,对于 TCP 蠕虫则表现为大范围扫描行为; 消耗骨干设备的资源,如防火墙的连接数。

原理图:
在这里插入图片描述

2.11 CC攻击

攻击原理:利用代理服务器向受害者发起大量HTTP Get请求;主要请求动态页面,涉及到数据库访问操作;数据库负载以及数据库连接池负载极高,无法响应正常请求

原理图:
在这里插入图片描述

2.12 http slow header慢速攻击

攻击原理:在http协议中规定,http的头部以连续的“\r\n\r\n”作为结束标志。许多web服务器在处理http请求的头部信息时,会等待头部传输结束后再进行处理。因此,如果web服务器没有接收到连续的“\r\n\r\n”,就会一直接收数据并保持与客户端的连接。Slow-header的工作原理是攻击者在发送http get请求时,缓慢的发送无用的header字段,并且一直不发送“\r\n\r\n”结束标志。Web服务器能够处理的并发连接数是有限的,如果攻击者利用大量的主机发送这种不完整的http get请求把那个持续占用这些连接,就会耗尽web服务器的资源。

原理图:
在这里插入图片描述

2.13 http slow post慢速攻击

攻击原理:在post提交方式中,允许在http的头中声明content-length,也就是指定http消息实体的传输长度。当web服务器接收到请求头部中含有content-length字段时,服务器会将该字段的值作为http body的长度,持续接收数据并达到content-length值时对实体的数据内容进行处理。slow post会传送包括整个header的http请求,在提交了头以后,将后面的body部分卡住不发送,这时候服务器在接受了post长度以后,在处理数据之前会等待客户端发送post的内容,攻击者保持连接并且以10s-100s一个字节的速度去发送,就达到了消耗资源的效果,因此不断增加这样的连接会使得服务器的资源被消耗

原理图:
在这里插入图片描述

2.14 Https-ssl-dos攻击

攻击原理:在进行SSL数据传输之前,通信双方首先要进行ssl握手,以协商加密算法交换加密密钥,进行身份认证。通常情况下,这样的ssl握手过程只需要进行一次即可,但是在ssl协议中有一个renegotiation选项,通过它可以进行密钥的重新协商以建立新的密钥。在ssl握手的过程中,服务器会消耗较多的CPU资源来进行加解密,并进行数据的有效性验证。SSL-dos攻击方式的本质是消耗服务器的CPU资源,在协商加密算法的时候,服务器CPU的开销是客户端的15倍左右。攻击者在一个TCP连接中不停地快速重新协商,如果建立多个连接,给服务器端造成的压力会更加明显,从而达到攻击目的。

原理图完整的SSL连接过程:
在这里插入图片描述
原理图
在这里插入图片描述

2.15 Dns NX攻击

攻击原理:Dns NX攻击是dns query flood攻击的一个变种攻击方式,区别是后者向dns服务器查询的是一个真实存在的域名,而前者向dns服务器查询的是一个不存在的域名。在进行dns nx攻击时,dns服务器会进行多次域名查询,其获取不到域名的解析结果时,还会再次进行递归查询,向上一级的dns服务器发送解析请求并等待应答,这进一步增加了dns服务器的资源消耗。同时,dns服务器的缓存会被大量nx domian记录所填满,导致响应正常用户的dns解析请求变慢。

原理图:
在这里插入图片描述

2.16 DNS投毒

攻击原理:一台dns服务器只记录本地资源的所有授权主机,若要查询的是非本地的主机信息,则向信息持有者(授权dns服务器)发送查询请求。为了避免每次查询都发送请求,dns服务器会把授权服务器返回的查询结果保存在缓存中,并保持一段时间,这就构成了dns缓存。dns缓存投毒攻击就是通过污染dns cache,用虚假的IP地址信息替换cache中主机记录的真实IP地址信息来制造破坏。这种类型的攻击的目的是将依赖于此dns服务器的受害者重定向到其它的地址,例如重定向搜索引擎到广告网站。这种类型的典型攻击就是钓鱼方式的攻击,例如将一个银行的访问重定向到黑客伪造的网站。

原理图:
在这里插入图片描述

3、DNS的防御

3.1 基本防御

首先,建议企业实施基础架构的风险分析,这是一个很好的开始。例如,匿名攻击在对许多企业的攻击中获得很大成功,这并不是因为攻击者的工具如何高级,而是因为他们所攻击的基础架构本身就漏洞百出。

其次,禁止任何未用的服务,目的是将开放端口的数量最小化,从而减少攻击者进入和利用已知漏洞的机会。

第三,为所有的软件打上补丁,保持所有软件的最新有助于漏洞数量的最少化。

第四,不要太依赖防火墙。防火墙只能阻止来自某些端口的洪水攻击,但它却无法防止基于Web的通信进入。

此外,如果禁用了IP广播,就可以阻止基于ICMP的攻击,如死亡之ping攻击。

这些仅是从大体上保护网络,抵御一般DDoS攻击的方法,对于一些高级DDoS攻击,这些措施远远不够。说到专门的DDoS防御,企业不妨使用IP包过滤技术。

3.2 包过滤

描述过滤这种技术还是很容易的:判断进入的数据包,看其是来自合法用户,还是来自攻击机器,若来自后者,则丢弃。但实际上实施这种方案并非易事。

企业往往建立能够阻止非法通信的过滤器。但这种做法的困难在于,如何将攻击包与合法请求区分开来,而且因为攻击的目的是摧毁正在扫描通信的设备,数据包的数目如此多,从而造成保护网络的设备无法应对。建议采用阻止假冒IP包的技术,如基于路由器的过滤,它可以跟踪进入通信的源地址,一旦发现异常,就认为是欺诈而丢弃。事实上,很容易阻止欺诈,如今的高级攻击不再使用这种伎俩。现在阻止假冒通信仅是一种简单技术。

3.3 抵制僵尸网络的攻击

但新威胁却更为危险:在受感染的计算机作为僵尸网络的一部分而协同动作时,数据包的源地址就不再是假冒的了,而是真实的IP地址。

针对僵尸攻击,有一种更科学的IP过滤方法。这种技术试图先记住曾经访问过网站的善意数据包,然后找出恶意数据包,仅准许来自已知源的数据包进入。此时,边缘路由器参照常用访问者的IP地址数据库,如果在通信源中找不到匹配的IP,就丢弃包。

基于历史记录的过滤有一个关键问题,就是地址数据库是如何工作的。如果边缘路由器花费太多的时间才能得到善意地址的列表,而攻击又正在进行,网络响应速度就会减少,其造成的效果与攻击自身又有什么区别呢?

这种过滤还有一个问题:如果攻击者知道了基于历史的过滤,为了使僵尸计算机的IP地址合法化,僵尸控制系统很容易在真实攻击发生之前将僵尸计算机指引到目标网站。这会欺骗过滤系统,使其信任更多的DDoS包,因为攻击来自“熟悉的”地址。

3.4 虚拟路由器和安全设备

除过滤之外,新的DDoS防御技术还可以使用虚拟路由器和基于设备的系统,以此作为接收通信的基本方式,并应用清洁技术来过滤通信。这种自动化的系统将来势必成为对付DDoS攻击的重要防御工具,因为可以对基于云和基于虚拟化的系统进行调整,以满足海量的通信要求。

根除DDoS之路漫漫而修远,因为互联网上有太多不安全的机器正在被“僵尸化”。虽然目前对付DDoS攻击的防御已经很强大,但其针对性往往太强,而DDoS攻击采取的是“群起而攻之”的战术。因而,防御必须依靠综合治理、协同努力。DDoS是IT管理者时刻需要关注的严重威胁。

3.5 其它方法

还有其它两种技术可用来保护公司网络。首先,可以增加网络带宽,使其可以简单地“接收”小型DDoS攻击的通信。其次,准备第二个网络连接,你可以将它作为灾难恢复计划的一部分,在遭受攻击期间,仍可以维持互联网访问。

3.6 小结

DDoS攻击正在不断演化,变得日益强大、隐密,更具针对性且更复杂,它已成为从事电子商务公司的重大威胁。真正有效地对付这种攻击是一个系统工程,它需要全方位地综合治理、协同努力,如从法律、技术(不限于IT)、ISP、公司、个人用户等角度,多管齐下。特别是加强对个人用户、雇员的教育,养成良好的上网习惯,防止其成为僵尸网络的帮凶。

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

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

相关文章

DRDoS(memcache漏洞导致的反射型分布式拒绝服务攻击)

一、DDoS基础 见博文:DDoS攻击与防御 二、Memcached 反射DDOS攻击原理 反射DDOS是发送大量带有被害者IP地址的请求给反射服务器,反射服务器对IP地址源做出大量回应,形成拒绝服务攻击。CLOUDFLARE的这张图很好的解释了DDOS反射攻击过程&…

田牌魔术 | .NET Core 3.0 + Azure 远程点亮树莓派上的一盏灯

点击上方蓝字关注“汪宇杰博客”导语3年前,我写过一篇《Windows 10 IoT Core Azure 远程控制LED》,实现了《生活大爆炸》中的注孤生实验,让信号从家里出发,绕地球转一圈,经过微软美国数据中心,返回家里点亮…

使用Hash碰撞进行DoS攻击

一、哈希表碰撞攻击的基本原理 哈希表是一种查找效率极高的数据结构,很多语言都在内部实现了哈希表。PHP中的哈希表是一种极为重要的数据结构,不但用于表示Array数据类型,还在Zend虚拟机内部用于存储上下文环境信息(执行上下文的…

EF Core 实现读写分离的最佳方案

前言公司之前使用Ado.net和Dapper进行数据访问层的操作, 进行读写分离也比较简单, 只要使用对应的数据库连接字符串即可. 而最近要迁移到新系统中,新系统使用.net core和EF Core进行数据访问. 所以趁着国庆假期拿出一两天时间研究了一下如何EF Core进行读写分离.思路根据园子里…

SSL工作原理

本文介绍了SSL原理、安全机制、工作过程和典型网络应用。 缩略语列表 一、概述 1.1 产生背景 基于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常生活。受到人们的青睐。 因为这些应用都须要在网络上进行在线交易,它们对网络通信的…

在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射

一、前言在实际项目开发过程中&#xff0c;我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中&#xff0c;因为我们最终想要在页面上展示的数据与数据库实体类之间可能存在很大的差异&#xff0c;所以这里更常见的方法是去创建一些…

.NET开发者必须学习.NET Core

很多的.NET开发者在接触.Net Core之前&#xff0c;对于linux系统一点也不了解&#xff0c;也未曾有过主动去学习的念头。在接触了.Net Core之后才会慢慢学习linux相关知识&#xff0c;很多同学想转Java&#xff0c;这个很扎心&#xff0c;你有很好的条件转向.NET Core为啥要转J…

Java事务管理

事务的ACID属性&#xff1a;原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily) ACID 特性 A&#xff08;原子性&#xff09;事务的原子操作单元&#xff0c;对数据的修改&#xff0c;要么全部执行&#xff0c;要么全部不执行&#x…

如何提高QnA maker机器人训练中文语义理解的能力

这是一个常见的问题&#xff0c;在人工智能的世界里面&#xff0c;图像理解、语言及语义理解、数据理解是三个核心领域。而关于语言及语义理解&#xff0c;又与具体的语言和文字密切相关。目前来说&#xff0c;大家都是用机器学习去训练模型&#xff0c;如果要更好的理解中文&a…

分布式数据一致性(数据多份副本一致性)

前言 分布式数据库的数据一致性管理是其最重要的内核技术之一&#xff0c;也是保证分布式数据库满足数据库最基本的ACID特性中的 “一致性”(Consistency)的保障。在分布式技术发展下&#xff0c;数据一致性的解决方法和技术也在不断的演进&#xff0c;本文就以分布式数据库作…

Bumblebee微服务网关之请求统一验证

对于微服务网关来说&#xff0c;统一请求验证是一个比较重要和常用的功能&#xff0c;通过网关验证后台服务就无须关注请求验证&#xff1b;对于多语言平台的服务而言制定验证方式和变更验证配置都是一件比较繁琐和工作量大的事情。Bumblebee提供JWT验证插件&#xff0c;只需要…

分布式事务基础

这一篇主要介绍分布式事务的基础知识&#xff0c;一些基础的算法、定理、简单应用等。下篇文章介绍互联网业界的具体实践方案。 1、CAP定理 CAP定理是由加州大学伯克利分校Eric Brewer教授提出来的&#xff0c;其核心思想是任何基于网络的数据共享&#xff0c;系统最多只能满…

支持前端、后台业务代码扩展的快速开发框架

框架采用.NetCore Vue前后端分离&#xff0c;并且支持前端、后台代码业务动态扩展&#xff0c;框架内置了一套有着20多种属性配置的代码生成器&#xff0c;可灵活配置生成的代码&#xff0c;代码生成器界面配置完成即可生成单表/主从表的增、删、改、查、导入、导出、上传、审…

保证分布式系统数据一致性的6种方案

分布式系统数据一致性的基础知识&#xff0c;传送门 1、问题的起源 在电商等业务中&#xff0c;系统一般由多个独立的服务组成&#xff0c;如何解决分布式调用时候数据的一致性&#xff1f; 具体业务场景如下&#xff0c;比如一个业务操作&#xff0c;如果同时调用服务 A、B…

15年来这8门编程语言位置十分稳定,C#从低谷开始爬升

TIOBE 编程语言排行榜 10 月份的榜单已公布&#xff0c;这期的标题比较有趣 —— “Top 8 of the TIOBE index quite stable for the last 15 years”&#xff0c;意思就是排名前 8 的编程语言在这 15 年里一直都十分稳定。有多稳定呢&#xff1f;根据 TIOBE 统计的数据&#x…

Dubbo相关

mark http://ifeve.com/dubbo-learn-book/ http://dubbo.apache.org/zh-cn/ Dubbo架构图 框架分层架构中&#xff0c;各个层次的设计要点&#xff1a; 服务接口层&#xff08;Service&#xff09;&#xff1a;该层是与实际业务逻辑相关的&#xff0c;根据服务提供方和服务消费…

同时支持EF+Dapper的混合仓储,助你快速搭建数据访问层

背景17年开始&#xff0c;公司开始向DotNet Core转型&#xff0c;面对ORM工具的选型&#xff0c;当时围绕Dapper和EF发生了激烈的讨论。项目团队更加关注快速交付&#xff0c;他们主张使用EF这种能快速开发的ORM工具&#xff1b;而在线业务团队对性能有更高的要求&#xff0c;他…

Dubbo——增强SPI的实现

一、前言 在Duboo剖析-整体架构分析中介绍了dubbo中除了Service 和 Config 层为 API外&#xff0c;其他各层均为SPI&#xff0c;为SPI意味着下面各层都是组件化可以被替换的&#xff0c;这也是dubbo比较好的一点。 二、JDK中标准SPI JDK 中的 SPI&#xff08;Service Provider…

【 .NET Core 3.0 】框架之二 || 后端项目搭建

前言至于为什么要搭建.Net Core 平台&#xff0c;这个网上的解释以及铺天盖地&#xff0c;想了想&#xff0c;还是感觉重要的一点&#xff0c;跨平台&#xff0c;嗯&#xff01;没错&#xff0c;而且比.Net 更容易搭建&#xff0c;速度也更快&#xff0c;所有的包均由Nuget提供…

怎样打造一个分布式数据库

本文来自&#xff1a;https://www.infoq.cn/article/how-to-build-a-distributed-database 文章写得很好&#xff0c;备份防丢失 在技术方面&#xff0c;我自己热衷于 Open Source&#xff0c;写了很多 Open Source 的东西&#xff0c;擅长的是 Infrastructure 领域。Infrastru…