收集 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. 在「Details」分頁中,從「Endpoint Information」欄位複製動態饋給端點網址。您必須在用戶端應用程式中指定這個端點網址。
  14. 按一下 [完成]

透過內容中心設定動態饋給

指定下列欄位的值:

  • 分隔符號:用於分隔記錄行 (例如 \n) 的分隔符號。

進階選項

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

  • 按一下「產生密鑰」,即可產生密鑰來驗證這項動態饋給。

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

  • 在「Details」分頁中,從「Endpoint Information」欄位複製動態饋給端點網址。您必須在用戶端應用程式中指定這個端點網址。

為 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 陣列。

異動

2024-03-11

  • 移除 JSON 記錄檔結尾的無效字元,以便剖析未剖析的記錄檔。
  • 已對齊「principal.ip」和「principal.asset.ip」對應項目。
  • 對齊「target.ip」和「target.asset.ip」對應項目。

2024-02-08

  • 新建的剖析器。

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