收集 Akamai WAF 記錄

支援的國家/地區:

本文說明如何使用 Google Cloud Storage 或 AWS S3,將 Akamai WAF 記錄檔匯出及擷取至 Google Security Operations。剖析器會處理記錄,同時支援 syslog 和 CEF 格式。並擷取 IP 位址、網址、HTTP 方法、回應代碼、使用者代理程式和安全性規則資訊等欄位,然後對應至統一資料模型 (UDM),確保資料呈現方式一致。剖析器也會處理特定 Akamai 欄位 (例如 attackDataclientReputation),執行必要的資料轉換,並擴充 UDM 輸出內容。

事前準備

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

  • Google SecOps 執行個體
  • Google 或 AWS 的特殊存取權限 Google Cloud
  • Akamai 的特殊存取權

從 Cloud Storage 匯出及擷取 Akamai WAF 記錄

本節將說明程序的第一步:為 Akamai WAF 記錄設定必要的儲存空間。

建立 Google Cloud 儲存空間 bucket

  1. 登入 Google Cloud 主控台。
  2. 前往「Cloud Storage Buckets」(Cloud Storage bucket) 頁面。

    前往「Buckets」(值區) 頁面

  3. 點選「建立」

  4. 在「建立 bucket」頁面中,輸入 bucket 資訊。完成下列每個步驟後,請按一下「繼續」前往下一個步驟:

    1. 在「開始使用」部分執行下列操作:

      • 輸入符合值區名稱規定的專屬名稱 (例如 akamai-waf-logs)。
      • 如要啟用階層命名空間,請按一下展開箭頭,展開「為檔案導向和資料密集型工作負載提供最理想的儲存空間」部分,然後選取「為這個值區啟用階層結構式命名空間」
      • 如要新增值區標籤,請按一下展開箭頭,展開「標籤」部分。
      • 按一下「新增標籤」,然後指定標籤的鍵和值。
    2. 在「Choose where to store your data」(選擇資料的儲存位置) 專區中執行下列操作:

      • 選取「位置類型」
      • 使用位置類型下拉式選單,選取要永久儲存 bucket 內物件資料的位置
      • 如要設定跨 bucket 複製作業,請展開「設定跨 bucket 複製作業」部分。
    3. 在「為資料選擇儲存空間級別」部分,選取值區的預設儲存空間級別,或選取「Autoclass」,讓系統自動管理值區資料的儲存空間級別。

    4. 在「選取如何控制物件的存取權」部分,選取「否」以強制禁止公開存取,並為值區物件選取存取權控管模型

    5. 在「選擇保護物件資料的方式」部分,執行下列操作:

      • 選取「資料保護」下要為值區設定的任何選項。
      • 如要選擇物件資料的加密方式,請按一下標示為「資料加密」的展開箭頭,然後選取「資料加密方法」
  5. 點選「建立」

設定 Cloud Storage 的權限

  1. 前往「Create service account」(建立服務帳戶) 頁面。

    前往「建立服務帳戶」

  2. 選取 Google Cloud 專案。

  3. 輸入要顯示在 Google Cloud 控制台的服務帳戶名稱

  4. 按一下「建立並繼續」

  5. 授予值區的 roles/storage.admin

  6. 按一下「Done」(完成),即完成建立服務帳戶。

建立並下載 Google Cloud 服務帳戶金鑰檔案

  1. 前往「Service accounts」(服務帳戶) 頁面。

    前往「Service accounts」(服務帳戶)

  2. 選取 Google Cloud 專案。

  3. 按一下新建立的服務帳戶電子郵件地址。

  4. 按一下「Keys」(金鑰) 分頁標籤。

  5. 點選「新增金鑰」選單,然後選取「建立新的金鑰」

  6. 選取「JSON」做為金鑰類型,然後按一下「建立」

    • 按一下「Create」(建立),即可下載服務帳戶金鑰檔案。金鑰檔案下載後,就不能再次下載。
    • 下載的金鑰格式如下,其中 PRIVATE_KEY 是公開/私密金鑰組的私密部分。

設定 Akamai WAF,將記錄檔傳送至 Cloud Storage

  1. 登入 Akamai Control Center。
  2. 前往「安全性」部分。
  3. 選取「記錄」
  4. 設定新的記錄檔傳送方式:
    • 記錄來源:選取 WAF 設定。
    • 目的地:選取「Google Cloud Storage」
    • 顯示名稱:輸入專屬名稱說明。
    • Bucket:指定您建立的 Cloud Storage bucket 名稱 (例如 gs://akamai-waf-logs)。
    • 專案 ID:輸入 Google Cloud 專案的專屬 ID。
    • 「服務帳戶名稱」:輸入您先前建立的服務帳戶名稱。
    • 私密金鑰:輸入您稍早產生及下載的 JSON 金鑰中的 private_key 值。(您應以 PEM 格式輸入私密金鑰,並使用換行符號 (\n),例如 -----BEGIN PRIVATE KEY-----\nprivate_key\n-----END PRIVATE KEY-----\n)
    • 記錄格式:選擇所需記錄格式 (例如 JSON)。
    • 推送頻率:選取記錄檔的傳送頻率 (例如 every 60 seconds)。
  5. 按一下「驗證並儲存」,驗證與目的地的連線,並儲存您提供的詳細資料。

  6. 按一下「下一步」,前往「摘要」分頁。

設定動態饋給

在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:

  • 「SIEM 設定」>「動態消息」
  • 內容中心 > 內容包

使用 Google Cloud 儲存空間,依序前往「SIEM 設定」>「動態饋給」設定動態饋給

如要設定動態消息,請按照下列步驟操作:

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給的名稱 (例如「Akamai WAF Logs」)。
  5. 選取「Google Cloud Storage」做為「來源類型」。
  6. 選取「Akamai WAF」做為「記錄類型」
  7. 按一下「Chronicle 服務帳戶」的「取得服務帳戶」
  8. 點選「下一步」
  9. 指定下列輸入參數的值:

    • 儲存空間值區 URI:儲存空間值區網址 (例如 gs://akamai-waf-logs)。 Google Cloud
    • 「URI Is A」(URI 為):選取「Directory which includes subdirectories」(包含子目錄的目錄)
    • 來源刪除選項:根據偏好設定選取刪除選項。
  10. 點選「下一步」

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

從內容中心設定動態饋給

為下列欄位指定值:

  • 儲存空間值區 URI:儲存空間值區網址 (例如 gs://akamai-waf-logs)。 Google Cloud
  • 「URI Is A」(URI 為):選取「Directory which includes subdirectories」(包含子目錄的目錄)
  • 來源刪除選項:根據偏好設定選取刪除選項。

進階選項

  • 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
  • 來源類型:將記錄收集到 Google SecOps 的方法。
  • 資產命名空間:與動態饋給相關聯的命名空間。
  • 擷取標籤:套用至這個動態饋給所有事件的標籤。

從 AWS S3 匯出及擷取 Akamai WAF 記錄

本節說明設定 Amazon S3 值區的初始步驟,以便接收及儲存 Akamai WAF 記錄。

設定 Amazon S3 儲存貯體

  1. 按照這份使用者指南建立 Amazon S3 值區建立值區
  2. 儲存值區「名稱」和「區域」,以供日後參考。
  3. 請按照這份使用者指南建立使用者建立 IAM 使用者
  4. 選取建立的「使用者」
  5. 選取「安全憑證」分頁標籤。
  6. 在「Access Keys」部分中,按一下「Create Access Key」
  7. 選取「第三方服務」做為「用途」
  8. 點選「下一步」
  9. 選用:新增說明標記。
  10. 按一下「建立存取金鑰」
  11. 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後參考。
  12. 按一下 [完成]
  13. 選取「權限」分頁標籤。
  14. 在「權限政策」部分中,按一下「新增權限」
  15. 選取「新增權限」
  16. 選取「直接附加政策」
  17. 搜尋「AmazonS3FullAccess」AmazonS3FullAccess政策。
  18. 選取政策。
  19. 點選「下一步」
  20. 按一下「新增權限」

設定 Akamai WAF,將記錄傳送至 Amazon S3

  1. 登入 Akamai Control Center。
  2. 前往「安全性」部分。
  3. 選取「記錄」
  4. 設定新的記錄檔傳送:

    • 記錄來源:選取 WAF 設定。
    • 目的地:選擇「Amazon S3」
    • S3 值區:指定您建立的 S3 值區名稱。
    • 地區:選取 S3 值區所在的 AWS 地區。
    • 存取金鑰 ID 和私密存取金鑰:提供您產生的憑證。
    • 記錄格式:選擇所需記錄格式 (例如 JSON)。
    • 傳送頻率:選取記錄傳送頻率 (例如「每 5 分鐘」)。

  5. 確認記錄傳送的情形:

    • 設定 LDS 後,請監控 S3 bucket 是否有傳入的記錄檔。

使用 AWS S3,透過 SIEM 設定 > 動態饋給設定動態饋給

如要設定動態消息,請按照下列步驟操作:

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給的名稱 (例如「Akamai WAF Logs」)。
  5. 選取「Amazon S3」做為「來源類型」
  6. 選取「Akamai WAF」做為「記錄類型」
  7. 點選「下一步」
  8. 指定下列輸入參數的值:

    • 區域:Amazon S3 值區所在的區域。
    • S3 URI:值區 URI。s3:/BUCKET_NAME 取代下列項目:
      • BUCKET_NAME:值區名稱。
    • 「URI is a」:根據記錄串流設定選取 URI 類型:「Single file」|「Directory」|「Directory which includes subdirectories」
    • 來源刪除選項:根據偏好設定選取刪除選項。
    • 存取金鑰 ID:具有 S3 bucket 存取權的使用者存取金鑰。
    • 存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰。
  9. 點選「下一步」

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

UDM 對應表

記錄欄位 (遞增) UDM 對應 邏輯
attackData.clientIP principal.ipprincipal.asset.ip 發出要求的用戶端 IP 位址。從 akamai_siem 記錄檔的 attackData.clientIP 欄位擷取。
attackData.configId metadata.product_log_id 安全性設定 ID。從 akamai_siem 記錄檔的 attackData.configId 欄位擷取。也新增為 security_result 物件中的 detection_field。
attackData.policyId 不適用 用於剖析器邏輯,以 PolicyId:[value] 值填入 security_result.summary
attackData.ruleActions security_result.actionsecurity_result.action_details 根據觸發的規則採取的動作。從 akamai_siem 記錄檔的 attackData.ruleActions 欄位擷取。「deny」會對應至 BLOCK,其他值 (「alert」、「monitor」、「allow」、「tarpit」) 則會對應至 ALLOW。原始值也會儲存在 action_details 中。
attackData.ruleData security_result.detection_fields 與觸發規則相關聯的資料。從 akamai_siem 記錄檔的 attackData.ruleData 欄位擷取。已新增至 security_result.detection_fields,並使用「RuleData」鍵。
attackData.ruleMessages security_result.threat_name 與觸發規則相關聯的訊息。從 akamai_siem 記錄檔的 attackData.ruleMessages 欄位擷取。
attackData.ruleSelectors security_result.detection_fields 與觸發規則相關聯的選取器。從 akamai_siem 記錄檔的 attackData.ruleSelectors 欄位擷取。已新增至 security_result.detection_fields,金鑰為「RuleSelector」。
attackData.ruleTags security_result.category_details 與觸發規則相關聯的標記。從 akamai_siem 記錄檔的 attackData.ruleTags 欄位擷取。
attackData.ruleVersions security_result.detection_fields 觸發的規則版本。從 akamai_siem 記錄檔的 attackData.ruleVersions 欄位擷取。已新增至 security_result.detection_fields,並使用「規則版本」鍵。
clientReputation principal.labels 客戶信譽資訊。從 akamai_siem 記錄檔的 clientReputation 欄位擷取。以「reputation」為鍵,新增為主體的標籤。
cliIPcli_ipprincipal_ip principal.ipprincipal.asset.ip 用戶端 IP 位址,視記錄格式而定,從 cliIPcli_ipprincipal_ip 擷取。
cp additional.fields CP 代碼。從「cp」欄位擷取。已新增至 additional.fields,索引鍵為「cp」。
eventId metadata.product_log_id 活動 ID。從「eventId」欄位擷取。
eventTimelog_date metadata.event_timestamp 事件時間戳記。視記錄格式而定,可從 eventTime 擷取或從 log_date 剖析。
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id 事件定義 ID。摘錄自「eventType.eventDefinition.eventDefinitionId」。
eventType.eventDefinition.eventDescription metadata.description 活動說明。摘錄自「eventType.eventDefinition.eventDescription」。
eventType.eventDefinition.eventName metadata.product_event_type 活動名稱。摘錄自「eventType.eventDefinition.eventName」。
eventType.eventTypeId additional.fields 事件類型 ID。摘錄自「eventType.eventTypeId」。已新增至 additional.fields,索引鍵為「eventTypeId」。
eventType.eventTypeName additional.fields 事件類型名稱。摘錄自「eventType.eventTypeName」。已新增至 additional.fields,並使用「eventTypeName」鍵。
format 不適用 剖析器會使用這項資訊判斷記錄格式。
geo.asn principal.location.name 自治系統編號 (ASN)。視記錄格式而定,從 geo.asnAkamaiSiemASN 擷取。值的前置字串為「ASN 」。
geo.city principal.location.city 市區鄉鎮。視記錄格式而定,從 geo.cityAkamaiSiemCity 擷取。
geo.country principal.location.country_or_region 國家/地區。視記錄格式而定,從 geo.countryAkamaiSiemContinent 擷取。
httpMessage.bytes network.sent_bytes HTTP 訊息中傳送的位元組數。摘錄自「httpMessage.bytes」。
httpMessage.host target.hostnametarget.asset.hostname 主機名稱。視記錄格式而定,從 httpMessage.hostreqHost 擷取。
httpMessage.method network.http.method HTTP 方法。視記錄格式而定,從 httpMessage.methodnetwork_http_methodreqMethod 擷取。轉換為大寫。
httpMessage.path target.url 要求路徑。視記錄格式而定,從 httpMessage.pathtarget_urlreqPath 擷取。如果存在 httpMessage.query,則會以「?」分隔符號附加至路徑。
httpMessage.port target.port 通訊埠。視記錄格式而定,從 httpMessage.portreqPort 擷取。
httpMessage.protocol 不適用 剖析器會使用這項屬性判斷通訊協定。
httpMessage.query 不適用 用於剖析器邏輯,在存在時附加至 httpMessage.path
httpMessage.requestId network.session_id 要求 ID。視記錄格式而定,從 httpMessage.requestIdreqId 擷取。
httpMessage.requestHeadersAkamaiSiemRequestHeaders additional.fields 要求標頭。視記錄格式而定,從 httpMessage.requestHeadersAkamaiSiemRequestHeaders 擷取。已新增至「additional.fields」,金鑰為「AkamaiSiemRequestHeaders」。
httpMessage.responseHeadersAkamaiSiemResponseHeaders additional.fields 回應標頭。視記錄格式而定,從 httpMessage.responseHeadersAkamaiSiemResponseHeaders 擷取。已新增至 additional.fields,並使用「AkamaiSiemResponseHeaders」鍵。
httpMessage.statusAkamaiSiemResponseStatusnetwork_http_response_codestatusCode network.http.response_code HTTP 回應代碼。視記錄格式而定,從 httpMessage.statusAkamaiSiemResponseStatusnetwork_http_response_codestatusCode 擷取。
httpMessage.tlsAkamaiSiemTLSVersiontlsVersion network.tls.version 傳輸層安全標準 (TLS) 版本。視記錄格式而定,從 httpMessage.tlsAkamaiSiemTLSVersiontlsVersion 擷取。
httpMessage.useragentnetwork_http_user_agentUAuseragent network.http.user_agent 使用者代理程式。視記錄格式而定,從 httpMessage.useragentnetwork_http_user_agentUAuseragent 擷取。
log_description metadata.description 記錄說明。摘錄自「log_description」。
log_rule security_result.rule_name 記錄規則。摘錄自「log_rule」。
message 不適用 原始記錄訊息。剖析器會使用這項屬性進行各種擷取作業。
network_http_referral_url network.http.referral_url HTTP 參照網址。摘錄自「network_http_referral_url」。
proto 不適用 用於剖析器邏輯,在沒有 attackData.policyId 的情況下填入 security_result.summary
reqHost target.hostnametarget.asset.hostname 要求主機。摘錄自「reqHost」。
reqId metadata.product_log_idnetwork.session_id 要求 ID。摘錄自「reqId」。
reqMethod network.http.method 要求方法。摘錄自「reqMethod」。
reqPath target.url 要求路徑。摘錄自「reqPath」。
reqPort target.port 要求通訊埠。摘錄自「reqPort」。
rspContentType target.file.mime_type 回應內容類型。摘錄自「rspContentType」。
securityRules security_result.rule_namesecurity_result.about.resource.attribute.labels 安全性規則。摘錄自「securityRules」。第一部分會對應至 rule_name,其餘部分則會以「non_deny_rules」和「deny_rule_format」鍵新增為標籤。
statusCode network.http.response_code 狀態碼。摘錄自「statusCode」。
state principal.location.statetarget.user.personal_address.state 州/省,摘錄自「state」。
tlsVersion network.tls.version 傳輸層安全標準 (TLS) 版本。摘錄自「tlsVersion」。
type metadata.product_event_type 活動類型。摘錄自「type」。
UA network.http.user_agent 使用者代理程式。摘錄自「UA」。
version metadata.product_versionprincipal.asset.software.version 版本。摘錄自「version」。
不適用 metadata.event_timestamp 事件時間戳記衍生自 akamai_lds 記錄中的 _ts 欄位、akamai_siem 記錄中的 httpMessage.start 欄位,或其他格式中的 log_date 欄位。
不適用 metadata.vendor_name 已硬式編碼為「Akamai」。
不適用 metadata.product_name 硬式編碼為「Kona」。
不適用 metadata.log_type 硬式編碼為「AKAMAI_WAF」。
不適用 network.application_protocol 如果是 akamai_siem 和 akamai_lds 記錄,請設為「HTTP」;如果是其他格式,請設為「DNS」。
不適用 security_result.severity 如果是「alert」動作,請設為 MEDIUM;如果是「deny」動作,請設為 CRITICAL;如果是其他動作,請設為 HIGH。
不適用 event.idm.read_only_udm.metadata.event_type 如為大多數記錄格式,請設為「NETWORK_HTTP」;如為含有 eventIdeventData 欄位的事件,請設為「GENERIC_EVENT」;如為含有 cli_ipp_ip 但沒有 reqHost 的事件,請設為「STATUS_UPDATE」。

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