什么是 DDoS 攻击?如何防御?
2023年11月22日
DDoS (Distributed Denial of Service) 是很常见的网路攻击手法。许多知名的网站都时常会被当作攻击目标。举例来说 ChatGPT 推出了让人可以客制化的 GPTs 后,大家突然发现有一段时间进不去 ChatGPT 的网站,而 OpenAI 的员工也在 X (推特) 上发文说 ChatGPT 被 DDoS 攻击,他们正在处理。
所以,到底什么是 DDoS? 又该如何防御 DDoS? 在这篇贴文,我们将用白话的方式跟大家聊聊
什么是 DDoS 攻击?
DDoS 攻击是「分散式阻断服务攻击(Distributed Denial of Service)」 的简称,是一种网路攻击方式。这种攻击方式是透过用大量的流量让网站无法正常运作,当网站被 DDoS 攻击,会扰乱正常使用者的请求,让使用者无法载入网站,这是为什么 ChatGPT 被 DDoS 时,大家会进不去网站的原因。
打个比方,如果把一个网站想成一间店,通常一间店一次能接待好几个客人。但如果突然有成千上万的“假客人”一起涌进来,那么店家就被塞爆,真正的客人就进不来。DDoS 正视这个概念。
在 DDoS 攻击中,攻击者会协调多个攻击源,让许多装置同时攻击目标系统,很多时候,这些装置是因为中了恶意软体的毒,所以被操控。接着这些被操控的装置,会同时向目标网站发送大量请求。
这就像是突然有成千上万的人,被操控来涌入你的店,一堆人挤着,真正的客人就被卡在外面进不来。而从网站的角度来看,网站因为应付不了这么多请求,就会变得无法正常运作或完全崩溃。
有防火墙为什么还挡不了?
你可能会问,现在网站都有防火墙 (firewall),那怎么挡不了 DDoS 攻击呢? 举例来说,现在很多网站会透过一些服务,网路流量进到网站前,先阻挡异常的流量爆发。然后搭配防火墙,只让合法的流量进入网站。
然而,道高一尺,魔高一丈。就算有防火墙,攻击者还是可能用一些方式设法绕过阻挡服务,并压垮防火墙。
此外 DDoS 阻挡服务有其容量限制,一般来说,如果发生过超过 2 Tbps 的攻击,而且攻击规模不断增加。巨大的攻击仍可压垮阻挡服务和防火墙。
换句话说,当攻击者用更大的流量和更快的速度进行攻击。网站的防火墙或中间的路由器,因为有带宽限制,都仍有可能会被淹没。在这种情况下,网站仍会无法对合法请求做出回应。
如何防御 DDoS 攻击?
要防御 DDoS 攻击,可以想像成要保护你开的店免受一群不请自来的客人涌入。这需要几个策略:
1. 增加网站可承受的容量
如果把 DDoS 想成一堆不速之客要挤进你的店,想要确保不被挤爆,最直观的想法就是,把店门做得更大、店的坪数增加,让更多人进出。增加网站的带宽就是让它能处理更多流量,即使被 DDoS 攻击,也不那么容易就被挤爆。
当然假如你是经营店家的人,可能会觉得这样很亏,毕竟多数时候店不用到那么大的门、那么大的坪数,假如只是用来承接无预警的不速之客,这样不是很浪费吗? 没错,在面对 DDoS 攻击时,传统购买额外的硬体来增加容量,以处理攻击导致的大量流量,是相对不推荐的做法,因为要额外的费用来应对攻击,而这些额外的容量在攻击之外并不常用。
实务上比较常见的是用可扩展的资源,例如现在许多云端厂商都有提供可扩展的资源,是按需求付费。所以平常用不到不用付费,当被 DDoS 攻击时,可以短暂用来承接突如其来的高流量。
因此,更好的做法是采用高容量的解决方案。 基于云端的 DDoS 缓解方案,拥有可扩展的资源,甚至可以吸收最大规模的攻击,使您的组织不受损害。
2. 反向代理
除了增加容量外,挡下不速之客也是常见的 DDoS 防御手段。常见的做法是使用反向代理 (reverse proxy),这概念有点是个保护屏障,攻击者会先经过反向代理,所以无法直接找到伺服器位置。这样一来,攻击者只能攻击这个反向代理,而不是我们的伺服器。
在反向代理当中,我们也可以进一步去实作限流,来限制伺服器在一段时间内可以接收的请求数量,以帮助防御 DDoS 攻击。 然而,仅依靠速率限制可能会导致在面对合法流量时效能下降,并且无法应对更复杂的攻击方式,所以当纯的反向代理与限流一般不太够。
现在云端厂商多半有机器学习的解决方案,会去对流量做分析,这概念就像有个智慧守卫,可以辨认哪些访客是真的,哪些是假的。这守卫会持续监控来访者,如果发现异常(比如说,突然有很多人同时来敲门想进来),就会采取行动去把假的客人给挡在门外。
3. CDN (内容传递网路)
假如网站是以静态资源为主,有个既能协助增加带宽,又能作为反向代理的存在,就是 CDN (内容传递网路),这也是常见的阻挡 DDoS 的节点。CDN 是分布全球的代理伺服器网路,它可以在离使用者近的地方储存网站的内容,这样可以让网站运作更快。而在被 DDoS 攻击时,攻击者访问到 CDN,只要 CDN 本身带宽更大,就能承接下来,同时原本的伺服器有 CDN 在前面处理请求,也能免于直接被攻击。
其他防御手段
除了以上三个比较常见的防御手段外,还有其他的 DDoS 防御方法。举例来说,如果我们想保护整个网路,那可以用 BGP (Border Gateway Protocol 边界闸道器协定),将恶意流量重新导向到可以过滤掉它的特殊伺服器。
或是可以在使用强密码和启用 2FA (Two-Factor Authentication 双重要素验证) 当作额外的安全措施,以防止未经授权的流量进到你的网站中。
当然,没有任何防御措施是百分之百安全的,而且攻击者可能会根据你的防御手段来调整他们的攻击。但以上的做法,可以有效减缓攻击。当然,时时保持警觉,平常要做应对 DDoS 攻击的演习,也是必要的,这样能让真的攻击发生时,能有效迅速反应。