收集 F5 Distributed Cloud Services 記錄

剖析器版本:6.0

支援的國家/地區:

本文說明如何使用 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 bucket

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

授予 GCS bucket 的 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. 在「中繼資料」部分:

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

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

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

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

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

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

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

測試連線

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

驗證 GCS bucket 中的記錄

  1. 前往 GCP 控制台的「Cloud Storage」>「Buckets」頁面。
  2. 點按 bucket 名稱 (例如 f5-dcs-logs)。
  3. 確認 bucket 中是否正在建立記錄檔。
  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 使用日期篩選器 (RFC 3339、UNIX、ISO8601) 剖析
visitor_id security_result.detection_fields 從 visitor_id_label (衍生自 visitor_id) 合併
標記 security_result.detection_fields 從 tag_label (衍生自 tag) 合併
動作 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 Merged from about_pod_name (derived from 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 如果值不是空白或「不適用」,則直接複製
命名空間 target.namespace 直接複製值
城市 principal.location.city 直接複製值
串流 security_result.detection_fields 從 stream_label 合併 (衍生自串流)
區域 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」
中介 中介 直接合併
rsp_size event.idm.read_only_udm.network.received_bytes 從變更記錄對應
dst event.idm.read_only_udm.target.ip 和 event.idm.read_only_udm.target.asset.ip 從變更記錄對應
has_sec_event event.idm.read_only_udm.additional.fields 從變更記錄對應
app event.idm.read_only_udm.target.application 從變更記錄對應
node_id event.idm.read_only_udm.additional.fields 從變更記錄對應
sample_rate event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_first_downstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_first_upstream_rx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_first_upstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_downstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_rx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_upstream_rx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_upstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
timeseries_enabled event.idm.read_only_udm.additional.fields 從變更記錄對應
sni event.idm.read_only_udm.additional.fields 從變更記錄對應
terminated_time event.idm.read_only_udm.additional.fields 從變更記錄對應
rtt_downstream_seconds event.idm.read_only_udm.additional.fields 從變更記錄對應
rtt_upstream_seconds event.idm.read_only_udm.additional.fields 從變更記錄對應
rsp_code_details event.idm.read_only_udm.additional.fields 從變更記錄對應
authority event.idm.read_only_udm.additional.fields 從變更記錄對應
connected_time event.idm.read_only_udm.additional.fields 從變更記錄對應
req_id event.idm.read_only_udm.additional.fields 從變更記錄對應
proxy_type event.idm.read_only_udm.additional.fields 從變更記錄對應
vh_type event.idm.read_only_udm.additional.fields 從變更記錄對應
dst_instance event.idm.read_only_udm.additional.fields 從變更記錄對應
lb_port event.idm.read_only_udm.additional.fields 從變更記錄對應
mtls event.idm.read_only_udm.additional.fields 從變更記錄對應
ja4_tls_fingerprint event.idm.read_only_udm.additional.fields 從變更記錄對應
duration_with_data_tx_delay event.idm.read_only_udm.additional.fields 從變更記錄對應
dst_site event.idm.read_only_udm.additional.fields 從變更記錄對應
protocol and scheme event.idm.read_only_udm.network.application_protocol 從變更記錄對應
referer event.idm.read_only_udm.network.http.referral_url 從變更記錄對應
tls_cipher_suite event.idm.read_only_udm.network.tls.cipher 從變更記錄對應
tls_version event.idm.read_only_udm.network.tls.version 從變更記錄對應
user_agent event.idm.read_only_udm.network.http.user_agent 從變更記錄對應
user_agent event.idm.read_only_udm.network.http.parsed_user_agent 從變更記錄對應
browser_type event.idm.read_only_udm.principal.browser.browser_type 從變更記錄對應
content-type event.idm.read_only_udm.principal.process.file.mime_type 從變更記錄對應
response_flags security_result.detection_fields 從變更記錄對應
original_authority event.idm.read_only_udm.target.administrative_domain 從變更記錄對應
country event.idm.read_only_udm.principal.location.country_or_region 從變更記錄對應

變更記錄

查看這個剖析器的變更記錄

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