收集 Cloudflare WAF 記錄
支援的國家/地區:
Google SecOps
SIEM
這個剖析器會從 Cloudflare Web Application Firewall (WAF) JSON 記錄檔中擷取欄位,並轉換及對應至統合式資料模型 (UDM)。這個外掛程式會處理各種 Cloudflare 動作,並在將輸出內容結構化為 UDM 格式前,先以中繼資料和網路資訊擴充資料。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- Google Cloud的特殊存取權。
- Cloudflare Enterprise 方案。
- 具備 Cloudflare 的特殊存取權。
建立 Google Cloud 儲存空間 bucket
- 登入 Google Cloud 主控台。
前往「Cloud Storage Buckets」(Cloud Storage bucket) 頁面。
點選「建立」。
設定 bucket:
- 名稱:輸入符合值區名稱規定的不重複名稱 (例如 cloudflare-waf)。
- 選擇資料的儲存位置:選取位置。
- 為資料選擇儲存空間級別:選取值區的預設儲存空間級別,或選取「Autoclass」(自動分類),讓系統自動管理儲存空間級別。
- 選擇如何控制物件的存取權:選取「否」可強制禁止公開存取,並為 bucket 物件選取存取權控管模型。
- 儲存空間級別:根據需求選擇 (例如「標準」)。
點選「建立」。
將值區權限授予 Cloudflare IAM 使用者
- 在 Google Cloud中,依序前往「Storage」>「Browser」>「Bucket」>「Permissions」。
- 新增具有 Storage 物件管理員權限的帳戶 logpush@cloudflare-data.iam.gserviceaccount.com 。
使用 Cloudflare UI 建立 WAF 記錄的 Logpush 工作
- 登入 Cloudflare。
- 依序前往「Analytics & Logs」(數據分析與記錄檔) >「Logpush」(記錄檔推送)。
- 選取「建立 Logpush 工作」。
- 在「選取目的地」中,選擇「儲存空間」Google Cloud 。
- 輸入下列目的地詳細資料:
- 值區: Google Cloud Storage bucket 名稱
- 路徑:儲存容器內的值區位置
- 選取「將記錄整理到每日子資料夾」
- 按一下「繼續」。
- 選取要推送至儲存空間的「Security (WAF)」資料集。
- 設定記錄檔推送作業:
- 輸入「工作名稱」。
- 在「如果記錄相符」下方,您可以選取要納入和/或從記錄中移除的事件。詳情請參閱「篩選器」。並非所有資料集都有這個選項。
- 在「傳送下列項目」欄位中,您可以選擇將所有記錄檔推送至儲存目的地,或選擇要推送的記錄檔。
- 按一下「提交」。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如「Cloudflare WAF Logs」)。
- 選取「Google Cloud Storage」做為「來源類型」。
- 選取「Cloudflare WAF」做為「記錄類型」。
- 按一下「取得服務帳戶」。
- 點選「下一步」。
指定下列輸入參數的值:
- GCS URI:Cloud Storage 網址。
- URI 為:選取「包含子目錄的目錄」。
- 來源刪除選項:根據偏好選取刪除選項。
點選「下一步」。
在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」。
從內容中心設定動態饋給
為下列欄位指定值:
- GCS URI:Cloud Storage 網址。
- URI 為:選取「包含子目錄的目錄」。
- 來源刪除選項:根據偏好設定選取刪除選項。
進階選項
- 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
- 來源類型:將記錄收集到 Google SecOps 的方法。
- 資產命名空間:與動態饋給相關聯的命名空間。
- 擷取標籤:套用至這個動態饋給所有事件的標籤。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
Action |
security_result.action_details |
原始記錄中的 Action 值會直接指派給這個 UDM 欄位。 |
Action |
security_result.action |
這個欄位的值是從原始記錄的 Action 欄位衍生而來。如果 Action 為「allow」,系統會將 UDM 欄位設為 ALLOW 。如果 Action 是「challengeSolved」、「jschallengeSolved」、「managedchallengenoninteractivesolved」或「managedchallengeinteractivesolved」,UDM 欄位會設為 ALLOW_WITH_MODIFICATION 。如果 Action 是「drop」、「block」或「connectionclose」,UDM 欄位會設為 BLOCK 。如果 Action 是「challengefailed」或「jschallengefailed」,UDM 欄位會設為 FAIL 。否則會設為 UNKNOWN_ACTION 。 |
ClientASN |
network.asn |
原始記錄中的 ClientASN 值會轉換為字串,然後直接指派給這個 UDM 欄位。 |
ClientASNDescription |
additional.fields.key |
這個鍵會靜態設為「ClientASNDescription」。 |
ClientASNDescription |
additional.fields.value.string_value |
原始記錄中的 ClientASNDescription 值會直接指派給這個 UDM 欄位。 |
ClientCountry |
principal.location.country_or_region |
原始記錄中的 ClientCountry 值會直接指派給這個 UDM 欄位。 |
ClientIP |
principal.ip |
原始記錄中的 ClientIP 值會直接指派給這個 UDM 欄位。 |
ClientRefererHost |
intermediary.hostname |
原始記錄中的 ClientRefererHost 值會直接指派給這個 UDM 欄位。 |
ClientRefererPath |
network.http.referral_url |
原始記錄中的 ClientRefererPath 值會直接指派給這個 UDM 欄位。 |
ClientRequestHost |
target.hostname |
原始記錄中的 ClientRequestHost 值會直接指派給這個 UDM 欄位。 |
ClientRequestMethod |
network.http.method |
原始記錄中的 ClientRequestMethod 值會直接指派給這個 UDM 欄位。 |
ClientRequestPath |
target.file.full_path |
原始記錄中的 ClientRequestPath 值會直接指派給這個 UDM 欄位。 |
ClientRequestProtocol |
network.application_protocol |
ClientRequestProtocol 的通訊協定部分 (例如 「HTTP/1.1」中的「HTTP」會使用 grok 擷取,並轉換為大寫,然後指派給這個 UDM 欄位。 |
ClientRequestUserAgent |
network.http.user_agent |
原始記錄中的 ClientRequestUserAgent 值會直接指派給這個 UDM 欄位。 |
Datetime |
metadata.event_timestamp |
系統會將原始記錄中的 Datetime 值剖析為 RFC 3339 時間戳記,並指派給這個 UDM 欄位。 |
EdgeColoCode |
additional.fields.key |
這個鍵會靜態設為「EdgeColoCode」。 |
EdgeColoCode |
additional.fields.value.string_value |
原始記錄中的 EdgeColoCode 值會直接指派給這個 UDM 欄位。 |
EdgeResponseStatus |
network.http.response_code |
原始記錄中的 EdgeResponseStatus 值會直接指派給這個 UDM 欄位,並轉換為整數。 |
Kind |
metadata.product_event_type |
原始記錄中的 Kind 值會直接指派給這個 UDM 欄位。 |
Metadata.filter |
target.resource.attribute.labels.value |
原始記錄中的 Metadata.filter 值會指派給 target.resource.attribute.labels 內標籤的 value 欄位。這個標籤的 key 會靜態設為「中繼資料篩選器」。 |
Metadata.type |
target.resource.attribute.labels.value |
原始記錄中的 Metadata.type 值會指派給 target.resource.attribute.labels 內標籤的 value 欄位。這個標籤的 key 會靜態設為「中繼資料類型」。這個欄位的值是根據 ClientIP 、ClientRequestHost 和 app_protocol 的存在與值而衍生。如需特定邏輯,請參閱剖析器程式碼。將靜態值設為「Cloudflare」。將靜態值設為「Cloudflare log Aggregator」。將靜態值設為「CLOUDFLARE_WAF」。 |
RayID |
metadata.product_log_id |
原始記錄中的 RayID 值會直接指派給這個 UDM 欄位。 |
RuleID |
security_result.rule_id |
原始記錄中的 RuleID 值會直接指派給這個 UDM 欄位。 |
Source |
security_result.rule_name |
原始記錄中的 Source 值會直接指派給這個 UDM 欄位。 |
timestamp |
metadata.event_timestamp 、events.timestamp |
原始記錄中的 timestamp 值會直接指派給這些 UDM 欄位。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。