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. [ソースタイプ] として [Webhook] を選択します。
  5. [ログタイプ] として [OpenCanary] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 次の入力パラメータの値を指定します。
    • 分割区切り文字: ログ行を区切るために使用される区切り文字(\n など)。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  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

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