OpenCanary のログを収集する

以下でサポートされています。

概要

このパーサーは、OpenCanary SYSLOG ログと JSON ログからフィールドを抽出し、UDM 形式に正規化して、metadata.event_typesecurity_result.severity などの派生フィールドでデータを拡充します。さまざまなログ形式を処理し、IP アドレスの検証を行い、フィールドを principaltargetnetwork などの適切な UDM オブジェクトにマッピングします。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • OpenCanary への特権アクセス権があることを確認します。

OpenCanary ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: OpenCanary Logs)。
  4. [Source type] として [Webhook] を選択します。
  5. [Log type] として [OpenCanary] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 次の入力パラメータの値を指定します。
    • Split delimiter: ログ行を区切るために使用される区切り文字(\n など)。
    • Asset namespace: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
  10. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  11. 秘密鍵をコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、その場合以前の秘密鍵は無効になります。
  12. [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。 このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
  13. [完了] をクリックします。

Webhook フィード用の API キーを作成する

  1. Google Cloud コンソール > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。

  3. API キーのアクセスを [Google Security Operations API] に制限します。

エンドポイント URL を指定する

  1. クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
  2. 次の形式でカスタム ヘッダーの一部として API キーと秘密鍵を指定して、認証を有効にします。

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

    推奨事項: API キーは URL 内ではなくヘッダーとして指定してください。

  3. Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーと秘密鍵を指定できます。

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    以下を置き換えます。

    • ENDPOINT_URL: フィードのエンドポイント 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 配列に Key-Value ペアとして追加されます。
logdata.COMMUNITY_STRING security_result.detection_fields 未加工ログの logdata.COMMUNITY_STRING フィールドは、UDM の security_result.detection_fields 配列に Key-Value ペアとして追加されます。
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.mechanismUSERNAME_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_protocolSMB に設定されます。
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.severity が決まります。WARNINGHIGH に、INFO/INFORMATIONLOW にマッピングされます。
logtype security_result.detection_fields 未加工ログの logtype フィールドは、UDM の security_result.detection_fields 配列に Key-Value ペアとして追加されます。
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 配列に Key-Value ペアとして追加されます。

変更

2024-03-11

  • 解析されていないログを解析するために、JSON ログの末尾にある無効な文字を削除しました。
  • 「principal.ip」と「principal.asset.ip」のマッピングを調整しました。
  • 「target.ip」と「target.asset.ip」のマッピングを調整しました。

2024-02-08

  • 新しく作成されたパーサー。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。