应用程序层攻击又称为第 7 层 (L7) DDoS 攻击,是指旨在针对 OSI 模型“顶层”的恶意行为,HTTP GET 和 HTTP POST 等常见互联网请求就发生在这一层。与 DNS 放大等网络层攻击相比,第 7 层攻击特别有效,因为它们除了消耗网络资源,还会消耗服务器资源。
应用程序层攻击的工作原理
大多数 DDoS 攻击的潜在有效性来自发起攻击所需的资源量与吸收或防护攻击所需的资源量之间的差异。尽管第 7 层攻击也符合这种情况,但这种攻击可以同时影响目标服务器和网络,因此需要更少的总带宽即可达到相同的破坏效果;应用程序层攻击消耗更少的总带宽即可造成更大的破坏。
为了探讨其原因,我们看一下发出请求的客户端和响应请求的服务器之间的相对资源消耗差异。当用户发送登录在线帐户(如 Gmail 帐户)的请求时,用户的计算机必须使用的数据和资源数量很少,并且与检查登录凭据、从数据库加载相关用户数据然后发回包含所请求网页的响应这一过程中消耗的资源数量不成比例。
即使没有登录,多次收到客户端请求的服务器也必须进行数据库查询或其他 API 调用以生成网页。在许多设备将单个 Web 资产作为目标(例如在僵尸网络攻击期间)时,这种差异将进一步放大,使目标服务器不堪重负,从而对正常流量拒绝服务。在许多情况下,仅对 API 发起第 7 层攻击就足以使服务脱机。
为什么应用程序层 DDoS 攻击难以阻止?
攻击流量和正常流量很难区分,尤其是在应用程序层攻击(例如僵尸网络对受害服务器执行 HTTP 洪水攻击)的情况下。由于僵尸网络中的每个机器人都发出看似合法的网络请求,因此流量不是欺骗流量,而是看起来来自“正常”的来源。
应用程序层攻击需要一种自适应策略,包括根据特定规则集限制可能会定期波动的流量的能力。正确配置的 WAF 等工具可以缓解传递到源服务器的虚假通信量,从而大大减少 DDoS 尝试的影响。
对于其他攻击(如 SYN 洪水攻击)或反射攻击(如 NTP 放大攻击),只要网络本身具有足够带宽可以承载,就可以使用策略相当有效地丢弃流量。遗憾的是,大多数网络无法承受 300Gbps 的放大攻击,而可以正确路由并服务第 7 层攻击可能产生的大量应用程序层请求的网络更是鲜见。
哪些策略有助于防护应用程序层攻击?
一种方法是对发出网络请求的设备实施质询,以测试它是否是机器人。用于完成此过程的测试类似于在线创建帐户时常见的 CAPTCHA 测试。通过提出 JavaScript 计算挑战之类的要求,可以缓解许多攻击。
其他阻止 HTTP 洪水攻击的途径包括使用 Web 应用程序防火墙,通过 IP 信誉数据库以及工程师的实时网络分析来管理和筛选流量。