Elastic Windows Event Log Beats のログを収集する

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

このドキュメントでは、Bindplane エージェントを使用して Elastic Windows Event Log Beats ログを Google Security Operations に取り込む方法について説明します。

Winlogbeat は、Elastic の Windows 固有のイベントログ転送エージェントです。Windows イベントログを収集し、さまざまな宛先に転送します。Windows システムで Windows サービスとして実行され、Application、Security、System などの Windows イベントログ チャネルからイベントを収集できます。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または Bindplane エージェントを実行するための systemd を備えた Linux ホスト
  • Bindplane エージェントと Logstash サーバー間のネットワーク接続
  • Logstash と Bindplane エージェント間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • イベントログを収集するために Winlogbeat をインストールする Windows システム
  • Winlogbeat のインストールに必要な Windows システムへの管理者アクセス権
  • 中間処理用の Logstash サーバー(バージョン 7.x または 8.x)

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

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

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

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

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

次の手順に沿って、Windows または Linux オペレーティング システムに 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 になります。

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. インストールが完了するまで待ちます。

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

    sudo systemctl status observiq-otel-collector
    

    サービスのステータスが [active (running)] になります。

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

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

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

構成ファイルを見つける

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

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

構成ファイルを編集します。

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

    receivers:
        tcplog:
            listen_address: "0.0.0.0:1514"
    
    exporters:
        chronicle/winlogbeat:
            compression: gzip
            creds_file_path: '<CREDS_FILE_PATH>'
            customer_id: '<CUSTOMER_ID>'
            endpoint: <REGION_ENDPOINT>
            log_type: ELASTIC_WINLOGBEAT
            raw_log_field: body
            ingestion_labels:
                env: production
                source: winlogbeat
    
    service:
        pipelines:
            logs/winlogbeat_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/winlogbeat
    
  2. 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • listen_address: ポート 1514(TCP)のすべてのインターフェースでリッスンするように 0.0.0.0:1514 に設定します。必要に応じてポート番号を変更できますが、Logstash syslog 出力構成と一致していることを確認してください。
    • エクスポータの構成:

      • <CREDS_FILE_PATH>: 取り込み認証ファイルのフルパス:

        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • <CUSTOMER_ID>: 前の手順の顧客 ID

      • <REGION_ENDPOINT>: リージョン エンドポイント URL:

        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。

構成の例:

  • receivers:
      tcplog:
        listen_address: "0.0.0.0:1514"
    
    exporters:
      chronicle/winlogbeat:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ELASTIC_WINLOGBEAT
        raw_log_field: body
        ingestion_labels:
          env: production
          source: winlogbeat
    
    service:
      pipelines:
        logs/winlogbeat_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/winlogbeat
    

構成ファイルを保存する

編集が完了したら、ファイルを保存します。

  • Linux: Ctrl+OEnterCtrl+X の順に押します。
  • Windows: [ファイル>保存] をクリックします。

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

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

    1. 次のコマンドを実行します。

      sudo systemctl restart observiq-otel-collector
      
    2. サービスが実行されていることを確認します。

      sudo systemctl status observiq-otel-collector
      
    3. ログでエラーを確認します。

      sudo journalctl -u observiq-otel-collector -f
      
  • 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"
      

Logstash をインストールして構成する

Logstash は、Winlogbeat からイベントを受信し、syslog 経由で Bindplane エージェントに転送する仲介役として必要です。Winlogbeat にはネイティブの syslog 出力機能がありません。

Logstash をインストールする

  1. Elastic ダウンロード ページから Logstash をダウンロードします。
  2. Windows サーバーまたは Linux サーバーに Logstash をインストールします。
  • Linux(Debian/Ubuntu):

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    sudo apt-get install apt-transport-https
    echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
    sudo apt-get update && sudo apt-get install logstash
    
  • Linux(RHEL/CentOS):

    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    sudo tee /etc/yum.repos.d/logstash.repo <<EOF
    [logstash-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    EOF
    sudo yum install logstash
    
  • Windows:

    1. Elastic のダウンロード ページから ZIP ファイルをダウンロードします。
    2. C:\logstash に抽出します。

Logstash パイプラインを構成する

  1. 新しいパイプライン構成ファイルを作成します。

    • Linux:

      sudo nano /etc/logstash/conf.d/winlogbeat-to-syslog.conf
      
    • Windows:

      notepad "C:\logstash\config\winlogbeat-to-syslog.conf"
      
  2. 次の構成を追加します。

    input {
        beats {
            port => 5044
        }
    }
    
    output {
        syslog {
            host => "<BINDPLANE_AGENT_IP>"
            port => 1514
            protocol => "tcp"
            rfc => "rfc5424"
            appname => "winlogbeat"
            facility => "user-level"
            severity => "informational"
        }
    }
    
  3. <BINDPLANE_AGENT_IP> は、Bindplane エージェントを実行しているサーバーの IP アドレスに置き換えます。

Logstash 構成の例

  • input {
        beats {
            port => 5044
        }
    }
    
    output {
        syslog {
            host => "192.168.1.100"
            port => 1514
            protocol => "tcp"
            rfc => "rfc5424"
            appname => "winlogbeat"
            facility => "user-level"
            severity => "informational"
        }
    }
    

Logstash を起動する

  • Linux:

    1. Logstash を起動します。

      sudo systemctl start logstash
      sudo systemctl enable logstash
      
    2. Logstash が実行されていることを確認します。

      sudo systemctl status logstash
      
    3. Logstash ログを確認します。

      sudo tail -f /var/log/logstash/logstash-plain.log
      
  • Windows:

    cd C:\logstash\bin
    logstash.bat -f C:\logstash\config\winlogbeat-to-syslog.conf
    

    本番環境で使用する場合は、NSSM などのツールを使用して Logstash を Windows サービスとしてインストールします。

Windows システムに Winlogbeat をインストールする

Winlogbeat をダウンロードする

  1. Elastic のダウンロード ページから Winlogbeat をダウンロードします。
  2. Windows 用の ZIP または MSI インストーラを選択します。

Winlogbeat をインストールする

  • MSI インストーラを使用する場合:

    1. MSI インストーラを実行します。
    2. インストール ウィザードに沿って操作します。
    3. デフォルトの場所(C:\Program Files\Winlogbeat)にインストールします。
  • ZIP ファイルを使用する場合:

    1. ZIP ファイルを C:\Program Files\Winlogbeat に解凍します。
    2. 管理者として PowerShell を開きます。
    3. Winlogbeat ディレクトリに移動します。

      cd 'C:\Program Files\Winlogbeat'
      
    4. インストール スクリプトを実行します。

      .\install-service-winlogbeat.ps1
      

ログを Logstash に送信するように Winlogbeat を構成する

  1. Winlogbeat 構成ファイルを開きます。

    notepad "C:\Program Files\Winlogbeat\winlogbeat.yml"
    
  2. 収集するイベントログを構成します。winlogbeat.event_logs セクションを見つけて、次のように構成します。

    winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
      - name: System
      - name: Security
      - name: Microsoft-Windows-Sysmon/Operational
        ignore_older: 72h
      - name: Windows PowerShell
        event_id: 400, 403, 600, 800
      - name: Microsoft-Windows-PowerShell/Operational
        event_id: 4103, 4104, 4105, 4106
      - name: ForwardedEvents
        tags: [forwarded]
    
  3. 各行の先頭に # を追加して、Elasticsearch 出力セクションをコメントアウトします。

    #output.elasticsearch:
    #  hosts: ["localhost:9200"]
    
  4. Logstash 出力セクションのコメントを解除して構成します。

    output.logstash:
      hosts: ["<LOGSTASH_SERVER_IP>:5044"]
    
  5. <LOGSTASH_SERVER_IP> は、Logstash サーバーの IP アドレスに置き換えます。

Winlogbeat 構成の例

  • winlogbeat.event_logs:
      - name: Application
        ignore_older: 72h
      - name: System
      - name: Security
      - name: Microsoft-Windows-Sysmon/Operational
        ignore_older: 72h
    
    output.logstash:
      hosts: ["192.168.1.50:5044"]
    

構成ファイルを保存する

ファイルを保存して閉じます。

Winlogbeat サービスを開始する

  1. 管理者として PowerShell を開きます。
  2. Winlogbeat サービスを起動します。

    Start-Service winlogbeat
    
  3. サービスが実行されていることを確認します。

    Get-Service winlogbeat
    

    ステータスが [Running] と表示されます。

  4. Winlogbeat ログでエラーを確認します。

    Get-Content "C:\ProgramData\winlogbeat\Logs\winlogbeat" -Tail 50
    

ログフローを確認する

Winlogbeat と Logstash の接続を確認する

  1. Logstash サーバーで、Logstash ログを確認します。

    • Linux:

      sudo tail -f /var/log/logstash/logstash-plain.log
      
    • Windows:

      type C:\logstash\logs\logstash-plain.log
      
  2. Beats の接続を示すメッセージを探します。

    [INFO ][logstash.inputs.beats] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
    

Logstash と Bindplane エージェントの接続を確認する

  1. Bindplane エージェント サーバーで、エージェント ログを確認します。

    • Linux:

      sudo journalctl -u observiq-otel-collector -f
      
    • Windows:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      
  2. ログの取り込みが成功したことを示すメッセージを探します。

Google SecOps でログを確認する

  1. Google SecOps コンソールにログインします。
  2. [検索] に移動します。
  3. 検索クエリを実行して、Winlogbeat ログが取り込まれていることを確認します。

    metadata.log_type = "ELASTIC_WINLOGBEAT"
    
  4. Windows イベントログが検索結果に表示されることを確認します。

トラブルシューティング

Winlogbeat が Logstash に接続しない

  • Winlogbeat と Logstash 間のネットワーク接続を確認します。

    Test-NetConnection -ComputerName <LOGSTASH_IP> -Port 5044
    
  • Windows ファイアウォール ルールでポート 5044 でのアウトバウンド接続が許可されていることを確認します。

  • Logstash がポート 5044 でリッスンしていることを確認します。

    • Linux:

      sudo netstat -tulpn | grep 5044
      
    • Windows:

      netstat -an | findstr 5044
      

Logstash が Bindplane エージェントに転送しない

  • Logstash と Bindplane エージェント間のネットワーク接続を確認します。

    • Linux:

      telnet <BINDPLANE_IP> 1514
      
    • Windows:

      Test-NetConnection -ComputerName <BINDPLANE_IP> -Port 1514
      
  • ファイアウォール ルールでポート 1514 の TCP 接続が許可されていることを確認します。

  • Bindplane エージェントがポート 1514 でリッスンしていることを確認します。

    • Linux:

      sudo netstat -tulpn | grep 1514
      
    • Windows:

      netstat -an | findstr 1514
      

ログが Google SecOps に表示されない

  • 顧客 ID と取り込み認証ファイルが正しいことを確認します。
  • Bindplane エージェントのログで認証エラーを確認します。
  • リージョン エンドポイントが Google SecOps インスタンスのリージョンと一致していることを確認します。
  • log_typeELASTIC_WINLOGBEAT に設定されていることを確認します。

UDM マッピング テーブル

このパーサーではフィールド マッピング情報を使用できません。

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