跳到内容

拒绝服务速查表

简介

本速查表描述了处理不同层级拒绝服务(DoS)攻击的方法。它也作为一个平台,用于进一步讨论和分析,因为执行DoS攻击的方式有很多种。

基础知识

由于抗DoS方法不能一蹴而就,您的开发人员和应用程序/基础设施架构师必须仔细开发DoS解决方案。他们必须牢记“可用性”是 CIA 三元组 的基本组成部分。

请记住,如果互操作流中计算系统的每个部分未能正确运行,您的基础设施将遭受损失。成功的DoS攻击会阻碍系统对实例或对象的可用性,并最终可能导致整个系统无法访问。

为确保系统能够抵御DoS攻击并保持弹性,我们强烈建议根据功能、架构和性能(即应用程序、基础设施和网络相关)对您的库存组件进行彻底分析。

DDOSFlow

此DoS系统清单应查找DoS攻击可能导致问题的潜在位置,并突出任何系统单点故障,这可能包括编程错误到资源耗尽。它应该为您提供一个清晰的问题图景(例如瓶颈等)。要解决问题,深入了解您的环境对于开发合适的防御机制至关重要。这些机制可以与以下方面保持一致:

  1. 扩展选项(向上 = 内部硬件组件,向外 = 完整组件的数量)。
  2. 现有的概念/逻辑技术(例如应用冗余测量、舱壁隔离等——这将扩展您的内部能力)。
  3. 应用于您情况的成本分析。

本文件采用CERT-EU的特定指导结构来分析本主题,您可能需要根据实际情况进行修改。这不是一个完整的方法,但它将帮助您创建基本模块,这些模块应被用于协助您构建符合您需求的抗DoS概念。

分析DoS攻击面

在此速查表中,我们将使用CERT-EU文档中描述的DDOS分类来检查DoS系统漏洞。它采用七层OSI模型,并聚焦于三个主要攻击面,即应用层、会话层和网络层。

1) 潜在DoS弱点概述

重要的是要理解,在设计具有DoS弹性的解决方案时,需要考虑这三种攻击类别中的每一种

应用层攻击 旨在通过耗尽资源或使其无法正常运行来使应用程序不可用。

会话(或协议)攻击 旨在消耗服务器资源,或防火墙和负载均衡器等中间设备的资源。

网络(或容量)攻击 旨在使网络资源的带宽饱和。

请注意,OSI模型的第1层和第2层不包括在此分类中,因此我们现在将讨论这些层以及DoS如何应用于它们。

物理层由网络的网络硬件传输技术组成。它是网络中高层功能的逻辑数据结构的基础层。涉及物理层的典型DoS场景包括系统破坏、阻碍和故障。例如,一名格鲁吉亚老年妇女切断了地下电缆,导致整个亚美尼亚失去互联网。

数据层是协议层,用于在广域网(WAN)中相邻网络节点之间或同一局域网(LAN)段上的节点之间传输数据。典型的DoS场景是MAC泛洪(针对交换机MAC表)和ARP欺骗。

MAC泛洪攻击中,交换机被所有具有不同源MAC地址的数据包淹没。这种攻击的目标是消耗交换机用于存储MAC和物理端口转换表(MAC表)的有限内存,这会导致有效的MAC地址被清除,并迫使交换机进入故障转移模式,从而成为网络集线器。如果发生这种情况,所有数据都会转发到所有端口,导致数据泄露。

[未来对速查表的补充:与DoS相关的影响和文档紧凑修复]

ARP欺骗攻击中,恶意行为者通过网络发送伪造的ARP(地址解析协议)消息。如果攻击者的MAC地址与网络上合法设备的IP地址相关联,攻击者就可以截获、修改或停止原本 intended for 受害IP地址的数据。ARP协议是局域网特有的,可能导致线缆通信上的DoS。

数据包过滤技术可用于检查传输中的数据包,以识别并阻止有害的ARP数据包。另一种方法是使用静态ARP表,但它们维护起来很困难。

应用层攻击

应用层攻击通常通过耗尽系统资源或使其功能失常来使应用程序不可用。这些攻击无需消耗网络带宽即可生效。相反,它们对应用服务器施加操作压力,导致服务器变得不可用、无法使用或功能失常。所有利用OSI第7层协议栈漏洞的攻击通常被归类为应用层攻击。它们是最难识别/缓解的。

[未来对速查表的补充:列出每个类别的所有攻击。因为我们不能将修复措施与攻击向量一一对应,所以我们需要先列出它们,然后再讨论行动要点。]

慢速HTTP攻击以非常慢且分段的方式,一次一个地发送HTTP请求。在HTTP请求完全交付之前,服务器将一直保持资源停滞,等待缺失的传入数据。在某个时刻,服务器将达到最大并发连接池,从而导致DoS。从攻击者的角度来看,慢速HTTP攻击成本低廉,因为它们需要最少的资源。

软件设计概念

  • 首先使用资源消耗低的验证:我们希望尽快减少对这些资源的影响。之后再执行更(CPU、内存和带宽)昂贵的验证。
  • 采用优雅降级:这是应用程序设计阶段需要遵循的核心概念,以限制DoS的影响。当系统或应用程序的某些部分出现故障时,您需要保持一定程度的功能。DoS的主要问题之一是它会导致整个系统中应用程序突然和 abrupt 中止。容错设计使系统或应用程序能够继续其预期操作,可能是在降低的水平上,而不是在系统部分故障时完全失败。
  • 防止单点故障:检测和防止单点故障(SPOF)是抵御DoS攻击的关键。大多数DoS攻击都假设系统存在SPOF,这些SPOF会因系统过载而崩溃。我们建议您采用无状态组件,使用冗余系统,创建隔离舱以阻止故障在基础设施中蔓延,并确保当外部服务失败时系统能够继续运行。预防
  • 避免高CPU消耗操作:当发生DoS攻击时,那些倾向于使用大量CPU资源的操作可能会严重拖累系统性能,并可能成为故障点。我们强烈建议您审查代码中的性能问题,包括您正在使用的语言固有的问题。参见Java JVM-IBMMicrosoft-IIS
  • 处理异常:当发生DoS攻击时,应用程序很可能会抛出异常,因此您的系统能够优雅地处理这些异常至关重要。同样,DoS攻击假设一个超载的系统将无法以系统可以继续运行的方式抛出异常。我们建议您检查您的代码,确保异常得到妥善处理。参见大型系统 JavaJava
  • 保护溢出和下溢 由于缓冲区溢出和下溢经常导致漏洞,因此学习如何预防它们是关键。OWASP 溢出-下溢-C 溢出
  • 线程:避免需要等待大型任务完成才能继续的操作。异步操作在这种情况下很有用。
  • 识别资源密集型页面并提前规划。

会话

  • 根据非活动时间和最终超时限制服务器端会话时间:(资源耗尽)虽然会话超时通常与会话安全和防止会话劫持相关,但它也是防止资源耗尽的重要措施。
  • 限制会话绑定信息存储:会话关联的数据越少,用户会话对Web服务器性能的负担就越小。

输入验证

  • 限制文件上传大小和扩展名:此策略可防止文件存储空间或将上传作为输入的其他Web应用程序功能(例如图像大小调整、PDF创建等)发生DoS攻击(资源耗尽)-清单
  • 限制总请求大小:使资源消耗型DoS攻击更难成功。(资源耗尽)
  • 防止基于输入的资源分配:同样,为了使资源消耗型DoS攻击更难成功。(资源耗尽)
  • 防止基于输入的函数和线程交互:用户输入可以影响函数需要执行的次数,或者CPU消耗的强度。依赖(未过滤的)用户输入进行资源分配可能导致通过资源耗尽的DoS场景。(资源耗尽)
  • 基于输入的谜题,如验证码或简单的数学问题,常用于“保护”网络表单。经典的例子是提交请求后会发送电子邮件的网络表单。验证码可以防止邮箱被恶意攻击者或垃圾邮件机器人泛滥。谜题旨在防止功能滥用,但这种技术无助于防御DoS攻击。

访问控制

  • 认证作为公开功能的一种手段:最小权限原则在防止DoS攻击中发挥关键作用,它通过拒绝攻击者使用DoS技术访问可能造成损害的功能。
  • 用户锁定是一种场景,攻击者可以利用应用程序安全机制,通过滥用登录失败来导致DoS。

网络攻击

有关网络攻击的更多信息,请参阅

Juniper eSecurityPlanet

[未来速查表补充:讨论网络带宽饱和的攻击。容量型攻击。放大技术使这些攻击有效。列出攻击:NTP放大、DNS放大、UDP泛洪、TCP泛洪]

网络设计概念

  • 防止单点故障:参见上文。
  • 缓存:数据存储的概念,以便未来对该数据的请求能够更快地得到服务。通过缓存服务的数据越多,应用程序对带宽耗尽的弹性就越强。
  • 在不同域名上托管静态资源将减少网络应用程序上的HTTP请求数量。图像和JavaScript是通常从不同域名加载的文件。 

速率限制

速率限制是控制服务器或组件进出流量速率的过程。它可以在基础设施层面和应用层面实施。速率限制可以基于(违规)IP、IP黑名单、地理位置等。

  • 定义最小入站数据速率限制,并丢弃低于该速率的所有连接。请注意,如果速率限制设置过低,可能会影响客户端。检查日志以建立真实流量速率的基线。(防止慢速HTTP攻击)
  • 定义一个绝对连接超时
  • 定义最大入站数据速率限制,然后丢弃高于该速率的所有连接。
  • 定义总带宽大小限制以防止带宽耗尽
  • 定义负载限制,它指定在任何给定时间允许访问任何给定资源的用户数量。

ISP级修复措施

  • 使用边缘路由器过滤无效的发送者地址,根据RFC 2267,过滤旨在绕过黑名单的IP欺骗攻击。
  • 事先检查您的ISP服务在DDOS方面的表现(支持多个互联网接入点,足够的带宽(xx-xxx Gbit/s)以及用于流量分析和应用层防御的专用硬件)

全球级修复措施:商业云过滤服务

  • 考虑使用过滤服务以抵御大规模攻击(高达500GBit/s)
  • 过滤服务支持不同的机制来过滤恶意或不合规的流量
  • 遵守相关数据保护/隐私法律 - 许多提供商通过美国/英国路由流量