收集 OpenCanary 記錄

支援的國家/地區:

總覽

這個剖析器會從 OpenCanary SYSLOG 和 JSON 記錄檔中擷取欄位,將其正規化為 UDM 格式,並使用衍生欄位 (例如 metadata.event_typesecurity_result.severity) 擴充資料。可處理各種記錄檔格式、執行 IP 位址驗證,並將欄位對應至適當的 UDM 物件,例如 principaltargetnetwork

事前準備

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

  • Google SecOps 執行個體。
  • OpenCanary 的特殊存取權。

設定動態饋給

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

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

依序前往「SIEM 設定」>「動態饋給」,設定動態饋給

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

  1. 依序前往「SIEM 設定」>「動態消息」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中,輸入動態饋給的名稱,例如「OpenCanary Logs」
  5. 選取「Webhook」做為「來源類型」
  6. 選取「OpenCanary」做為「記錄類型」
  7. 點選「下一步」
  8. 選用:指定下列輸入參數的值:
    • 分割分隔符號:用於分隔記錄行的分隔符號,例如 \n
  9. 點選「下一步」
  10. 在「Finalize」畫面中檢查動態饋給設定,然後按一下「Submit」
  11. 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
  12. 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。
  13. 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。
  14. 按一下 [完成]

從內容中心設定動態饋給

為下列欄位指定值:

  • 分割分隔符號:用於分隔記錄行的分隔符號,例如 \n

進階選項

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

  • 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。

  • 複製並儲存密鑰。您無法再次查看這個密鑰。如有需要,您可以重新產生新的密鑰,但這項操作會使先前的密鑰失效。

  • 在「詳細資料」分頁中,從「端點資訊」欄位複製動態消息端點網址。您需要在用戶端應用程式中指定這個端點網址。

為 Webhook 資訊提供建立 API 金鑰

  1. 前往 Google Cloud 控制台 > 憑證

    前往「憑證」

  2. 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)

  3. 將 API 金鑰存取權限制在 Google Security Operations API

指定端點網址

  1. 在用戶端應用程式中,指定 webhook 動態饋給中提供的 HTTPS 端點網址。
  2. 如要啟用驗證,請在自訂標頭中指定 API 金鑰和私密金鑰,格式如下:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    建議:請將 API 金鑰指定為標頭,而非在網址中指定。

  3. 如果 Webhook 用戶端不支援自訂標頭,您可以使用查詢參數指定 API 金鑰和密鑰,格式如下:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    更改下列內容:

    • ENDPOINT_URL:動態消息端點網址。
    • API_KEY:用於向 Google Security Operations 進行驗證的 API 金鑰。
    • SECRET:您產生的密鑰,用於驗證動態饋給。

為 Google SecOps 設定 OpenCanary Webhook

  1. 找出 OpenCanary 設定檔 config.json

  2. 使用文字編輯器開啟 config.json 檔案。

  3. 在設定檔中找出標示為「alerters」的部分。

  4. 如果已存在 webhook 警報器,請修改該警報器。否則,請為 webhook 警報器新增項目。

  5. 使用下列設定 (將 ENDPOINT_URLSECRETAPI_KEY 換成您的值):

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. 儲存 config.json 檔案。
  2. 重新啟動 OpenCanary 服務,即可套用變更。(例如 sudo systemctl restart opencanary)。

UDM 對應表

記錄欄位 UDM 對應 邏輯
dst_host target.asset.ip 原始記錄的 dst_host 欄位會對應至 UDM。也對應到「target.ip」。
dst_host target.ip 原始記錄的 dst_host 欄位會對應至 UDM。也對應到「target.asset.ip」。
dst_port target.port 原始記錄的 dst_port 欄位會轉換為字串,然後轉換為整數,並對應至 UDM。
local_time metadata.event_timestamp 原始記錄的 local_time 欄位會用於填入 UDM 中的 metadata.event_timestamp。如果沒有 local_time 欄位,剖析器會使用批次物件中的 create_time
local_time_adjusted security_result.detection_fields 原始記錄的 local_time_adjusted 欄位會以鍵/值組合的形式,新增至 UDM 的 security_result.detection_fields 陣列。
logdata.COMMUNITY_STRING security_result.detection_fields 原始記錄的 logdata.COMMUNITY_STRING 欄位會以鍵/值組合的形式,新增至 UDM 的 security_result.detection_fields 陣列。
logdata.DOMAIN principal.administrative_domain 原始記錄的 logdata.DOMAIN 欄位會對應至 UDM。
logdata.FILENAME target.file.full_path 原始記錄的 logdata.FILENAME 欄位會對應至 UDM。
logdata.HOSTNAME principal.asset.hostname 如果 logdata.HOSTNAME 欄位不是 IP 位址,則會對應至 UDM。也對應到「principal.hostname」。
logdata.HOSTNAME principal.asset.ip 如果 logdata.HOSTNAME 欄位是 IP 位址,則會對應至 UDM。也對應到「principal.ip」。
logdata.HOSTNAME principal.hostname 如果 logdata.HOSTNAME 欄位不是 IP 位址,則會對應至 UDM。也對應到「principal.asset.hostname」。
logdata.HOSTNAME principal.ip 如果 logdata.HOSTNAME 欄位是 IP 位址,則會對應至 UDM。也對應到「principal.asset.ip」。
logdata.LOCALNAME principal.asset.hostname 原始記錄的 logdata.LOCALNAME 欄位會對應至 UDM。也對應到「principal.hostname」。
logdata.LOCALNAME principal.hostname 原始記錄的 logdata.LOCALNAME 欄位會對應至 UDM。也對應到「principal.asset.hostname」。
logdata.LOCALVERSION principal.platform_version 原始記錄的 logdata.LOCALVERSION 欄位會對應至 UDM。
logdata.PASSWORD extensions.auth.mechanism 如果存在 logdata.PASSWORD 欄位,剖析器就會觸發,在 UDM 中將 extensions.auth.mechanism 設為 USERNAME_PASSWORD
logdata.PATH network.http.referral_url 原始記錄的 logdata.PATH 欄位會對應至 UDM。
logdata.REMOTENAME target.asset.hostname 原始記錄的 logdata.REMOTENAME 欄位會對應至 UDM。也對應到「target.hostname」。
logdata.REMOTENAME target.hostname 原始記錄的 logdata.REMOTENAME 欄位會對應至 UDM。也對應到「target.asset.hostname」。
logdata.REMOTEVERSION target.platform_version 原始記錄的 logdata.REMOTEVERSION 欄位會對應至 UDM。
logdata.SMBVER network.application_protocol 如果存在 logdata.SMBVER 欄位,剖析器就會觸發,在 UDM 中將 network.application_protocol 設為 SMB
logdata.USERAGENT network.http.parsed_user_agent 原始記錄的 logdata.USERAGENT 欄位會轉換為已剖析的使用者代理程式,並對應至 UDM。
logdata.USERAGENT network.http.user_agent 原始記錄的 logdata.USERAGENT 欄位會對應至 UDM。
logdata.USERNAME target.user.userid 原始記錄的 logdata.USERNAME 欄位會對應至 UDM。
loglevel security_result.severity 原始記錄的 loglevel 欄位會決定 UDM 中的 security_result.severityWARNING 會對應到 HIGHINFO/INFORMATION 會對應到 LOW
logtype security_result.detection_fields 原始記錄的 logtype 欄位會以鍵/值組合的形式,新增至 UDM 的 security_result.detection_fields 陣列。
node_id principal.asset.asset_id 原始記錄的 node_id 欄位會加上「id:」前置字串,並對應至 UDM。
src_host principal.asset.ip 原始記錄的 src_host 欄位會對應至 UDM。也對應到「principal.ip」。
src_host principal.ip 原始記錄的 src_host 欄位會對應至 UDM。也對應到「principal.asset.ip」。
src_port principal.port 原始記錄的 src_port 欄位會轉換為整數,並對應至 UDM。
utc_time security_result.detection_fields 原始記錄的 utc_time 欄位會以鍵/值組合的形式,新增至 UDM 的 security_result.detection_fields 陣列。

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