什麼是 DDoS 攻擊?如何防禦?

2023年11月22日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

DDoS (Distributed Denial of Service) 是很常見的網路攻擊手法。許多知名的網站都時常會被當作攻擊目標。舉例來說 ChatGPT 推出了讓人可以客製化的 GPTs 後,大家突然發現有一段時間進不去 ChatGPT 的網站,而 OpenAI 的員工也在 X (推特) 上發文說 ChatGPT 被 DDoS 攻擊,他們正在處理。

image

所以,到底什麼是 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 攻擊的演習,也是必要的,這樣能讓真的攻擊發生時,能有效迅速反應。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們