Windows Hyper-V ログを収集する

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

このドキュメントでは、Bindplane を使用して Windows Hyper-V ログを Google Security Operations に取り込む方法について説明します。

Windows Hyper-V は、VM のライフサイクル、ネットワーク、ストレージ、セキュリティ イベントログを生成する Microsoft ハイパーバイザです。Bindplane エージェントは、エクスポートされた Hyper-V イベントログ ファイルをローカル ファイル システムから直接収集します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • observiq-otel-collector サービスをサポートする Windows Server 2016 以降
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • 管理者権限で Windows Hyper-V ホストへの特権アクセス

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. 取り込み認証ファイル をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows オペレーティング システムに Bindplane エージェントをインストールします。

Windows へのインストール

  1. 管理者としてコマンド プロンプト または PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまでお待ちください。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

サービスは RUNNING と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

ログを取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを探す

  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集する

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
        filelog:
            include:
                - C:\HyperVLogs\*.evtx
            start_at: beginning
    
    exporters:
        chronicle/windows_hyperv:
            compression: gzip
            creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: WINDOWS_HYPERV
            raw_log_field: body
            ingestion_labels:
                env: production
    
    service:
        pipelines:
            logs/hyperv_to_chronicle:
                receivers:
                    - filelog
                exporters:
                    - chronicle/windows_hyperv
    

構成パラメータ

各プレースホルダを次のように置き換えます。

  • レシーバーの構成:

    • filelog: ディスクからログファイルを収集するためのレシーバー タイプ
    • include: モニタリングするファイルパスのリスト。Hyper-V イベントログをエクスポートする場所に設定します(例: C:\HyperVLogs\*.evtx)。
    • start_at: 既存のログを読み取る場合は beginning、新しいエントリのみを読み取る場合は end に設定します。
  • エクスポータの構成:

    • windows_hyperv: エクスポータの説明名
    • creds_file_path: 取り込み認証ファイルのフルパス:
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: 前のステップのお客様 ID
    • endpoint: リージョン エンドポイント URL:
      • 米国: malachiteingestion-pa.googleapis.com
      • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
      • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
      • 完全なリストについては、リージョン エンドポイントをご覧ください。
    • WINDOWS_HYPERV: Chronicle に表示されるログタイプ
    • ingestion_labels: YAML 形式のオプションのラベル(例: env: production
  • パイプラインの構成:

    • hyperv_to_chronicle: パイプラインの説明名

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Windows: [File > Save] をクリックします。

Bindplane エージェントを再起動して変更を適用する

Windows で Bindplane エージェントを再起動するには:

  1. 次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • サービス コンソール:
      1. Win+R を押して services.msc と入力し、Enter キーを押します。
      2. [observIQ OpenTelemetry Collector] を探します。
      3. 右クリックして [再起動] を選択します。
  2. サービスが実行されていることを確認します。

    sc query observiq-otel-collector
    
  3. ログでエラーを確認します。

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Windows Hyper-V ログのエクスポートを構成する

Windows Hyper-V ログは、Windows イベントログ エントリとして保存されます。Bindplane エージェントが収集できるように、これらのログをディスク上のファイルにエクスポートする必要があります。

  1. エクスポートしたログファイルを保存するディレクトリを作成します。

    mkdir C:\HyperVLogs
    
  2. wevtutil を使用して Hyper-V イベントログをエクスポートします。

    wevtutil epl Microsoft-Windows-Hyper-V-VMMS-Admin C:\HyperVLogs\hyperv-vmms-admin.evtx
    wevtutil epl Microsoft-Windows-Hyper-V-Worker-Admin C:\HyperVLogs\hyperv-worker-admin.evtx
    

    必要に応じて、追加の Hyper-V イベント チャネルをエクスポートできます。指定できるチャンネルは次のとおりです。

    • Microsoft-Windows-Hyper-V-VMMS-Admin(仮想マシン管理サービス)
    • Microsoft-Windows-Hyper-V-Worker-Admin(VM ワーカー プロセス)
    • Microsoft-Windows-Hyper-V-Hypervisor-Admin(ハイパーバイザ イベント)
    • Microsoft-Windows-Hyper-V-Config-Admin(構成イベント)
  3. (省略可)PowerShell を使用して定期的なエクスポートをスケジュールします。

    $action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument '/c wevtutil epl Microsoft-Windows-Hyper-V-VMMS-Admin C:\HyperVLogs\hyperv-vmms-admin.evtx /ow:true && wevtutil epl Microsoft-Windows-Hyper-V-Worker-Admin C:\HyperVLogs\hyperv-worker-admin.evtx /ow:true'
    $trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Hours 1) -Once -At (Get-Date)
    Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "ExportHyperVLogs" -Description "Export Hyper-V logs for Bindplane agent"
    
  4. エクスポートされたログファイルが `C:\HyperVLogs` に作成されていることを確認します。

  5. config.yaml の Bindplane エージェントの include パスがエクスポート ディレクトリと一致していることを確認します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
channel, event_data.data, event_id.id, event_id.qualifiers, keywords, task, SeverityValue, OpcodeValue, EventID, ProviderGuid, ActivityId, Version, RecordNumber, ProcessID, ThreadID, Channel, AccountName, UserID, AccountType, Opcode, SourceModuleName, SourceModuleType additional.fields これらのフィールドから作成されたラベルとマージされます。
system_time, EventReceivedTime metadata.collected_timestamp system_time から形式で解析されるか、EventReceivedTime から UNIX または UNIX_MS として解析されます。
メッセージ metadata.description 値を直接コピー
EventTime, EventReceivedTime metadata.event_timestamp EventTime から UNIX または UNIX_MS として解析されるか、EventReceivedTime から UNIX または UNIX_MS として解析されます。
metadata.event_type has_principal と has_target_process の場合は「PROCESS_LAUNCH」、has_principal と has_target で has_target_process でない場合は「USER_LOGIN」、has_principal で has_target でない場合は「STATUS_UPDATE」、has_target の場合は「USER_RESOURCE_ACCESS」、それ以外の場合は「GENERIC_EVENT」に設定します。
provider.event_source metadata.product_event_type 値を直接コピー
record_id, RecordNumber metadata.product_log_id 空でない場合は record_id から、空でない場合は RecordNumber から文字列に変換されます。
provider.name, SourceName metadata.product_name 空でない場合は provider.name の値、空でない場合は SourceName の値、それ以外の場合は「Microsoft-Windows-Hyper-V」
バージョン metadata.product_version 文字列に変換
メッセージ network.session_duration.nanos Grok パターンを使用してメッセージから抽出され、整数に変換されます。
ドメイン principal.administrative_domain 値を直接コピー
パソコン principal.asset.hostname 値を直接コピー
パソコン, ホスト名 principal.hostname 空でない場合はパソコンの値、空でない場合はホスト名の値
AccountName principal.user.role_description 値を直接コピー
AccountType principal.user.role_name 値を直接コピー
event_data.name principal.user.user_display_name 値を直接コピー
security.user_id, UserID principal.user.userid 空でない場合は security.user_id の値、空でない場合は UserID の値
メッセージ security_result.description Grok パターンを使用してメッセージから抽出
メッセージ, ActivityId security_result.detection_fields Grok を使用してメッセージから抽出された nt_status と ActivityId のラベルとマージされます。
level, Severity security_result.severity レベルの値(1 ~ 3 INFORMATIONAL、4 ERROR、5 CRITICAL、それ以外は UNKNOWN_SEVERITY)または Severity(INFO INFORMATIONAL、WARN MEDIUM、ERROR ERROR)に基づいて設定します。
EventType security_result.severity_details 値を直接コピー
execution.process_id, ProcessID target.process.pid 空でない場合は execution.process_id から、空でない場合は ProcessID から文字列に変換されます。
execution.thread_id, ThreadID target.process.product_specific_process_id 空でない場合は execution.thread_id から、空でない場合は ThreadID から「ThreadID: 」に設定します。
provider.guid, ProviderGuid target.resource.id { } を削除した後の provider.guid の値、または { } を削除した後の ProviderGuid の値
メッセージ target.resource.product_object_id Grok パターンを使用してメッセージから抽出
provider.guid target.resource.type 空でない場合は「Hyper-V VmSwitch」に設定します。

変更履歴

このパーサーの変更履歴を表示する

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