可怕的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. fedora 26

    图标文件路径: /home/xiezhiyan/.local/share/applications

  2. ZOJ 3795 Grouping(scc+最长路)

    Grouping Time Limit: 2 Seconds      Memory Limit: 65536 KB Suppose there are N people in ZJU, whose ...

  3. CTU OPEN 2017 Ice cream samples /// 尺取法

    题目大意: 给定n k 接下来n行 给定n个摊位的冰淇淋信息 首先给一个t 表示这个摊位有t个冰淇淋 接下来t个数表示对应冰淇淋的品种 走到连续的几个摊位 会买下走过的摊位的所有的冰淇淋 求 要买下所 ...

  4. Oracle中常见的Hint(一)

    Oracle中的Hint可以用来调整SQL的执行计划,提高SQL执行效率.下面分类介绍Oracle数据库中常见的Hint.这里描述的是Oracle11gR2中的常见Hint,Oracle数据库中各个版 ...

  5. Pytest conftest共享数据及不同层次共享

    数据共享:在 conftest.py配置里写方 法可以实现数据共享, 不需要import导入.可 以跨文件共享 1.建立一个新的文件,文件名必须叫"conftest.py",然后写 ...

  6. 微信小程序生命周期、页面生命周期、组件生命周期

    1. 生命周期 App(全局) 位置:项目根目录app.js文件 App({ onLaunch (options) { // console.log('小程序初始化') }, onShow(optio ...

  7. 结对编程收获——UI真的没有那么简单

    结对编程收获——UI真的没有那么简单                                                      詹元成 初看作业要求,心里还有一点欣喜,不就是做一个UI ...

  8. tac - 反转显示文件

    总览 (SYNOPSIS) ../src/tac [OPTION]... [FILE]... 描述 (DESCRIPTION) 把 每个 文件 FILE 显示在 标准输出, 后面 的 行 放在 前面. ...

  9. slim.arg_scope()的使用

    [https://blog.csdn.net/u013921430 转载] slim是一种轻量级的tensorflow库,可以使模型的构建,训练,测试都变得更加简单.在slim库中对很多常用的函数进行 ...

  10. Atcoder arc093

    D-Grid Components 在一个100*100的网格图上染色,问黑格四连通块的个数为A,白格四连通块的个数为B的一种构造方案?(A,B<=500) 将整个平面分成50*100的两部分, ...