Mark Ku's Blog

時空背景 - Background

我目前在一家的電子商務公司工作,公司的產品主要服務於美國、德國及加拿大,事情發生在黑色星期五前幾天,就有觀察到,網站經常受到 DDoS 攻擊,直到有一天我們的網站被打掛了,就開始做進一步的調查。

先前有寫一篇文章+ 也是有關防禦 DDoS 觀念,此篇將防禦規則實踐在 Cloudfalre WAF。

接著參考 Cloudflare 的安全報表,得知在12日,有著約 2000 萬個惡意請求發送到我們的網站。

Cloudflare 防火牆事件總覽,顯示各國流量與時間趨勢
Cloudflare 總請求與防禦動作數據

同時站在網管人員角度思考,腦袋跑出很多疑惑 ? 為何會有單一IP可以有非常大的請求

Cloudflare安全報表顯示DDoS攻擊來源IP與請求數
Cloudflare安全報表顯示DDoS攻擊來源IP與請求數

且為何有許多未運營的國家,對我們網站發出的大量請求。

Cloudflare 前30天威脅國家請求數報表
Cloudflare 前30天威脅國家請求數報表

雖然我們的 Cloudflare是企業版的,看起來靠預設的設定,Cloudflare 雖然擋掉大部份的DDoS,但攻擊的量太大,仍有漏網之魚,然後我花了很多時間學習 Cloudflare,查看 Cloudflalre 所有設置,並和我的老闆討論,接著我制定了一個防止DDoS的計劃,採用 Web 應用程序防火牆規則以在黑色星期五期間保護我們的生意,並取我們得美國老闆的許可。

Cloudflare DDoS防禦規則表,包含節慶與最終手段
Cloudflare DDoS防禦規則表,包含節慶與最終手段

考量誤判而影響到生意,僅對大量請求的單一IP 進行封鎖,下圖為封鎖畫面。

Cloudflare 阻擋 DDoS 攻擊的錯誤碼 1020 畫面
Cloudflare 阻擋 DDoS 攻擊的錯誤碼 1020 畫面

避免誤判,並在加入 IP 黑名單前,會先用abuseipdb查詢及回報可疑 IP。

AbuseIPDB 查詢 IP 34.121.210.9
AbuseIPDB 查詢 IP 34.121.210.9

其餘規則,避免誤判影響訂單,僅開啟人類驗證,驗證通過才能進入網站

手機顯示hCaptcha人類驗證畫面
手機顯示hCaptcha人類驗證畫面
手機顯示要求點擊熱氣球圖片的人類驗證
手機顯示要求點擊熱氣球圖片的人類驗證

接著,開始建立 WAF 規則 - Create Firewall rules

至Cloudflare 後台 > Secuity > WAF > Create firewall rule

Cloudflare WAF防火牆規則頁面建立防火牆規則按鈕
Cloudflare WAF防火牆規則頁面建立防火牆規則按鈕

規則1. 白名單- WhiteL ist

Cloudflare WAF建立白名單規則允許已知與驗證機器人
Cloudflare WAF建立白名單規則允許已知與驗證機器人

規則2. 黑名單 - IP Block ( attacker )

Cloudflare WAF 編輯防火牆規則,設定阻擋特定 IP 來源
Cloudflare WAF 編輯防火牆規則,設定阻擋特定 IP 來源

規則3. 國家挑戰 - Country challenge

Cloudflare WAF 國家挑戰防火牆規則編輯畫面
Cloudflare WAF 國家挑戰防火牆規則編輯畫面

規則4. 指定IP挑戰 - IP Challenge( suspicious )

Cloudflare WAF編輯IP挑戰規則介面
Cloudflare WAF編輯IP挑戰規則介面

規則99. 機械人挑戰 - Automated ( last resort )

Cloudflare WAF編輯防火牆規則,設定自動化機器人挑戰
Cloudflare WAF編輯防火牆規則,設定自動化機器人挑戰

規則99. 疑似機械人挑戰 - Likely automated ( last resort )

Cloudflare WAF 編輯疑似機器人挑戰規則
Cloudflare WAF 編輯疑似機器人挑戰規則

規則99. 請求頻率限制 - Request Rate ( last resort )

Cloudflare WAF 請求頻率限制規則設定頁面
Cloudflare WAF 請求頻率限制規則設定頁面

規則100. 僅運營國家能訪問 - Non-operating country

Cloudflare WAF 編輯防火牆規則,阻擋非營運國家請求
Cloudflare WAF 編輯防火牆規則,阻擋非營運國家請求

另外可以調 DDOS 敏感度 (Security > Settings > DDos > Configure > Security Level > Medium

Cloudflare DDoS L7 規則集敏感度設定為中等
Cloudflare DDoS L7 規則集敏感度設定為中等

若真的都抵擋不下來,可以啟用 I’m Under Attack mode,所有的使用者都會等待五秒才能進入網站,但使用完記得調整回原設定。 Security > Settings > DDos > Configure > Security Level > Enable I’m Under Attack mode

Cloudflare DDoS 設定頁面,安全等級為 I'm Under Attack!
Cloudflare DDoS 設定頁面,安全等級為 I'm Under Attack!

效益 - Effective

從感恩節 - 黑五檔期(三天),一共遇到 7 次 DDoS 攻擊,累積收到1300多萬惡意流量,最高一次攻擊瞬間收到300萬個請求,直到第五次攻擊後,網站跳停約30秒,從報表中發現攻擊型態轉變,從集中的 IP、 國家,從大量集中變成小量又分散的攻擊,最後決定透過 Cloudfalre 精準的械器學習結果規則做限制,在不影響生意下,除了單一 IP大量請求是直接封鎖,其他都是送他人類驗證,順利的度過今年的黑五檔期。的黑五很精彩,很多外部服務都出現異常狀況。

總共收到1363萬的請求

Cloudflare防火牆事件總覽與DDoS攻擊曲線圖
Cloudflare防火牆事件總覽與DDoS攻擊曲線圖

WAF 幫忙也阻擋了 500 多萬的請求

Cloudflare WAF 規則動作與24小時活動
Cloudflare WAF 規則動作與24小時活動

Bot 分析報表

Cloudflare Bot 分析報表顯示請求總數與機器人分數分佈圖
Cloudflare Bot 分析報表顯示請求總數與機器人分數分佈圖

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··604

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··329

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··240

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··235

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··216

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

讀者也在看

DDOS 防禦筆記

Mark Ku

·1 min read

防範WebShell Attack

Mark Ku

·5 min read·9

防範蠕蟲的Docker的遠程管理攻擊

Mark Ku

·5 min read