AWS平台的DDoS攻击防御解决方案
前言
互联网上的DDoS攻击无处不在,游戏,互联网等大部分行业的客户也往往深受其害。本文主要介绍DDoS攻击的主要方式,AWS的基础设施和服务的介绍,以及如何利用AWS资源防范DDoS攻击,保护用户系统的安全。
一、什么是DDoS攻击
拒绝服务(简称 DoS)攻击是一类旨在令网站或者应用无法正常向最终用户进行服务交付的攻击活动。为实现这一目标,攻击者利用一系列技术手段大量消耗我们的网络或者其它资源,从而破坏合法最终用户的正常访问。而在分布式拒绝服务(简称 DDoS)攻击当中,攻击者会利用多个源以编排起规模更大的针对性攻击。
DDoS攻击常见于开放系统系统互连(简称 OSI)模型中的 3、4、6 与7层,如下表所示:
二、常见的DDoS攻击
UDP反射
最为常见的DDoS攻击——即用户数据报协议(简称 UDP)反射攻击。UDP是一种无状态协议,这使得攻击者能够伪造请求来源,从而对目标服务器造成更为严重的影响。而放大系数,即请求规模与响应规模之间的比例,则具体取决于所使用的协议——例如域名系统(简称DNS)、网络时间协议(简称NTP)、简单服务发现协议(简称SSDP)等等。攻击者可以利用此类方案生成庞大的流量,直接淹没网络或者系统的可承载容量。
SYN洪水
SYN洪水在规模上可达到数十 Gbps,但其攻击目标在于消耗系统中的可用资源,即将连接一直保持在半开放状态。如图所示,当最终用户接入一项TCP服务时,例如一台Web服务器,则客户即发送一个SYN数据包。目标服务器将返回 SYN-ACK,此后客户端再返回 ACK 从而完成三方握手。 在SYN洪水当中,ACK永远不会返回,这意味着目标服务器会一直等待其响应。如此一来,新用户将无法正常接入该服务器。
SSL滥用
在通过安全嵌套层(简称 SSL)交付Web 应用的情况下,攻击者可以选择攻击SSL 协商过程。SSL 是一种高强度计算流程,这使得攻击者能够通过发送难以理解的数据影响目标服务器的可用性。此类攻击的其它变种还包括由攻击者争夺 SSL 握手,但永远停留在加密方法协商阶段。同样的,也有部分攻击者会选择不断打开并关闭大量 SSL 会话以耗尽服务器资源。
HTTP洪水
在HTTP洪水当中,攻击者发出的HTTP请求在表面上看似乎来自Web应用的真实用户。攻击者控制某些僵尸主机不停地发大量看似合法的HTTP GET或POST数据包请求Web服务器或Web应用,Web服务不得不去处理这些HTTP的请求数据,一旦目标服务器已满足请求并且无法响应正常流量,会造成目标服务器资源耗尽,一直到宕机崩溃,那么真正的用户的HTTP请求则无法处理。
三、AWS平台的DDoS防护
灵活调整实例
AWS的Amazon EC2具有灵活的计算容量调整能力,即允许大家根据实际要求快速实现实例规模伸缩。您可以通过Amazon CloudWatch 警报机制则可用于启动Auto Scaling,后者能够自动对Amazon EC2集群规模进行扩张,添加更多实例以实现水平扩展,亦可以使用规模更大的实例完成垂直扩展。部分实例类型还支持其它功能,例如包含10 Gigabit网络接口与增强网络,这能够改善您应对大规模流量的能力。
弹性负载均衡器
大规模DDoS攻击可能在规模上超出单一Amazon EC2 实例的承载范围。为了应对此类攻击,大家可能需要考虑以负载均衡方式进行流量分流。利用 Elastic Load Balancing(即弹性负载均衡,简称 ELB),您可以将应用程序流量分散至多个后端实例当中,从而降低其过载的风险。 ELB只接受格式良好的TCP 连接。这意味着大部分DDoS攻击,例如SYN洪水或者 UDP反射攻击会被ELB直接过滤掉,即无法触及您的应用程序。当ELB检测到此类攻击活动时,其会自动进行规模扩展以消化额外流量,而您完全无需承担任何额外费用。
Amazon CloudFront / Amazon WAF
Amazon CloudFront 是一项内容交付网络(简称 CDN)服务,允许大家缓存静态内容,并由AWS Edge Locations进行交付,从而降低原始位置受到的负载压力。 Amazon CloudFront只接受格式良好的连接,这就直接防止了大多数常见DDoS攻击——包括SYN洪水与UDP反射攻击触及您的应用。通过Amazon CloudFront配合AWS WAF可以保护自己的应用程序免受攻击影响。另外,Amazon CloudFront还能够自动关闭慢速读取或者慢速写入攻击者建立的连接(例如Slowloris)。您还可以使用Amazon CloudFront进行地理位置限定,避免来自特定地理位置的用户访问您的内容。这将有效阻断预期最终用户所在位置之外区域内攻击者发起的恶意冲击。
对于常见的应用层DDoS攻击, 例如HTTP洪水或者WordPress pingback洪水,大家可以使用AWS WAF以建立自己的防护体系。如果您知晓需要屏蔽的源IP地址,则可创建一条规则进行屏蔽并将其关联至Web ACL。在此之后,大家可以在Web ACL中创建一条IP 地址匹配条件,用于阻断该源IP地址参与的一切攻击活动。
AWS资源的模糊处理
对于大多数应用来讲,您的AWS资源都不需要完全面向互联网开放。在这种情况下,大家可以只允许最终用户通过特定TCP端口访问此ELB,并只允许该ELB与对应Amazon EC2实例进行通信。
AWS支持安全组嵌套,即将安全组的源设置为其他安全组以创建安全层。这样一来,来自互联网的流量将无法直接与底层的Amazon EC2 实例通信,这意味着攻击者将很难确实了解您的应用程序。
Amazon Route 53
Amazon Route 53 是一项具备高可用性与高可扩展性的域名系统(简称DNS)服务,可用于将流量定向至您的Web 应用程序。其中包含多项先进功能,例如流量流、基于延迟路由、地理DNS、运行状态检查以及监控等等。
Amazon Route 53采用缓冲划分与选播划分机制,保证最终用户即使在DNS服务被设为DDoS攻击目标的情况下,仍可正常访问您的应用程序。利用缓冲划分机制,如果代表分组内的某域名服务器不再可用,最终用户可以重试并收到来自其它不同边缘位置的另一域名服务器的响应。选播划分则用于保证每条DNS请求都由最优位置进行响应。这种做法将实现负载分散与DNS延迟降低,使得最终用户能够更快接收到响应结果。另外,Amazon Route 53还能够检测到DNS查询源与总量内的异常情况,同时对已知可靠用户的请求进行优先级排序。
Amazon API Gateway
一般来讲,公开发布API会带来潜在安全风险,这意味着API前端有可能被DDoS攻击所影响。Amazon API Gateway是一项全托管服务,允许大家创建一个API充当“前门”,从而保护运行在Amazon EC2以及AWS Lambda上的应用程序乃至其它任意Web应用。利用Amazon API Gateway,大家不再需要运行自有服务器充当API前端,并可混合应用程序当中的其它组件。通过这种方式,我们能够防止AWS资源被DDoS攻击所锁定。Amazon Gateway与Amazon CLoudFront相集成,这样我们将能够充分发挥DDoS 弹性能力,同时在REST API中配置标准或者突发速率限制以保护后端不致被流量所吞没。
可视化——了解应用程序
了解应用程序的正常行为模式能够帮助我们很好地掌握异常状况并迅速采取行动。当某项关键性指标偏离预期基准值时,这可能意味着攻击者正试图破坏我们的应用程序可用性。
利用Amazon CloudWatch,大家可以监控运行在AWS之上的应用程序,收集并追踪多项指标、获取并监控日志文件、设置警报并自动就AWS资源使用变化做出反应。
在VPC Flow Logs的帮助下,您能够捕捉一切指向及来自VPC内网络接口的IP流量相关信息。每份数据流日志记录包含来源与目标IP地址、来源与目标端口、协议以及捕捉窗口之内传输的数据包与字节数量。
四、总结
各项最佳实践将帮助大家建立起具备DDoS弹性的架构,从而保护您的应用程序在常见基础设施与应用层DDoS攻击当中继续保持正常运行。立足于这些最佳实践,您将能够构建起足以应对不同类型与规模的DDoS攻击的应用程序。AWS建议大家使用这些最佳实践以更好地保护应用程序可用性。
AWS DDoS防御总结
AWS DDoS防御参考架构