CC 攻擊防護

CC(Challenge Collapsar)攻擊通常透過持續傳送大量 HTTP 或 HTTPS 請求,佔用應用伺服器的連線數、計算資源或上游服務能力,使正常使用者的請求變慢或失敗。與單純消耗網路頻寬的流量型攻擊不同,CC 攻擊往往針對登入、搜尋、動態查詢等需要較多計算資源的介面,單個請求看似正常,因此需要結合請求特徵和訪問頻率進行識別與處置。

OpenResty Edge 提供從請求控制到網路層封禁的多層防護能力。您可以透過頁面規則限定規則的生效條件,按客戶端 IP 地址、URI、Cookie 等關鍵字統計請求,並在達到閾值後延遲、驗證、拒絕或封禁異常流量。

防護能力

請求層防護

請求層動作適合保護 HTTP 和 HTTPS 介面,也是應對 CC 攻擊的主要手段。

  • 限制請求速率:基於漏桶演算法平滑請求速率,對突發請求先調節、再拒絕。
  • 限制請求數:統計固定時間視窗內的請求數,超過閾值後執行拒絕動作。
  • 延遲請求:為匹配規則的請求增加固定延遲,降低自動化客戶端的請求效率。
  • 封鎖請求:持續觀察請求速率,在連續多個時間視窗達到條件後封鎖請求一段時間。

網路層封禁

網路層動作會在作業系統層面丟棄來源 IP 的資料包,影響範圍大於單個 HTTP 請求。應先確認來源 IP 可信,避免封禁共享出口、代理或 NAT 後方的正常使用者。

  • 封禁來源 IP:將當前請求的來源 IP 封禁一段時間。
  • 封禁 IP 列表:請求來源 IP 命中預定義列表時,在作業系統層面進行封禁。

擴充套件流量保護

以下能力不屬於典型的 HTTP CC 請求識別,但可以保護 TLS 握手資源或控制響應頻寬。

功能選型

功能控制物件觸發方式處置方式典型場景
限制請求速率HTTP/HTTPS 請求請求速率達到調節或拒絕閾值延遲或執行拒絕動作平滑突發流量、保護高頻介面
限制請求數HTTP/HTTPS 請求固定時間視窗內的請求數超過閾值執行拒絕動作限制登入、驗證碼、API 呼叫次數
延遲請求匹配頁面規則的請求請求滿足規則條件延遲指定時間後繼續處理降低自動化嘗試和低速攻擊效率
封鎖請求HTTP/HTTPS 請求連續多個時間視窗達到速率條件封鎖指定時間處置持續高頻訪問的客戶端
封禁來源 IP來源 IP 的所有資料包請求滿足規則條件作業系統層丟包快速隔離已確認的攻擊來源
封禁 IP 列表列表中的來源 IP來源 IP 命中預定義列表作業系統層丟包批次接入黑名單或威脅情報
限制 SSL 握手速率TLS 握手客戶端 IP 的握手速率達到閾值調節或拒絕緩解異常 TLS 握手消耗
限制響應資料速率HTTP/HTTPS 響應請求滿足規則條件限制響應傳輸速率控制下載或大響應的頻寬佔用

核心配置概念

生效條件

頁面規則的條件決定哪些請求進入防護策略。建議優先保護登入、搜尋、下單、動態 API 等資源消耗較高或容易被自動化呼叫的 URI,而不是一開始就對整個應用使用相同閾值。

關鍵字

關鍵字決定請求如何分組和計數。常見選項包括客戶端 IP 地址、URI、URI 引數、Cookie、指定請求頭,以及 X-Forwarded-For 中的第一個或最後一個 IP 地址。組合多個關鍵字可以形成更細粒度的統計維度,例如按“客戶端 IP 地址 + URI”分別限制每個客戶端對不同介面的訪問。

使用 X-Forwarded-For 作為關鍵字前,應確保請求只會經過可信代理,並由可信代理覆蓋或清理客戶端傳入的同名請求頭。否則,攻擊者可能偽造該請求頭繞過限流或導致誤封。

閾值和時間視窗

速率類動作根據單位時間內的請求速率進行調節或拒絕;計數類動作統計固定時間視窗內的請求總數。閾值應基於正常業務流量的峰值、介面成本和可接受的突發量設定,並在觀察實際效果後逐步調整。

拒絕動作

達到拒絕條件後,可以關閉連線、返回錯誤頁、要求完成驗證碼或 JavaScript 挑戰、標記請求為拒絕,或者在支援的動作中封禁 IP 地址。對可能包含正常使用者的流量,優先考慮驗證碼等可恢復的驗證方式;對已確認的惡意來源,再使用連線關閉或 IP 封禁。

配置流程

  1. 在 Edge Admin 中進入目標應用的 頁面規則 頁面。
  2. 新建規則,並根據 URI、客戶端資訊或請求特徵設定生效條件。
  3. 動作 中選擇相應的 CC 攻擊防護動作。
  4. 設定關鍵字、閾值、時間視窗和拒絕動作等引數。
  5. 建立規則併發布應用配置。
  6. 使用受控測試流量驗證正常請求、達到閾值和解除限制後的行為。

限制 SSL 握手速率需要在應用的 SSL 配置頁面中啟用,具體步驟請參見限制 SSL 握手速率

配置 CC 攻擊日誌

啟用防護規則後,建議同時啟用 CC 攻擊日誌,記錄規則觸發情況並形成“檢測、處置、觀察、調優”的閉環。

在 Edge Admin 的 全域性配置 > 日誌 中開啟 啟用 CC 日誌,並根據攻擊流量規模配置日誌限速、統計過期時間、共享記憶體、緩衝區和刷入時間間隔。日誌限速可以避免高頻攻擊期間為每個請求寫入日誌,降低日誌系統本身的開銷。

配置釋出後,可以在 應用 > CC 日誌 中檢視觸發記錄,並結合客戶端標識、URI、處置結果和觸發頻率判斷閾值是否合理。詳細配置和測試步驟請參見 CC 攻擊日誌

作用範圍

限流和限速狀態預設按應用隔離,不會跨應用共享。例如,同一客戶端觸發了應用 A 的請求速率限制後,仍可正常訪問未觸發限制的應用 B。這一點與直接在共享 NGINX 配置中使用全侷限流區域的行為不同。

作業系統層的 IP 封禁會丟棄該來源 IP 的所有資料包,使用前應結合實際網路拓撲評估影響。

調優建議

  • 先建立基線:根據監控和訪問日誌瞭解正常時段與業務高峰的請求速率,再設定初始閾值。
  • 縮小規則範圍:優先針對高成本 URI、異常地區或明確的自動化特徵配置規則,減少對正常流量的影響。
  • 選擇穩定的關鍵字:共享出口較多時,不要只依賴客戶端 IP 地址;可以結合 URI、Cookie 或其他可信標識細分請求。
  • 逐步增強處置:先觀察或使用延遲、驗證碼等方式,再根據攻擊持續時間和誤報情況升級為拒絕或封禁。
  • 組合多層策略:使用請求速率限制吸收短時突發,使用封鎖請求處置持續異常,最後對已確認的攻擊來源進行網路層封禁。
  • 結合 CC 日誌調優:定期檢查規則觸發來源、受影響 URI 和處置結果,識別閾值過嚴、規則範圍過寬或攻擊特徵變化。
  • 驗證恢復行為:除驗證觸發效果外,還要確認時間視窗結束或封鎖過期後,正常請求能夠恢復。