想象一下有人使用不同的电话号码一遍又一遍地打电话给你,而你也无法将他们列入黑名单。最终你可能会选择关闭手机,从而避免骚扰。这个场景就是常见的分布式拒绝服务(DDoS)攻击的样子。
乔布斯(Steve Jobs)推出第一款iPhone之前,DDoS攻击就已经存在了。它们非常受黑客欢迎,因为它们非常有效,易于启动,并且几乎不会留下痕迹。那么如何防御DDoS攻击呢?你能否确保对你的web服务器和应用程序提供高级别的DDoS攻击防护?在本文中,我们将讨论如何防止DDoS攻击,并将介绍一些特定的DDoS保护和预防技术。
DDoS攻击的类型和方法
分布式拒绝服务攻击(简称DDoS)是一种协同攻击,旨在使受害者的资源无法使用。它可以由一个黑客组织协同行动,也可以借助连接到互联网的多个受破坏设备来执行。这些在攻击者控制下的设备通常称为僵尸网络。
有多种执行DDoS攻击的工具:例如Trinoo,Stacheldraht,Shaft,Knight,Mstream等。这些工具的可用性是DDoS攻击如此广泛和流行的原因之一。
DDoS攻击可以持续数百小时
DDoS攻击可能持续几分钟、几小时、甚至是几天。卡巴斯基实验室的一份报告显示,近年来时间最长的DDoS攻击之一发生在2018年1月,它持续了将近300个小时。
发起DDoS攻击有两种常见方法:
- 利用软件漏洞。黑客可以针对已知和未知软件漏洞,并发送格式错误的数据包,以试图破坏受害者的系统。
- 消耗计算或通信资源。黑客可以发送大量合法的数据包,从而消耗受害者的网络带宽、CPU或内存,直到目标系统无法再处理来自合法用户的任何请求。
虽然没有标准的DDoS攻击分类,但我们可以将其分为四大类:
- 容量耗尽攻击
- 协议攻击
- 应用程序攻击
- 0 day漏洞DDoS攻击
图1显示了DDoS攻击的最常见分类之一。
图1. DDoS攻击的分类
让我们仔细研究一下每种类型的攻击。
容量耗尽攻击
容量耗尽攻击(Volumetric attacks)通常借助僵尸网络和放大技术,通过向终端资源注入大量流量来阻止对终端资源的访问。最常见的容量耗尽攻击类型有:
- UDP洪水攻击。黑客发送用户数据报协议(UDP)包伪造受害者的源地址到随机端口。主机生成大量的回复流量并将其发送回受害者。
- ICMP洪水攻击。黑客使用大量的互联网控制消息协议(ICMP)请求或ping命令,试图耗尽受害者的服务器带宽。
Netscout在2018年报告了迄今为止最大的DDoS攻击之一:一家美国服务提供商的客户面临着1.7 Tbps的大规模反射放大攻击。
协议攻击
根据Verisign 2018年第1季度DDoS趋势报告,协议攻击针对的是协议工作方式的漏洞,这是第二大最常见的攻击媒介。最常见的协议攻击类型有:
- SYN洪水攻击。黑客利用了三向握手TCP机制的漏洞。客户端将SYN数据包发送到服务器,接收SYN-ACK数据包,并且永远不会将ACK数据包发送回主机。因此,受害者的服务器留下了许多未完成的SYN-ACK请求,并最终导致崩溃。
- 死亡之Ping。攻击–黑客使用简单的Ping命令发送超大数据包,从而导致受害者的系统冻结或崩溃。
SYN洪水攻击是2014年用来摧毁在线赌博网站的五种攻击媒介之一。
应用程序攻击
应用程序攻击利用协议栈(六),协议栈(七)中的漏洞,针对特定的应用程序而不是整个服务器。它们通常针对公共端口和服务,如DNS或HTTP。最常见的应用程序攻击有:
- HTTP洪水攻击。攻击者用大量的标准GET和POST请求淹没应用程序或web服务器。由于这些请求通常显示为合法流量,因此检测HTTP洪水攻击是一个相当大的挑战。
- Slowloris。正如其名,Slowloris缓慢地使受害者的服务器崩溃。攻击者按时间间隔和一小部分向受害者的服务器发送HTTP请求。服务器一直在等待这些请求完成,但永远不会发生。最终,这些未完成的请求耗尽了受害者的带宽,使合法用户无法访问服务器。
在2009年总统大选后,黑客专家利用Slowloris攻击来关闭伊朗的政府网站。
0 day漏洞DDoS攻击
除了众所周知的攻击之外,还存在0 day漏洞DDoS攻击。他们利用尚未修补的未知软件漏洞或使用不常见的攻击媒介,因此更加难以检测和防御。例如,早在2016年,攻击者利用轻型目录访问协议(LDAP)发起了放大系数高达55的攻击。
现在让我们谈谈检测DDoS攻击的方法。
检测DDoS攻击
虽然不可能完全阻止DDoS攻击的发生,但有一些有效的做法可以帮助你检测和停止正在进行的DDoS攻击。
异常检测:统计模型和机器学习算法(例如神经网络,决策树和近邻算法)可用于分析网络流量并将流量模式分类为正常或DDoS攻击。你还可以搜索其他网络性能因素中的异常,例如设备CPU利用率或带宽使用情况。
基于知识的方法:使用诸如特征码分析、状态转换分析、专家系统、描述脚本和自组织映射等方法,你可以通过将流量与已知攻击的特定模式进行比较来检测DDoS。
ACL和防火墙规则:除了入口/出口流量过滤之外,访问控制列表(ACL)和防火墙规则可用于增强流量可见性。特别是,你可以分析ACL日志,以了解通过网络运行的流量类型。你还可以根据特定的规则、签名和模式配置web应用程序防火墙来阻止可疑的传入流量。
入侵防御和检测系统警报:入侵防御系统(IPS)和入侵检测系统(IDS)提供了额外的流量可见性。尽管误报率很高,但是IPS和IDS警报可以作为异常和潜在恶意流量的早期指示。
在早期阶段检测正在进行的攻击可以帮助你减轻其后果。但是,你可以采取适当的预防措施来防范DDoS攻击,使攻击者更难淹没或破坏你的网络。
如何编写一个有效的防护DDoS攻击的解决方案
无论你是想创建自己的有效防护DDoS攻击的解决方案,还是要为Web应用程序寻找商业化的DDoS攻击防护系统,都要牢记以下一些基本系统要求:
- 混合DDoS检测方法。基于特征码和基于异常的检测方法的组合是检测不同类型的DDoS攻击的关键。
- 防御3–4级和6–7级攻击。如果你的解决方案能够检测并抵御所有三种主要类型的DDoS攻击:容量攻击、应用攻击和协议攻击,则更可取。
- 有效的流量过滤。DDoS保护的最大挑战之一是区分恶意请求与合法请求。很难创建有效的过滤规则,因为涉及DDoS攻击的大多数请求看起来都好像是来自合法用户。诸如速率限制之类的流行方法通常会产生很多误报,导致阻止合法用户访问你的服务和应用程序。
- SIEM集成。将防DDoS解决方案与SIEM系统良好结合非常重要,这样你就可以收集有关攻击的信息,对其进行分析,并使用它来改善DDoS的保护并防止以后发生攻击。
如果满足这些要求对你来说太难了,那么考虑向专家寻求帮助。你需要一支经验丰富的开发团队,他们对网络安全、云服务和web应用程序有深入的了解,才能构建高质量的DDoS防御解决方案。像这样的团队很难在内部组织起来,但你可以随时寻求第三方团队的帮助。
防止DDoS攻击
即使你无法阻止DDoS攻击的发生,但你有能力让攻击者更难关闭你的网站或应用程序。这就是DDoS预防技术关键的地方。你可以使用两种DDoS预防机制:常规预防措施和过滤技术。
常规的DDoS防护机制是比较常见的措施,可以帮助你使Web应用程序或服务器对DDoS攻击更具弹性。这些措施包括:
- 使用防火墙。虽然防火墙不能保护你的应用程序或服务器免受复杂的DDoS攻击,但它们仍然可以有效地处理简单的攻击。
- 安装最新的安全补丁。大多数攻击针对特定的软件或硬件漏洞,因此及时部署所有补丁可以帮助你降低攻击风险。
- 禁用未使用的服务。黑客攻击的应用程序和服务越少越好。确保禁用所有不需要和未使用的服务和应用程序,以提高网络的安全性。
过滤机制使用不同的方法来过滤流量并阻止潜在的危险请求。这些机制包括入口/出口过滤,基于历史的IP过滤和基于路由器的数据包过滤。
保护Web应用程序免受DDoS攻击的优秀做法
除了特定的DDoS防范机制,还有几种做法可以帮你的web应用程序提供额外的DDoS保护:
- 限制漏洞数量。除非迫不得已,否则不要公开你的应用程序和资源。这样,你可以限制攻击者可能针对的基础架构中的漏洞数量。你还可以禁止将互联网流量直接发送到数据库服务器和基础结构的其他关键部分。
- 扩展负载。考虑使用负载平衡器和内容分发网络(CDN),通过平衡资源负载来减轻攻击的影响,这样即使在攻击期间也可以保持在线。
- 仔细选择你的云提供商。寻找一个值得信赖的云服务提供商,并提供自己的DDoS缓解策略。确保他们的策略可检测和缓解基于协议,基于卷和应用程序级别的攻击。例如,一些云提供商使用anycasting网络在具有相同IP地址的多台机器之间划分大量请求。
使用第三方DDoS缓解服务?–考虑将web应用程序的保护委托给第三方供应商。DDoS缓解服务甚至可以在问题流量到达受害者网络之前将其清除。你可以从基于DNS的网关服务或基于协议的解决方案中查找有问题的边界攻击。
结论
黑客不断使用和改进DDoS攻击来破坏特定服务、大小型企业甚至公共和非营利组织的工作。这些攻击的主要目的是耗尽受害者的资源,从而使他们的服务、应用程序或网站崩溃。
虽然无法完全阻止DDoS攻击的发生,但有一些有效的DDoS攻击保护技术和方法可用于增强基础设施抵御DDoS攻击并减轻其后果。