可怕的DDOS怎么预防

分布式拒绝服务(DDoS: distributed denial-of-service)攻击是恶意破坏目标服务器、服务或网络的正常通信量的企图,其方法是用大量Internet通信量淹没目标或其周围的基础设施。DDoS攻击通过利用多个受损的计算机系统作为攻击流量的来源来达到有效性。被利用的机器可以包括计算机和其他网络资源,如物联网设备。从高层来说,DDoS攻击就像堵塞高速公路的交通堵塞,阻止常规交通到达它想要的目的地。

DDoS攻击是怎么工作的?

DDoS攻击要求攻击者获得对在线计算机网络的控制,以便进行攻击。电脑或者其他机器(如物联网设备)被恶意软件感染,每台电脑都变成了僵尸。然后攻击者就可以远程控制这群被称为僵尸网络的机器人。

一旦建立了僵尸网络,攻击者就可以通过远程控制的方法向每个机器人发送更新的指令,从而指导机器人。当僵尸网络攻击受害者的IP地址时,每个机器人都会向目标发送请求,这可能导致目标服务器或网络溢出容量,导致对正常流量的拒绝服务。因为每个机器人都是一个合法的互联网设备,所以很难将攻击流量与正常流量分开。

DDoS攻击的常见类型是什么?

不同的DDoS攻击向量针对不同的网络连接组件。为了了解不同的DDoS攻击是如何工作的,有必要了解网络连接是如何建立的。Internet上的网络连接由许多不同的组件或“层”组成。就像从头开始建造房子一样,模型中的每一步都有不同的目的。OSI模型,如下图所示,是一个概念框架,用来描述网络连接在7个不同的层。

虽然几乎所有的DDoS攻击都涉及用流量淹没目标设备或网络,但攻击可以分为三类。攻击者可能利用一个或多个不同的攻击向量,或基于目标采取的对抗措施的循环攻击向量。

应用层攻击(Application Layer Attacks)

攻击目标:

有时被称为第7层DDoS攻击(参照OSI模型的第7层),这些攻击的目标是耗尽目标的资源。攻击针对的是在服务器上生成并响应HTTP请求交付web页面的层。在客户端执行一个HTTP请求很便宜,而且目标服务器响应起来也很昂贵,因为服务器通常必须加载多个文件并运行数据库查询才能创建web页面。第7层攻击很难防御,因为流量很难标记为恶意的。

应用层攻击实例:

HTTP Flood

这种攻击类似于在web浏览器中一次又一次地在许多不同的计算机上按下refresh——大量的HTTP请求涌向服务器,导致拒绝服务。

这种类型的攻击范围从简单到复杂。更简单的实现可以使用相同范围的攻击IP地址、引用和用户代理访问一个URL。复杂版本可能会使用大量的攻击IP地址,并使用随机的引用器和用户代理来目标随机url。

协议攻击(Protocol Attacks)

攻击目标:

协议攻击(也称为状态耗尽攻击)通过消耗web应用服务器或防火墙和负载均衡器等中间资源的所有可用状态表容量,导致服务中断。协议攻击利用协议栈的第3层和第4层的弱点使目标无法访问。

协议攻击的例子:

SYN Flood

同步洪水类似于供应室的工作人员接收来自商店前面的请求。工作人员接收到请求,然后去获取包,并等待确认,然后再将包带到前面。然后,工作人员在没有确认的情况下得到更多的包请求,直到他们无法携带更多的包,变得不堪重负,请求开始无人应答。

这种攻击利用TCP握手,通过发送大量具有欺骗源IP地址的TCP“初始连接请求”SYN包给目标。目标机器响应每个连接请求,然后等待握手的最后一步,握手永远不会发生,这会耗尽目标的资源。

容量耗尽攻击(Volumetric Attacks)

攻击目标:

这类攻击试图通过消耗目标和大型Internet之间的所有可用带宽来造成拥塞。通过使用一种放大形式或另一种产生大量流量的方式(如僵尸网络的请求)将大量数据发送到目标。

放大的例子:

DNS Amplification

DNS扩增就像如果有人打电话给一家餐馆,说“我要一份套餐,请给我回电话,告诉我我的全部订单”,他们给出的回叫电话号码就是目标顾客的号码。只需很少的努力,就会产生长时间的响应。

通过向具有欺骗IP地址(目标的实际IP地址)的开放DNS服务器发出请求,目标IP地址然后从服务器接收响应。攻击者构造请求,使DNS服务器用大量数据响应目标。因此,目标接收攻击者初始查询的放大。

怎么才能减轻DDoS攻击?

减轻DDoS攻击的关键问题是区分攻击和正常通信量。例如,如果一个产品发布让一个公司的网站挤满了热切的客户,那么切断所有的流量就是一个错误。如果该公司突然有一个流量激增的已知不良演员,努力减轻攻击可能是必要的。难点在于区分真正的客户和攻击流量。

在现代互联网中,DDoS流量有多种形式。流量可以在设计上有所不同,从无欺骗的单源攻击到复杂的自适应多矢量攻击。多矢量DDoS攻击使用多种攻击路径,以不同的方式覆盖目标,可能分散在任何一条轨迹上的缓解工作。同时攻击协议栈的多个层,例如DNS放大(目标层3/4)和HTTP洪水(目标层7)是多向量DDoS的一个例子。

减轻多矢量DDoS攻击需要多种策略来对抗不同的轨迹。一般来说,攻击越复杂,流量就越难以从正常的流量中分离出来——攻击者的目标是尽可能地融入其中,使缓解的效率尽可能低。不加区别地减少或限制流量的缓解尝试可能会将好的流量与坏的流量一起抛弃,攻击也可能修改和适应以规避对策。为了克服破坏的复杂尝试,分层的解决方案将带来最大的好处。

黑洞的路由

几乎所有网络管理员都可以使用的一种解决方案是创建一个黑洞路由,并将流量引入该路由。最简单的形式是,当在没有特定限制条件的情况下实现黑洞过滤时,合法的和恶意的网络流量都被路由到空路由或黑洞并从网络中删除。如果一个互联网财产正在经历DDoS攻击,该财产的互联网服务供应商(ISP)可能发送所有的网站流量到一个黑洞作为防御。

速度限制

限制服务器在某个时间窗口内接受的请求数量也是减轻拒绝服务攻击的一种方法。虽然速率限制在减缓web抓取器窃取内容和减轻强制登录尝试方面很有用,但它本身可能不足以有效地处理复杂的DDoS攻击。然而,在有效的DDoS缓解策略中,速率限制是一个有用的组成部分。

Web应用程序防火墙

Web应用程序防火墙(WAF)是一种可以帮助减轻第7层DDoS攻击的工具。通过在Internet和原始服务器之间放置WAF, WAF可以充当反向代理,保护目标服务器免受某些类型的恶意通信。通过基于用于识别DDoS工具的一系列规则过滤请求,第7层的攻击可能会受到阻碍。有效WAF的一个关键价值是能够快速实现自定义规则以响应攻击。

Anycast网络扩散

这种缓解方法使用Anycast网络将攻击流量分散到分布式服务器网络上,直到网络吸收流量为止。就像将湍急的河流引导到单独的较小的通道上一样,这种方法将分布式攻击流量的影响分散到可以管理的地方,分散了任何破坏能力。Anycast网络减轻DDoS攻击的可靠性取决于攻击的大小以及网络的大小和效率。

原文地址:https://cloud.tencent.com/developer/news/373128

DDOS到底是什么,怎么预防,看看就明白了的更多相关文章

  1. 白话大数据 | Spark和Hadoop到底谁更厉害?

    要想搞清楚spark跟Hadoop到底谁更厉害,首先得明白spark到底是什么鬼. 经过之前的介绍大家应该非常了解什么是Hadoop了(不了解的点击这里:白话大数据 | hadoop究竟是什么鬼),简 ...

  2. TCP/IP具体解释--三次握手和四次握手 Dos攻击

    TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...

  3. Linux性能优化实战学习笔记:第三十九讲

    一.上节回顾 上一节,我带你学习了 tcpdump 和 Wireshark 的使用方法,并通过几个案例,带你用这两个工具实际分析了网络的收发过程.碰到网络性能问题,不要忘记可以用 tcpdump 和W ...

  4. 详细分析Android viewpager 无限循环滚动图片

    由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了, ...

  5. fir.im Weekly - 除了写代码,还需要了解什么

    雾霾天,宜撸代码.吹牛,不宜出门约会(¬_¬)ノ 本期 fir.im Weekly 亦如往期,收集了优秀的  iOS/Android 开发资源,GitHub 源码.前端方面的热点分享.除了代码,也许你 ...

  6. git 教程(5)--工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 工作区(working directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区: 版本库 ( ...

  7. <转>一个最不可思议的MySQL死锁分析

    1 死锁问题背景 1 1.1 一个不可思议的死锁 1 1.1.1 初步分析 3 1.2 如何阅读死锁日志 3 2 死锁原因深入剖析 4 2.1 Delete操作的加锁逻辑 4 2.2 死锁预防策略 5 ...

  8. git(工作区,暂存区,管理修改,撤销修改,删除文件)

    工作区和暂存区 984次阅读 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的l ...

  9. 随手小记(es6)

    在学习前辈阮一峰大神写的<ECMAScript入门>一书的过程中,第九章中讲到对象扩展时,第一条我就有点看不懂 ES6允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. v ...

随机推荐

  1. Spingboot整合Redis,用注解(@Cacheable、@CacheEvict、@CachePut、@Caching)管理缓存

    背景:项目从头开始,需结合Springboot和Redis 需求:用注解管理缓存 方法:     一.用Redis取代Springboot原有缓存 1.pom引入依赖     2.applicatio ...

  2. zoom:1总结

    zoom:1确实帮我们解决了不少ie下的bug,但是它的来龙去脉,又有多少人知道呢? 所以我老生常谈,说一下它的来龙去脉. Zoom属性是IE浏览器的专有属性, 它可以设置或检索对象的缩放比例.先来一 ...

  3. SpringBoot集成Thymeleaf模板

    1.添加起步依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  4. SpringMVC学习(4):数据绑定1 @RequestParam

    在系列(3)中我们介绍了请求是如何映射到一个action上的,下一步当然是如何获取到请求中的数据,这就引出了本篇所要讲的内容-数据绑定. 首先看一下都有哪些绑定数据的注解: 1.@RequestPar ...

  5. Codeforces 251C Number Transformation DP, 记忆化搜索,LCM,广搜

    题意及思路:https://blog.csdn.net/bossup/article/details/37076965 代码: #include <bits/stdc++.h> #defi ...

  6. 6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]

    题目 题目大意 给你一个数列,每次可以选择任意两个相邻的数\(x\)和\(y\),将其删去,并在原来位置插入\(x+2y\). 每次询问一个区间,对这个区间进行上述操作.求最后剩下的数最大是多少. 答 ...

  7. Windows API 查看器

    { http://www.dependencywalker.com/ } { Download the latest version here:  Download Version 2.2.6000 ...

  8. Ubuntu 18.04 安装 python3.7

    Ubuntu 18.04系统内置了Python 3.6和Python 2.7版本,以下是在Ubuntu 18.04系统中安装Python 3.7版本的方法. 1. 执行所有升级# sudo apt u ...

  9. 关于if else 和 三目运算符的效率问题-java

    1.从类型转换上看,因为三目运算符在做判断的时候需要考虑到类型转换的问题,而if else 不需要考虑类型转换. 所以 if else 效率高一点. 2.从总体上看 A:需要考虑到循环自身所占用的时间 ...

  10. delphi与javascript互通

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...