在发生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. 学习Spring Boot:(十五)使用Lombok来优雅的编码

    前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 正文 添加依赖 在 pom.xml ...

  2. Luogu P4643 【模板】动态dp

    题目链接 Luogu P4643 题解 猫锟在WC2018讲的黑科技--动态DP,就是一个画风正常的DP问题再加上一个动态修改操作,就像这道题一样.(这道题也是PPT中的例题) 动态DP的一个套路是把 ...

  3. wiki

    GRANT ALL PRIVILEGES ON confluence.* TO 'confluence'@'localhost' IDENTIFIED BY '%SaRK%TDpU#CyT6i';

  4. nginx安装访问

    依赖包安装: 安装gcc gcc-c++: yum -y install gcc gcc-c++ autoconf automake 安装pcre: yum -y install pcre pcre- ...

  5. 让WinSCP和Putty一直保持连接

    转: 让WinSCP和Putty一直保持连接 2015年08月14日 01:08:19 zcczbq 阅读数:13173 标签: puttywinscp 更多 个人分类: Operation   版权 ...

  6. pytest 11 allure2生成html报告

    allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 1.pyt ...

  7. Redis知识整理

    Redis知识整理 转自:https://www.cnblogs.com/rjzheng/p/9096228.html 1.单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返 ...

  8. CMDB服务器管理系统【s5day88】:采集资产之Agent、SSH和Salt模式讲解

    在对获取资产信息时,简述有四种方案. 1.Agent  (基于shell命令实现) 原理图 Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库 优点: ...

  9. sublime中编译的sass如何改变css输出风格?【这里有答案】

    由于在网上找了一遍没找到如果在sublime中将sass编译的css转换成为自己喜欢的风格,所以换了一种思路搜索到了答案,这里我将讲述如果更改. 首先sass总共有四种编译风格 (1) nested( ...

  10. Spring的事务机制

    ---恢复内容开始--- 内定的=>(只需要在xml 中添加一个bean) 在xml 中添加 <bean id="listener" class="com.t ...