现代DDoS对抗技术概述(翻译/转载)

文章目录
  1. 1. 0x00 前言
  2. 2. 0x01 DDoS攻击的类型和方法
    1. 2.1. Volumetric attacks(大流量攻击)
    2. 2.2. Protocol attacks(协议攻击)
    3. 2.3. Application attacks(应用层攻击)
    4. 2.4. Zero-day DDoS attacks
  3. 3. 0x02 检测DDoS攻击
  4. 4. 0x03 如何实现一个有效的DDoS对抗方案
    1. 4.1. 阻止DDoS攻击
  5. 5. 0x04 保护Web应用免受DDoS攻击的最佳实践
  6. 6. 0x05 结论
  7. 7. 0x06 关于DDoS攻击的其他资料

0x00 前言

想象一下有人不停的给你打电话,并且你没办法通过加黑名单的方式阻止他,因为他每次都使用了不同的电话号码。你可能会关掉电话,但是这样其他人也不能联系你了,常见的分布式拒绝服务攻击就和这种情况类似。
早在乔布斯推出第一部IPhone之前,DDos攻击就已经出现了。因为DDos攻击攻击效果好、易于使用,并且很难追踪,现在依然非常受黑客喜欢。那么我们如何能够防御DDoS攻击呢?在DDOS攻击面前,你能确保为你的web服务器及应用提供高水平的防护么?在本文中我们将讨论如何防止DDoS攻击并介绍一些实践有效的DDoS保护和防御技术。

0x01 DDoS攻击的类型和方法

分布式拒绝服务攻击,简称DDoS是一种旨在使受害者的资源无法使用的协同攻击技术。它可以由一个团队黑客合作发起攻击,也可以由多个连接到互联网上的受害设备发起。这些受攻击者控制的设备通常也被称为僵尸网络。
很多工具都可以发起DDoS攻击,Trinoo, Stacheldraht, Shaft, Knight, Mstream等。有这么多易用的工具也是DDoS攻击如此流行的原因之一。




一次DDoS攻击可能会持续几分钟到几个小时甚至几天。卡巴斯基的报告显示,最近几年持续最长的一次DDos攻击发生在2018年1月,总共持续了近300小时。
发起DDoS攻击有两种常见的方法:

  • 利用软件漏洞:黑客可以对有已知或未知的漏洞的软件发送恶意数据包试图使受害者的系统瘫痪。
  • 消耗受害者主机资源或则网络带宽资源:黑客可以发送大量看起来合法的数据包,从而消耗受害者的网络带宽、CPU或内存直至受害系统无法正常处理合法用户的请求。

尽管没有DDoS的标准分类,但是我们可以将他们分为四大类:

  • Volumetric (volume-based)攻击
  • Protocol attacks
  • Application attacks
  • Zero-day attacks

    DDos攻击常见分类

    现在我们具体看看每种类型的攻击。

Volumetric attacks(大流量攻击)

Volumetric attacks试图通过大量的数据量大的网络数据包阻止系统正常的网络访问,通常借助僵尸网络及流量放大技术发起攻击,最常见的Volumetric attacks如下:

  • UDP flood:黑客伪造UDP数据包中的源地址为受害主机发送到大量主机随机端口,这些主机会生成大量的应答包返回给受害主机。
  • ICMP flood:黑客通过大量的ICMP数据包或则ping,试图耗尽受害服务器的带宽。
    在2018年,Netscout报告了迄今为止流量最大的一次DDoS攻击,一家美国服务提供商面临1.7 Tbps规模的reflection/amplification攻击。

Protocol attacks(协议攻击)

根据Versign发布的2018年第一季度DDoS攻击趋势报告,Protocol attacks是通过利用网络协议工作机制弱点进行攻击的一种方式,是第二常见的DDoS攻击方式。常见的Protocol attacks攻击方式如下:

  • SYN flood:黑客利用TCP协议三次握手协议缺陷。客户端发送SYN包给服务端,收到服务端的SYN-ACK包后,不发送ACK包给服务端。这样受害服务器上会留下大量未完成的SYN-ACK请求,从而使得受害服务器资源耗尽(CPU 满负载或内存不足),最终停止服务。
  • Ping of death:黑客通过ping命令发送超大的网络数据包导致受害主机系统服务中断或则崩溃。
    SYN flood攻击是2014年用于摧毁在线赌博网站最常使用的5种攻击向量之一

Application attacks(应用层攻击)

Application attacks利用了网络协议栈第6、7层中的弱点,针对特定的应用而不是整个服务器进行攻击,他们常见的目标端口和服务是DNS和HTTP服务。最常见的Application attacks攻击如下:

  • HTTP flood:攻击者使用僵尸网络发起标准的大流量的GET和POST请求,由于这些请求看起来是合法的流量,因此检测HTTP flood攻击将是一个巨大的考验。
  • Slowloris:如名称一样,Slowloris攻击将使受害服务器响应异常缓慢。攻击者通过一定的时间间隔发送HTTP到受害服务器,服务器将一直等待这些请求这些不可能完的请求结束,最终这些不能完成的请求造成受害主机带宽耗尽,合法请求也不能正常到达。
    2009年大选期间,高级黑客通过Slowloris关闭了伊朗政府网站。

Zero-day DDoS attacks

除了上面这些常见的攻击之外,还存在所谓的Zero-day DDoS attacks,黑客们利用未知的或则未修复的软件漏洞、不常见的攻击向量等完成攻击,因此这种攻击更难检测和防御。例如2016年,攻击者利用Lightweight Directory Access协议(LDAP) 发起了放大系数高达55倍的攻击。
下面我们谈谈如何检测DDoS攻击

0x02 检测DDoS攻击

虽然无法完全阻止DDoS攻击,但是有一些有效的做法可以帮助您检测并阻止已经在进行的DDoS攻击。

  • 异常检测:基于统计的模型和机器学习算法(如神经网络、决策树、邻近算法)可以用来分析网络流量,将网络流量区分为正常流量和DDoS攻击。同时你也可以通过其他网络性能因素,如CPU使用率/带宽使用等情况发现异常。

  • Knowledge-based方法:使用signature analysis,state transition analysis,expert systems,description scripts及 self-organizing maps方法,可以通过将流量与已知攻击的特定模式进行比较来检测DDoS。

  • 访问控制和防火墙规则:除了入口/出口流量过滤之外,访问控制列表(ACL)和防火墙规则可用于增强网络流量的可观察性。特别是,您可以分析ACL日志了解哪些流量通过了你的网络设备。您还可以配置Web应用程序防火墙,以根据特定的规则,签名和模式阻止可疑的流量。

  • 入侵检测和报警系统:入侵防御系统(IPS)和入侵检测系统(IDS)也提高的流量的可观察性。尽管误报率很高,但是IPS和IDS警报可以作为异常和潜在恶意流量的早期指示。

尽早检测到正在进行的攻击可以帮助您减轻其后果。这样,你就可以采取适当的预防措施来防御DDoS攻击,使攻击者很难完全使你的服务器宕机。使用有效的反DDoS解决方案是这些措施之一。

0x03 如何实现一个有效的DDoS对抗方案

无论您是要创建自己的反DDoS解决方案,还是要为Web应用程序寻求商业化的DDoS攻击防护系统,请牢记下面几点要求:

  • 混合DDoS检测方法:基于签名和基于异常的检测方法的组合是检测不同类型的DDoS攻击的关键。
  • 防御网络栈中第3-4层及6-7层的攻击:如果你的防御方案可以检测并缓解所有三种主要的DDoS攻击,则是比较有效的:volumetric, application及protocol。
  • 有效的流量过滤:DDoS保护的最大难题之一是如何有效区分恶意请求和合法请求。很难创建有效的过滤规则,因为DDoS攻击所涉及的大多数请求看起来都是来自合法用户。如速率限制之类的流行方法通常会产生很多误报,影响合法用户访问你的服务和应用程序。
  • SIEM集成:最重要的是您的反DDoS方案必须与SIEM系统很好地集成在一起,以便您可以收集有关攻击的信息,进行分析,然后使用它来改善DDoS防护方案,防止以后的同类攻击。
    如果满足这些要求对您来说挑战太大,请考虑向专家寻求帮助。您需要一支经验丰富的开发人员团队,对网络安全,云服务和Web应用程序有深刻的了解,才能构建高质量的反DDoS解决方案。像这样的团队可能很难在内部组建团队,但是您始终可以寻求诸如Apriorit之类​​的第三方寻求帮助。

    阻止DDoS攻击




    即使您无法阻止DDoS攻击的发生,但也有能力使攻击者很难使你的应用或则服务宕机。这就是DDoS预防技术开始起作用的地方。您可以使用两种DDoS预防机制:常规防护机制和过滤技术。
    常规防护机制是一些常见的措施,可以帮助你的服务或则应用在面对DDoS攻击时更具灵活性,防护机制包括:
  • 使用防火墙:尽管防火墙无法保护您的应用或服务器免受复杂的DDoS攻击,但它们仍可以有效地处理简单的攻击。
  • 经常更新安全补丁:大多数攻击都针对特定的软件或硬件漏洞,因此,及时部署所有补丁程序可以帮助您降低遭受攻击的风险。
  • 关闭不必要的服务:黑客能攻击到的应用和服务越少越好。确保禁用所有不需要和未使用的服务和应用,以提高网络的安全性。
    过滤技术使用不同的方法来过滤流量并阻止潜在的危险请求。这些技术包括入口/出口过滤,基于历史的IP过滤和基于路由器的数据包过滤。

0x04 保护Web应用免受DDoS攻击的最佳实践

除了特定的DDoS预防机制之外,还有几种实践可以帮助您确保对Web应用程序的附加DDoS保护:

  • 减少可能被攻击脆弱点个数:除非确实需要,否则不要公开您的应用和资源。这样,您可以减少攻击者可能针对的基础架构中的薄弱环节攻击的风险。您还可以禁止直接访问数据库服务器及基础架构的其他关键资源的操作。
  • 增加负载:考虑使用负载平衡器和CDN,通过均衡资源负载来减轻攻击的影响,以便即使在攻击过程中也可以保持服务可用状态。
  • 选择靠谱的云服务提供商:寻找具有DDoS缓解策略的可信赖的云服务提供商。确保他们的策略可确保检测和缓解基于protocol,基于Volume和基于application的攻击。例如,一些云提供商使用anycasting网络在具有相同IP地址的多台计算机之间分配大量请求,缓解负载。
  • 使用第三方DDoS缓解服务:考虑将Web应用程序的保护委托给第三方供应商。DDoS缓解服务甚至可以在恶意的流量到达受害者的网络之前就将其清除。您可以寻找一种基于DNS的服务,该服务将恶意流量重定向,或者寻找一种基于边界网关协议的解决方案来处理持续的攻击。

0x05 结论

黑客不断使用和改进DDoS攻击,以干扰某些服务、商业基础设施、大企业设置公共和非盈利组织的工作。攻击的主要目的是耗尽受害者的资源并因此使其提供的服务、应用程序或则网站崩溃。
虽然无法完全阻止DDoS攻击的发生,但是有一些有效的DDoS攻击保护技术和方法可以增强您的基础设施抵御DDoS攻击并减轻后果。

0x06 关于DDoS攻击的其他资料

原文Modern DDoS Protection Techniques: An Overview
浅谈 DDoS 攻击与防御
常见 Web 安全攻防总结