在发生DDoS攻击的情况下,可以通过一些缓解技术来减少攻击对自身业务和服务的影响,从而在一定程度上保障业务正常运行。
缓解DDoS攻击的主要方法是对网络流量先进行稀释再进行清洗。

1.攻击流量的稀释

1.1 内容分发网络 CDN
CDN技术的初衷是提高互联网用户对网站静态资源的访问速度,由于分布式多节点的特点,它也能够对DDoS攻击的流量产生稀释的效果。
CDN在互联网范围内广泛设置多个节点作为代理缓存,并将用户的访问请求导向最近的缓存节点,以加快访问速度。
CDN使用智能DNS系统,一个域名对应一张IP地址表,当收到域名解析请求时,智能DNS会查看解析请求的来源,并给出地址表中距离请求来源最近的IP地址。
用户收到域名解析应答时,认为该CDN节点就是他请求的域名所对应的IP地址,并向该节点发起服务或资源请求。
CDN节点在收到用户的请求时,会在其存储的缓存内容中寻找用户请求的资源,如果找到,就直接将资源响应给用户,如果找不到,则作为代理服务器向源站请求资源并将结果缓存并返回给用户。
对于有大量静态资源的网站,使用CDN进行代理缓存能够大大减少源站的访问流量。
在发生DDoS攻击时,智能DNS会将来自不同位置的攻击流量分散到对应位置的CDN节点上,从而达到流量稀释的效果。
利用CDN技术只能稀释通过域名发起的DDoS攻击的流量,如果攻击者直接通过IP地址进行攻击,就不会经过智能DNS解析,也就无法稀释流量了。

1.2 任播 Anycast
Anycast技术是一种网络寻址和路由方法。通过使用它,多台提供特定服务的服务器可以使用相同的IP地址,客户端访问请求报文将会被IP网络路由到这一组服务器中最近的一台之上。
Anycast技术通常是通过在不同的节点处同时使用BGP协议向外声明同样的目的IP地址的方式实现的。
使用Anycast技术能够稀释DDoS攻击流量,在Anycast寻址过程中,流量会被导向最近的节点,攻击者不能对流量路径进行操控。
由于Anycast技术的高度可靠性,即使少数节点被DDoS攻击打垮,其周围客户端的请求也能够被快速地引导向其他可用的服务器,从而保证服务的高可用性。

2.攻击流量的清洗

2.1 IP信誉检查
IP信誉机制是指为互联网上的IP地址赋予一定的信誉值,那些过去或现在经常被作为僵尸主机发动DDoS攻击的IP地址会被赋予较低的信誉值。
当发生DDoS攻击时,流量清洗设备会对通过的网络流量进行IP信誉检查,优先丢弃信誉值低的IP地址所发来的数据包或建立的会话连接。
IP信誉检查的极端情况就是IP黑名单机制,如果数据包的来源存在于黑名单之中,则直接丢弃。
这种方式一般会造成较多的误报。

2.2 攻击特征匹配
多数情况下,发动DDoS攻击需要借助工具,为了提高发送请求的效率,攻击工具发出的数据包通常是由编写者伪造并固化到工具中的,因此一种攻击工具所发出的数据包载荷会具有一定的特征。
流量清洗设备可以将这些数据包载荷中的特征作为指纹,来识别工具所发出的攻击流量。
命中指纹特征的数据包会被丢弃。

2.3 速度检查与限制
一些攻击方法在数据包载荷上可能并不存在明显的特征,没有办法进行攻击特征匹配,但却在请求数据包发送的频率和速度上有着明显的异常。
这些攻击方法可以通过速度与限制来进行清洗。
例如在受到THC SSL DoS攻击时,会在同一个SSL会话中多次进行密钥协商,而正常情况下是不会这样的,因此当流量清洗设备发现SSL会话中密钥协商的次数超过了特定的值,就可以中断这个会话并将来源IP加入黑名单中。
再如受到Slowloris和POST慢速攻击时,客户端和服务器之间会以非常低的速率进行交互和数据传输,流量清洗设备在发现HTTP请求长时间没有完成传输时,就可以将会话中断。

2.4 TCP代理和验证
在一个TCP SYN请求到达流量清洗设备后,设备并不将它交给服务器,而是回复一个SYN+ACK响应,并等待客户端回复。
如果SYN请求来自合法用户,那么它会对SYN+ACK进行响应,这时流量清洗设备会代替用户与服务器建立TCP连接,之后合法用户和服务器之间就通过流量清洗设备进行通信。
而如果SYN请求来自攻击者,它通常不会对SYN+ACK进行响应,从而形成半开连接。流量清洗设备会暂时保留半开连接,在经过短暂超时后丢弃它。
相比于服务器,流量清洗设备对连接表进行了优化,能够处理极其庞大的连接请求,因此即使有非常多的SYN请求同时涌向清洗设备,它也能够处理。
在此过程中,服务器并没有消耗任何连接资源,因此保证了服务器的性能不受影响。

2.5 协议完整性验证
为了提高发送攻击请求的效率,大多数的攻击方法都只会发送攻击请求,而不接收和处理服务器的响应数据。
因此,如果能够对请求来源进行交互式验证,就可以检查请求来源协议实现的完整性。对于协议实现不完整的请求来源,通常可以丢弃其数据包。
例如对于提供HTTP服务的Web服务器,可以使用302重定向来验证请求来源是否完整实现了HTTP协议。
HTTP状态码302表示请求的资源被临时转移,并会给出一个转移后的地址。合法用户在接收到302重定向响应码后会顺着跳转地址寻找对应的资源,而攻击工具则不会进行跳转。
因此,攻击请求将会被流量清洗设备拦截并丢弃,Web服务器不会受到影响。

2.6 客户端真实性验证
一些攻击工具在开发过程中使用了第三方库,完整实现了协议交互功能。对于这些攻击工具,需要使用客户端真实性验证技术进行攻击流量清洗。
例如对于Web服务,可以通过检查客户端是否支持JavaScript来验证请求是否来自合法用户。
对于加入了JavaScript解析和执行功能的攻击工具,则需要使用验证码来进行识别。
对于无法解析JavaScript或无法识别验证码的请求,流量清洗设备可以丢弃它,从而保护Web服务器不受影响。

DDoS攻击与防御(4)的更多相关文章

  1. 通过DDOS攻击流程图来浅谈如何预防Ddos攻击与防御

    DDOS攻击流程图 站长之家配图(来源:ppkj.net) 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题 ...

  2. 浅谈 DDoS 攻击与防御

    浅谈 DDoS 攻击与防御 原创: iMike 运维之美  什么是 DDoS DDoS 是英文 Distributed Denial of Service 的缩写,中文译作分布式拒绝服务.那什么又是拒 ...

  3. DDoS 攻击与防御:从原理到实践

    本文来自 网易云社区 . 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁. 危害 根据卡巴斯基 2 ...

  4. DDoS 攻击与防御:从原理到实践(下)

    欢迎访问网易云社区,了解更多网易技术产品运营经验. DDoS 攻击与防护实践 DDoS 攻击的实现方式主要有如下两种: 自建 DDoS 平台 现在有开源的 DDoS 平台源代码,只要有足够机器和带宽资 ...

  5. DDoS 攻击与防御:从原理到实践(上)

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁 ...

  6. DDOS攻击与防御简单阐述,列出DDOS的攻击方法和防御方法

    参考1:https://www.hi-linux.com/posts/50873.html#%E7%BD%91%E7%BB%9C%E5%B1%82-ddos-%E6%94%BB%E5%87%BB 什么 ...

  7. DDoS攻击与防御(3)

    3.攻击应用资源网络应用和服务在处理数据时,通常需要消耗一定的网络连接.计算和存储资源,这些资源是由应用程序向系统进行申请并自行管理和维护的.消耗应用资源的DDoS攻击就是通过向应用提交大量消耗资源的 ...

  8. DDoS攻击与防御(2)

    2.攻击系统资源终端设备在与服务器进行通信时,经常需要创建会话连接,在此过程中通常会使用TCP和SSL等协议.会话连接一旦被占满,新进入的会话请求就必须等待前面的会话完成.消耗系统资源的DDoS攻击的 ...

  9. DDoS攻击与防御(1)

    分布式拒绝服务攻击的精髓是,利用分布式的客户端,向服务提供者发起大量看似合法的请求,消耗或长期占用大量资源,从而达到拒绝服务的目的.从不同的角度看,分布式拒绝服务攻击的方法有不同的分类标准.依据消耗目 ...

随机推荐

  1. [TJOI2007] 调整队形

    题目链接 区间 DP 的经典模型之一. 题意是将整个串通过四种操作变成一个回文串,根据套路,不难设计出 dp[i][j] 表示为使区间 [i, j] 成为回文串的最少操作次数. 先判断 a[i] 是否 ...

  2. vegas 为盖斯

    vegas 为盖斯 S键 分割素材U键 分开视频和音频I键渲染开始O渲染结束 默认布局 为盖斯新建项目的参数 剪好后渲染 插入字幕

  3. GO语言系列(五)- 结构体和接口

    结构体(Struct) Go中struct的特点 1. 用来自定义复杂数据结构 2. struct里面可以包含多个字段(属性) 3. struct类型可以定义方法,注意和函数的区分 4. struct ...

  4. Go语言系列(六)- 接口和反射

    接口 1. 定义: Interface类型可以定义一组方法,但是这些不需要实现.并且interface不能包含任何变量. type example interface{ Method1(参数列表) 返 ...

  5. 使用 gzexe 快速加密解密文件内容

    使用 gzexe 快速加密解密文件内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用sshpass工具编写远程管理脚本 1>.安装依赖包 [root@node101 ...

  6. 老男孩Python全栈学习 S9 日常作业 005

    1.有如下变量,请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age& ...

  7. ArcGis Python脚本——根据接图表批量裁切分幅影像

    年前写了一个用渔网工具制作图幅接图表的文章,链接在这里: 使用ArcMap做一个1:5000标准分幅图并编号 本文提供一个使用ArcMap利用接图表图斑裁切一幅影像为多幅的方法. 第一步,将接图表拆分 ...

  8. [物理学与PDEs]第4章习题3 一维理想反应流体力学方程组的数学结构

    证明: Euler 坐标系下的一维反应流体力学方程组 (3. 10)-(3. 13) 也是一个一阶拟线性双曲型方程组. 证明: 由 (3. 10), (3. 12), (3. 13) 知 $$\bex ...

  9. INI配置文件的格式

    为什么要用INI文件?如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要 ...

  10. python 实现简单卷积网络框架

    第一步定义卷积核类: class Filter(object): # 滤波器类 对卷积核进行初始化 def __init__(self,width,height,depth): # initializ ...