收集 F5 Distributed Cloud Services 記錄

支援的國家/地區:

本文說明如何使用 Google Cloud Storage V2,將 F5 Distributed Cloud Services 記錄檔擷取至 Google Security Operations。

F5 Distributed Cloud Services 是以 SaaS 為基礎的安全、網路和應用程式管理平台,可在多雲端和邊緣位置提供分散式雲端基礎架構、應用程式傳送、API 安全性和網頁應用程式防火牆功能。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • 已啟用 Cloud Storage API 的 Google Cloud 專案
  • 建立及管理 GCS bucket 的權限
  • 管理 Google Cloud Storage 值區 IAM 政策的權限
  • F5 Distributed Cloud 控制台的特殊存取權
  • 在 F5 Distributed Cloud 中建立全域記錄接收器物件的權限

建立 Google Cloud Storage 值區

  1. 前往 Google Cloud 控制台
  2. 選取專案或建立新專案。
  3. 在導覽選單中,依序前往「Cloud Storage」>「Bucket」
  4. 按一下「建立值區」
  5. 請提供下列設定詳細資料:

    設定
    為 bucket 命名 輸入全域不重複的名稱 (例如 f5-dcs-logs)
    位置類型 根據需求選擇 (區域、雙區域、多區域)
    位置 選取地點 (例如 us-central1)
    儲存空間級別 標準 (建議用於經常存取的記錄)
    存取控管 統一 (建議)
    保護工具 選用:啟用物件版本管理或保留政策
  6. 點選「建立」

設定 F5 Distributed Cloud,將資料匯出至 GCS

將 GCS bucket 新增至防火牆許可清單

  1. 如要使用 F5 Distributed Cloud Global Log Receiver,請將下列 IP 位址範圍加入防火牆許可清單:

    • 193.16.236.64/29
    • 185.160.8.152/29
  2. 如果 GCS 儲存空間使用 VPC Service Controls 或防火牆規則,請將這些 IP 範圍加入許可清單。

為 F5 Distributed Cloud 建立 Google Cloud 服務帳戶

  1. Google Cloud 控制台中,依序前往「IAM 與管理」>「服務帳戶」
  2. 按一下「Create Service Account」(建立服務帳戶)
  3. 請提供下列設定詳細資料:

    • 服務帳戶名稱:輸入 f5-dcs-log-writer (或說明性名稱)
    • 服務帳戶說明:輸入 Service account for F5 Distributed Cloud to write logs to GCS
  4. 按一下「建立並繼續」

  5. 在「將專案存取權授予這個服務帳戶」部分:

    1. 按一下「選擇角色」
    2. 搜尋並選取「Storage 物件管理員」
  6. 按一下「繼續」

  7. 按一下 [完成]

建立服務帳戶金鑰

  1. 在「服務帳戶」清單中,按一下您建立的服務帳戶 (例如 f5-dcs-log-writer)。
  2. 前往「金鑰」分頁。
  3. 依序點選「新增金鑰」>「建立新的金鑰」
  4. 選取「JSON」做為金鑰類型。
  5. 點選「建立」
  6. 系統會將 JSON 金鑰檔案下載至您的電腦。
  7. 請妥善儲存這個檔案。後續步驟會用到。

授予 GCS 值區的 IAM 權限

  1. 依序前往「Cloud Storage」>「Buckets」
  2. 按一下 bucket 名稱 (例如 f5-dcs-logs)。
  3. 前往「權限」分頁標籤。
  4. 按一下「授予存取權」
  5. 請提供下列設定詳細資料:
    • 新增主體:輸入服務帳戶電子郵件地址 (例如 f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com)
    • 指派角色:選取「Storage 物件管理員」
  6. 按一下 [儲存]

在 F5 Distributed Cloud 控制台中建立 Google Cloud 憑證

  1. 前往 https://<tenant>.console.ves.volterra.io,登入 F5 Distributed Cloud 控制台
  2. 在首頁選取「Multi-Cloud Network Connect」服務。
  3. 依序前往「管理」>「網站管理」>「雲端憑證」
  4. 按一下「新增雲端憑證」
  5. 在「Metadata」部分:
    • 名稱:輸入描述性名稱 (例如 gcp-chronicle-logs)
    • 說明 (選填):輸入 Cloud Storage credentials for Google SecOps log export
  6. 在「Cloud Credentials Type」(雲端憑證類型) 區段中,選取「GCP Credentials」(GCP 憑證)
  7. 按一下「GCP 憑證」欄位中的「設定」
  8. 在「憑證類型」下拉式選單中,選取「服務帳戶憑證檔案」
  9. 按一下「上傳檔案」,然後選取您在先前步驟下載的 JSON 金鑰檔案。
  10. 按一下「套用」
  11. 按一下「儲存並結束」

建立全域記錄接收器

  1. F5 Distributed Cloud Console 中,確認您位於 Multi-Cloud Network Connect 服務。
  2. 依序前往「管理」>「記錄管理」>「全域記錄接收器」
  3. 按一下「新增全域記錄接收器」
  4. 在「Metadata」(中繼資料) 區段中:

    • 名稱:輸入描述性名稱 (例如 chronicle-gcs-receiver)
    • 說明 (選填):輸入 Global log receiver for Google SecOps SIEM
  5. 在「記錄類型」下拉式選單中,選取要匯出的記錄類型:

    • 要求記錄:HTTP 要求/回應記錄,包含使用者、路徑、方法、回應代碼
    • 安全事件:WAF 事件、DDoS、API 防護、機器人防禦事件
    • 稽核記錄:透過公用 API 進行的設定變更
    • DNS 請求記錄:DNS 查詢記錄
  6. 在「記錄訊息選取」下拉式選單中,選取下列其中一個選項:

    • 選取目前命名空間的記錄:只傳送目前命名空間的記錄
    • 選取所有命名空間的記錄:傳送所有命名空間的記錄 (建議使用,可全面掌握情況)
    • 選取特定命名空間中的記錄:傳送指定命名空間中的記錄 (按一下「新增項目」即可新增命名空間名稱)
  7. 在「接收器設定」下拉式選單中,選取「GCP Bucket 接收器」

  8. 在「GCP Bucket Name」欄位中,輸入 GCS bucket 的名稱 (例如 f5-dcs-logs)。

  9. 在「GCP Cloud Credentials」下拉式選單中,選取您先前建立的雲端憑證 (例如 gcp-chronicle-logs)。

  10. 選用:展開「顯示進階欄位」,設定批次選項:

    • 批次逾時選項:選取「逾時秒數」並輸入值 (預設值:300 秒)
    • 批次最多事件數:選取「最多事件數」,然後輸入介於 32 到 2000 之間的值 (如未設定,則無限制)
    • 批次位元組:選取「最大位元組」,然後輸入介於 4096 和 1048576 之間的值 (預設值:10485760 個位元組 / 10 MB)
  11. 按一下「儲存並結束」

測試連線

  1. 在「全域記錄接收器」清單中,找到您建立的接收器 (例如 chronicle-gcs-receiver)。
  2. 按一下「動作」欄中的三點圖示 (...)。
  3. 選取「測試連線」
  4. 等待測試完成。
  5. 畫面上應會顯示連線成功的訊息。

驗證 GCS bucket 中的記錄

  1. 前往 GCP 控制台的「Cloud Storage」>「Buckets」頁面。
  2. 按一下 bucket 名稱 (例如 f5-dcs-logs)。
  3. 確認系統是否在值區中建立記錄檔。
  4. F5 Distributed Cloud 會依下列資料夾結構整理記錄:

    YYYY/MM/DD/HH/
    
    • 系統會為每天建立一個資料夾 (YYYY/MM/DD)
    • 在每個日期資料夾中,系統會為每個小時 (HH) 建立子資料夾
    • 每 5 分鐘,新的 gzip 壓縮檔會寫入每小時的子資料夾
    • 檔案為 NDJSON 格式 (以換行符號分隔的 JSON)
  5. 按一下 gzip 檔案即可下載並檢查記錄格式。

擷取 Google SecOps 服務帳戶

Google SecOps 會使用專屬服務帳戶,從 GCS bucket 讀取資料。您必須授予這個服務帳戶值區存取權。

取得服務帳戶電子郵件地址

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 F5 DCS Logs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」
  6. 選取「F5 Distributed Cloud Services」做為「記錄類型」。
  7. 按一下「取得服務帳戶」。系統會顯示不重複的服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 複製這個電子郵件地址,以便在下一步中使用。

  9. 點選「下一步」

  10. 指定下列輸入參數的值:

    • 儲存空間 bucket URL:輸入 GCS bucket URI:

      gs://f5-dcs-logs/
      

      請將 f5-dcs-logs 替換為您的 GCS bucket 名稱。

    • 來源刪除選項:根據偏好設定選取刪除選項:

      • 永不:移轉後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
      • 刪除已轉移的檔案和空白目錄:成功轉移後刪除檔案和空白目錄。

    • 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)

    • 資產命名空間資產命名空間

    • 擷取標籤:要套用至這個動態饋給事件的標籤

  11. 點選「下一步」

  12. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)

將 IAM 權限授予 Google SecOps 服務帳戶

Google SecOps 服務帳戶需要 GCS bucket 的「Storage 物件檢視者」角色。

  1. 依序前往「Cloud Storage」>「Buckets」
  2. 按一下 bucket 名稱 (例如 f5-dcs-logs)。
  3. 前往「權限」分頁標籤。
  4. 按一下「授予存取權」
  5. 請提供下列設定詳細資料:

    • 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址
    • 指派角色:選取「Storage 物件檢視者」
  6. 按一下 [儲存]

UDM 對應表

記錄欄位 UDM 對應 邏輯
_id metadata.product_log_id 直接複製值
src principal.namespace 直接複製值
kubernetes_labels_app target.resource.attribute.labels 從 app_label 合併 (衍生自 kubernetes_labels_app)
kubernetes_host target.hostname 直接複製值
kubernetes_container_name target.resource.product_object_id 直接複製值
bot_info.classification security_result.detection_fields 從 bot_info_classification_label 合併 (衍生自 bot_info.classification)
bot_info.name security_result.detection_fields 從 bot_info_name_label 合併 (衍生自 bot_info.name)
bot_info.type security_result.detection_fields 從 bot_info_type_label 合併 (衍生自 bot_info.type)
時間戳記 @timestamp 使用日期篩選器 (RFC3339、UNIX、ISO8601) 剖析
visitor_id security_result.detection_fields 從 visitor_id_label (衍生自 visitor_id) 合併
標記 security_result.detection_fields 從 tag_label 合併 (衍生自代碼)
動作 security_result.action 如果相符項目允許,請設為 ALLOW;如果相符項目拒絕,請設為 BLOCK
嚴重性 security_result.severity 如果發生錯誤/警告,請設為「高」;如果發生重大問題,請設為「重大」;如果只是通知,請設為「中」;如果是資訊/資訊,請設為「低」
嚴重性 security_result.severity_details 直接複製值
api_endpoint target.labels 從 api_endpoint_label 合併 (衍生自 api_endpoint)
app_firewall_name principal.process.command_line 直接複製值
app_type security_result.detection_fields 從 about_app_type (衍生自 app_type) 合併
as_org security_result.detection_fields 從 about_as_org 合併 (衍生自 as_org)
asn security_result.detection_fields 從 about_asn 合併 (衍生自 asn)
kubernetes.pod_id security_result.detection_fields 從 about_pod_id (衍生自 kubernetes.pod_id) 合併
kubernetes.pod_name security_result.detection_fields 從 about_pod_name 合併 (衍生自 kubernetes.pod_name)
latitude principal.location.region_latitude 已轉換為浮點數
longitude principal.location.region_longitude 已轉換為浮點數
req_params additional.fields 從 about_req_params (衍生自 req_params) 合併
as_number additional.fields 從 about_as_number 合併 (從 as_number 轉換為字串)
x_forwarded_for intermediary.ip 如果 IP 有效,則會合併
x_forwarded_for security_result.about.resource.attribute.labels 如果不是 IP,則從 x_forwarded_for_label 合併
policy_hit.malicious_user_mitigate_action security_result.detection_fields 從 malicious_user_label 合併 (衍生自 policy_hit.malicious_user_mitigate_action)
policy_hit.policy security_result.about.resource.attribute.labels 從 policy_label 合併 (衍生自 policy_hit.policy)
policy_hit.policy_namespace additional.fields 從 policy_namespace_label 合併 (衍生自 policy_hit.policy_namespace)
policy_hit.policy_rule security_result.rule_name 直接複製值
policy_hit.policy_rule_description security_result.description 直接複製值
policy_hit.policy_set target.resource.name 直接複製值
policy_hit.result additional.fields 從 result_label 合併 (衍生自 policy_hit.result)
vhost_id security_result.detection_fields 從 vhostlabel 合併 (衍生自 vhost_id)
messageid security_result.detection_fields 從 messageid_label 合併 (衍生自 messageid)
sec_event_name security_result.detection_fields 從 sec_event_name_label (衍生自 sec_event_name) 合併
sec_event_type security_result.detection_fields 從 sec_event_type_label 合併 (衍生自 sec_event_type)
vh_name security_result.detection_fields 從 vhost_name_label (衍生自 vh_name) 合併
tls_fingerprint security_result.detection_fields 從 tls_fingerprint_label 合併 (衍生自 tls_fingerprint)
時間 additional.fields 從 time_label (衍生自 time) 合併
kubernetes.namespace_name additional.fields 從 namespace_name_label 合併 (衍生自 kubernetes.namespace_name)
src_instance additional.fields 從 src_instance_label (衍生自 src_instance) 合併
violation_rating additional.fields 從 violation_rating_label 合併 (衍生自 violation_rating)
req_size additional.fields 從 req_size_label 合併 (從 req_size 轉換為字串)
rsp_code additional.fields 從 rsp_code_label 合併 (從 rsp_code 轉換為字串)
rsp_code_class additional.fields 從 rsp_code_class_label 合併 (從 rsp_code_class 轉換為字串)
rsp_size additional.fields 從 rsp_size_label 合併 (從 rsp_size 轉換為字串)
original_path additional.fields 從 original_path_label 合併 (衍生自 original_path)
req_path target.url 直接複製值
req_headers_size additional.fields 從 req_headers_size_label 合併 (衍生自 req_headers_size)
recommended_action additional.fields 從 recommended_action_label (衍生自 recommended_action) 合併
enforcement_mode additional.fields 從 enforcement_mode_label 合併 (衍生自 enforcement_mode)
src_ip principal.ip、principal.asset.ip 如果符合 IPv4 規則運算式,則會合併
主機 principal.ip、principal.asset.ip 如果符合 IPv4 規則運算式,則會合併
主機名稱 principal.hostname、principal.asset.hostname 如果值不是空白或「-」,則直接複製值
http_version network.application_protocol_version 直接複製值
http_version network.application_protocol 如果包含 HTTP,則設為 HTTP;如果包含 HTTPS,則設為 HTTPS
網路 principal.nat_ip 如果符合 IPv4 規則運算式,則會合併
dst_ip target.ip、target.asset.ip 如果符合 IPv4 規則運算式,則會合併
dst_port target.port 已轉換為整數
src_port principal.port 已轉換為整數
src_site additional.fields 從 src_site_field 合併 (衍生自 src_site)
網站 additional.fields 從 site_field (衍生自網站) 合併
cluster_name additional.fields 從 cluster_name_field 合併 (衍生自 cluster_name)
網域 principal.administrative_domain 直接複製值
方法 network.http.method 如果值不是空白或 N/A,則直接複製
命名空間 target.namespace 直接複製值
city principal.location.city 直接複製值
串流 security_result.detection_fields 從 stream_label 合併 (衍生自 stream)
區域 principal.location.country_or_region 直接複製值
使用者 principal.user.userid 使用 user_id 的 grok 模式從使用者擷取
user_ip target.ip、target.asset.ip 從擷取的使用者 IP 合併
Cookie additional.fields 從 Cookie 合併 (衍生自 req_headers 中的 Cookie)
X-F5-Request-Id security_result.detection_fields 從 x_f5_request_id 合併 (衍生自 req_headers 中的 X-F5-Request-Id)
X-Request-Id security_result.detection_fields 從 request_id 合併 (衍生自 req_headers 中的 X-Request-Id)
security_result security_result 直接合併
has_network、has_principal、has_target metadata.event_type 如果全為 true,則設為 NETWORK_CONNECTION;如果 has_principal 為 true,則設為 STATUS_UPDATE;否則設為 GENERIC_EVENT
metadata.vendor_name 設為「F5_DCS」
metadata.product_name 設為「F5 DCS」
中介 中介 直接合併

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。