EfficientIP DDI ログを収集する

パーサーのバージョン: 9.0

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

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

EfficientIP SOLIDserver は、DNS、DHCP、IP アドレス管理、NTP、TFTP などの重要なネットワーク サービス向けに、拡張性、安全性、堅牢性に優れた仮想アプライアンスとハードウェア アプライアンスを提供する包括的な DDI(DNS-DHCP-IPAM)ソリューションです。このプラットフォームは、高度なモニタリング機能とセキュリティ機能を備え、ネットワーク インフラストラクチャの一元管理と自動化を実現します。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • Bindplane エージェントと EfficientIP SOLIDserver アプライアンス間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • EfficientIP SOLIDserver ウェブ コンソールへの管理者権限
  • SOLIDserver バージョン 8.0 以降(8.3.x と 8.4.x でテスト済み)

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新規デプロイ: Chronicle API を使用します(オプション 1)。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを ingestion-auth.json として Bindplane コレクタ ディレクトリ(Linux の場合は /opt/observiq-otel-collector/ingestion-auth.json、Windows の場合は C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に保存するか、config.yaml の creds_file_path を更新して、保存先のパスと一致させます。
  12. [IAM と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。エクスポーターの構成に必要になります。

オプション 2: 取り込み認証ファイルをダウンロードする(以前のバージョン)

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。
  4. 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(実行中)である必要があります。

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

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

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

構成ファイルを探します。

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

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

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

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/efficientip_ddi:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: EFFICIENTIP_DDI
        raw_log_field: body
        ingestion_labels:
          env: production
          source: solidserver
    
    service:
      pipelines:
        logs/efficientip_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/efficientip_ddi
    
  2. 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • listen_address: 0.0.0.0:514 に設定して、UDP ポート 514 のすべてのインターフェースをリッスンします。
        • Linux の非 root デプロイの場合は、ポート 1514 以降を使用します。
        • ポートが SOLIDserver の構成と一致していることを確認します。
    • エクスポータの構成:

      • creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1):

        • Linux: /opt/observiq-otel-collector/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: YOUR_CUSTOMER_ID は、前の手順のお客様 ID に置き換えます。

      • location: <LOCATION> は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポーターは、chronicle.googleapis.com の先頭にこの値を付加します。完全なリストについては、リージョン エンドポイントをご覧ください。

      • project: <PROJECT_NUMBER> を [IAM と管理] > [設定] のプロジェクト番号に置き換えます。

      • endpoint: chronicle.googleapis.com に設定したままにします。

      • log_type: EFFICIENTIP_DDI に設定します(完全一致が必要です)。

      • ingestion_labels: ログを分類するためのオプションのラベル(必要に応じてカスタマイズ)。

以前の取り込み API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(例: europe-malachiteingestion-pa.googleapis.com)に置き換えます。

    exporters:
      chronicle/efficientip_ddi:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: EFFICIENTIP_DDI
        raw_log_field: body
        ingestion_labels:
          env: production
          source: solidserver
    

構成ファイルを保存する

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

  • Linux: Ctrl+O、Enter、Ctrl+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"
      

EfficientIP DDI syslog 転送を構成する

  1. EfficientIP SOLIDserver ウェブ コンソールにログインします。
  2. 左側のナビゲーションで [管理] をクリックします。
  3. [モニタリング] セクションで、[構成] をクリックします。
  4. メニューで [+ 追加] をクリックします。
  5. [サービス] リストで、次のサービスを選択します。named(DNS ログ用)
  6. [ターゲット サーバー] フィールドに、Bindplane エージェント ホストの IP アドレスとポートを <ip-address>:<port> の形式で入力します。
    • 例: 192.168.1.100:514
    • Linux で標準以外のポートを使用している場合は、それに応じてポートを指定します(例: 192.168.1.100:1514)。
  7. [OK] をクリックして構成を保存します。

ログ転送を確認する

  1. Bindplane エージェントのログを調べて、ログが受信されていることを確認します。
    • Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  2. SOLIDserver からの DNS クエリと回答イベントを含むログエントリを探します。
  3. Google SecOps コンソールにログインし、EfficientIP DDI ログが [イベント] ページに表示されていることを確認します。

サポートされているログタイプ

この統合は、EfficientIP SOLIDserver から次のログタイプを収集します。

  • DNS クエリログ: クエリタイプ、ドメイン名、クライアント IP を含むクライアント DNS クエリ
  • DNS 回答ログ: 回答レコード、TTL、レスポンス コードを含む DNS レスポンス
  • DHCP ログ: DISCOVER、OFFER、REQUEST、ACK、NAK、RELEASE、INFORM などの DHCP オペレーション
  • DNS Guardian ログ: 不審な動作の検出、アラームのオン/オフのトリガーなどのセキュリティ イベント
  • DNS ゾーン転送ログ: ゾーン転送オペレーションと通知
  • DNS エラーログ: 形式エラー、SERVFAIL、REFUSED などの DNS エラー

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
ip_version additional.fields 空でない場合は、キー「ip_version」のラベルとして統合されます
message_size additional.fields 空でない場合は、キー「message_size」のラベルとして統合されます
domain_name additional.fields 空でない場合は、キー「domain_name」のラベルとして統合されます。
なし intermediary 中間オブジェクトから統合
説明 metadata.description 空でない場合、値が直接コピーされます
msg2 metadata.description event_type が GENERIC_EVENT で、説明が空の場合は、msg2 に設定します。
su_cmd metadata.event_type su_cmd が「sudo」の場合は「PROCESS_OPEN」に設定
activity_type metadata.event_type activity_type が dns と一致し、has_dns_questions が true の場合は、「NETWORK_DNS」に設定されます。
メッセージ metadata.event_type メッセージが dhcp と一致する場合は「NETWORK_DHCP」に設定されます。
inner_message metadata.event_type inner_message が特定のパターンに一致し、has_principal と has_target が true の場合は、「NETWORK_UNCATEGORIZED」に設定されます。
プロセス metadata.event_type プロセスが「named」で has_dns_questions が true の場合は「NETWORK_DNS」に設定します。プロセスが「named」で has_principal が true の場合は「STATUS_UPDATE」に設定します。プロセスが「named」の場合は「GENERIC_EVENT」に設定します。プロセスが「dhcpd」の場合は「NETWORK_DHCP」に設定します。
PWD metadata.event_type PWD が空でなく、has_target または has_principal が true の場合は「PROCESS_OPEN」に設定します。
activity_type metadata.product_event_type 値が直接コピーされる
なし metadata.vendor_name 「EFFICIENTIP_DDI」に設定します。
なし metadata.product_name 「EFFICIENTIP_DDI DHCP」に設定します。
activity_type network.application_protocol activity_type が dns と一致し、has_dns_questions が true の場合は「DNS」に設定されます。
メッセージ network.application_protocol メッセージが dhcp と一致する場合は「DHCP」に設定されます。
プロセス network.application_protocol プロセスが「named」の場合は「DNS」に設定されます。プロセスが「dhcpd」の場合は「DHCP」に設定されます。
src_mac network.dhcp.chaddr プロセスが「dhcpd」の場合、値は直接コピーされます。
src_ip network.dhcp.ciaddr dhcp_info が「REQUEST」の場合、値は直接コピーされます。
giaddr network.dhcp.giaddr 値を直接コピーする
dhcp_info network.dhcp.opcode dhcp_info が「INFORM」、「DISCOVER」、「REQUEST」の場合は「BOOTREQUEST」に設定し、dhcp_info が「OFFER」または「ACK」の場合は「BOOTREPLY」に設定します。
siaddr network.dhcp.siaddr 値が直接コピーされる
transaction_id network.dhcp.transaction_id 空または「0」でない場合、値は uinteger に変換されます。
dhcp_info network.dhcp.type dhcp_info が「INFORM」の場合は「INFORM」に設定します。dhcp_info が「DISCOVER」の場合は「DISCOVER」に設定します。dhcp_info が「OFFER」の場合は「OFFER」に設定します。dhcp_info が「REQUEST」の場合は「REQUEST」に設定します。dhcp_info が「PACK」の場合は「ACK」に設定します。
yiaddr network.dhcp.yiaddr 値が直接コピーされる
src_ip network.dhcp.yiaddr プロセスが「dhcpd」で、yiaddr が空の場合、src_ip に設定します。
answer_rrs network.dns.answers answer_rrs の各 rd の回答オブジェクトからマージ
なし network.dns.questions has_dns_questions が true の場合、questions オブジェクトからマージされます。
rcode network.dns.response_code 値が uinteger に変換されました
response_code network.dns.response_code 数値コードにマッピングされ、符号なし整数に変換された値
transport network.ip_protocol udp または tcp と一致する場合、値は大文字になります
observer observer.ip 値が ipaddress に変換されました
su_cmd principal.application su_cmd が「sudo」の場合、値は直接コピーされます。
プロセス principal.application プロセスが「named」または「dhcpd」の場合は、プロセスに設定します。
ホスト principal.asset.hostname 空でない場合、値が直接コピーされます。
hostname principal.asset.hostname 空でなく、ホストが空の場合、値は直接コピーされます。
src_ip principal.asset.ip 値を直接コピーする
asset_id principal.asset_id 「ID:」+ asset_id として連結されます。
ホスト principal.hostname 空でない場合、値が直接コピーされます。
hostname principal.hostname 空でなく、ホストが空の場合、値は直接コピーされます。
domain_name principal.hostname 説明にホスト名が含まれていて、ホスト/ホスト名が空の場合、値が直接コピーされる
src_ip principal.ip ipaddress への変換が成功した場合は、値が直接コピーされます。src_ip が空の場合は、説明から抽出されます。
src_mac principal.mac 値が直接コピーされる
src_port principal.port 値が整数に変換されました
process_id principal.process.pid 値を直接コピーする
source_user principal.user.userid 値が直接コピーされる
なし security_result sec_result から統合
dst_ip target.asset.ip 値が直接コピーされる
file_path target.file.full_path 値を直接コピーする
dst_ip target.hostname 有効な IP アドレスでない場合、値は直接コピーされます。
ホスト target.hostname inner_message が特定のパターンと一致する場合、値が直接コピーされます。
dst_ip target.ip 値を直接コピーする
dst_port target.port 値が整数に変換されました
target_cmd_line target.process.command_line 値が直接コピーされる
target_user target.user.userid 値が直接コピーされる
RR_msg event.idm.read_only_udm.metadata.description 変更履歴からマッピング
client_id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
key_office event.idm.read_only_udm.additional.fields 変更履歴からマッピング
rrset_type event.idm.read_only_udm.additional.fields 変更履歴からマッピング
syslog_priority event.idm.read_only_udm.additional.fields 変更履歴からマッピング
updating_zone event.idm.read_only_udm.additional.fields 変更履歴からマッピング
view_office event.idm.read_only_udm.additional.fields 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

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