Infoblox DNS ログを収集する

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

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

パーサーは、Infoblox DNS SYSLOG 形式と CEF 形式のログからフィールドを抽出します。grok または kv を使用してログ メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Infoblox Grid Manager ウェブ インターフェースへの特権アクセス

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
    

サービスが [アクティブ(実行中)] と表示されます。

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

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

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

構成ファイルを見つける

  • Linux:

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

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

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

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

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'INFOBLOX_DNS'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

構成パラメータ

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

    • レシーバーの構成:

      • udplog: UDP Syslog には udplog、TCP Syslog には tcplog を使用します。
      • 0.0.0.0: リッスンする IP アドレス(すべてのインターフェースでリッスンする場合は 0.0.0.0
      • 514: リッスンするポート番号(標準の syslog ポート)
    • エクスポータの構成:

      • creds_file_path: 取り込み認証ファイルのフルパス:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 ID
      • endpoint: リージョン エンドポイント URL:
        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。
      • log_type: Chronicle に表示されるログタイプ(INFOBLOX_DNS

構成ファイルを保存する

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

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

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

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

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

        sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。

      4. サービスが実行されていることを確認します。

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

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

Infoblox DNS で Syslog 転送を構成する

  1. Infoblox Grid Manager ウェブ インターフェースにログインします。
  2. [Grid> Grid Manager> Members] に移動します。
  3. 構成するメンバーを選択し、[編集] をクリックします。
  4. [Monitoring] タブに移動します。
  5. [Syslog] で [追加] をクリックして、新しい Syslog サーバーを追加します。
  6. 次の構成の詳細を指定します。
    • アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
    • ポート: 「514」と入力します。
    • トランスポート: [UDP] を選択します。
    • Node ID: Infoblox ノード(HA ペアの場合)を選択します。
    • 重大度: [情報](または任意の重大度レベル)を選択します。
    • ファシリティ: local0(または任意のファシリティ)を選択します。
  7. 次のログカテゴリを有効にします。
    • DNS クエリ: [Grid DNS Properties] > [Logging] で [Log DNS Queries] を選択します。
    • DNS responses: [Log DNS Responses] を選択します。
    • DHCP: [Grid DHCP Properties] で DHCP ロギングを有効にします。
    • 監査: [Grid Properties > Monitoring] で監査ロギングを有効にします。
  8. [保存して閉じる] をクリックします。
  9. 必要に応じて DNS サービスを再起動します。
  10. Bindplane エージェントのログを確認して、syslog メッセージが送信されていることを確認します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
agent.hostname principal.hostname CEF 形式のログで、agent.hostname が存在する場合は、principal.hostname にマッピングされます。
client_ip principal.ip CEF 形式のログで、client_ip が存在する場合は、principal.ip にマッピングされます。
client_port principal.port CEF 形式のログで、client_port が存在する場合は、principal.port にマッピングされます。
データ answers.data 未加工のログの回答セクションのデータ フィールドから抽出されます。複数の出現は、個別の回答オブジェクトとしてマッピングされます。
説明 metadata.description 未加工のログの description フィールドから直接マッピングされるか、message や msg2 などの他のフィールドから Grok パターンを使用して抽出されます。
dest_ip1 target.ip 未加工ログから抽出され、target.ip にマッピングされます。
destinationDnsDomain dns_question.name CEF 形式のログで、destinationDnsDomain が存在する場合は、dns_question.name にマッピングされます。
dns_class dns_question.class dns_query_class_mapping.include ルックアップ テーブルを使用してマッピングされます。
dns_domain dns_question.name Grok パターンを使用して未加工のログのメッセージ フィールドから抽出され、dns_question.name にマッピングされます。
dns_name dns_question.name Grok パターンを使用して dns_domain フィールドから抽出され、dns_question.name にマッピングされます。
dns_records answers.data CEF 形式のログで、dns_records が存在する場合は、answers.data にマッピングされます。複数の出現は、個別の回答オブジェクトとしてマッピングされます。
dst_ip target.ip または target.hostname Grok パターンを使用して、未加工のログのメッセージ フィールドから抽出されます。有効な IP アドレスの場合は target.ip にマッピングされ、それ以外の場合は target.hostname にマッピングされます。
dst_ip1 target.ip または target.hostname 未加工のログの message フィールドまたは msg2 フィールドから、grok パターンを使用して抽出されます。有効な IP アドレスの場合は target.ip にマッピングされ、それ以外の場合は target.hostname にマッピングされます。dst_ip と異なる場合にのみマッピングされます。
evt_type metadata.product_event_type 未加工のログの evt_type フィールドから直接マッピングされます。このフィールドは、Grok パターンを使用してメッセージ フィールドから抽出されます。
InfobloxB1OPHIPAddress principal.ip CEF 形式のログで、InfobloxB1OPHIPAddress が存在する場合は、principal.ip にマッピングされます。
InfobloxB1Region principal.location.country_or_region CEF 形式のログで、InfobloxB1Region が存在する場合は、principal.location.country_or_region にマッピングされます。
InfobloxDNSQType dns_question.type CEF 形式のログで、InfobloxDNSQType が存在する場合は、dns_question.type にマッピングされます。
intermediary intermediary.ip または intermediary.hostname Grok パターンを使用して、未加工のログのメッセージ フィールドから抽出されます。有効な IP アドレスの場合は intermediary.ip にマッピングされ、それ以外の場合は intermediary.hostname にマッピングされます。
msg2 metadata.description、dns.response_code、dns_question.name、target.ip、target.hostname、answers.name、answers.ttl、answers.data、answers.class、answers.type、security_result.severity Grok パターンを使用して、未加工のログのメッセージ フィールドから抽出されます。さまざまなフィールドの抽出に使用されますが、UDM に直接マッピングされません。
name1 answers.name Grok パターンを使用して未加工のログの msg2 フィールドから抽出され、answers.name にマッピングされます。
name2 answers.name Grok パターンを使用して未加工のログの msg2 フィールドから抽出され、answers.name にマッピングされます。
プロトコル network.ip_protocol 既知のプロトコルと一致する場合は、未加工のログのプロトコル フィールドから直接マッピングされます。
qclass dns_question.class dns_class を UDM にマッピングするために使用される中間フィールド。
qclass1 answers.class dns_class1 を UDM にマッピングするために使用される中間フィールド。
qclass2 answers.class dns_class2 を UDM にマッピングするために使用される中間フィールド。
query_type dns_question.type dns_record_type.include ルックアップ テーブルを使用してマッピングされます。
query_type1 answers.type dns_record_type.include ルックアップ テーブルを使用してマッピングされます。
query_type2 answers.type dns_record_type.include ルックアップ テーブルを使用してマッピングされます。
recursion_flag network.dns.recursion_desired recursion_flag に「+」が含まれている場合、network.dns.recursion_desired に true としてマッピングされます。
record_type dns_question.type query_type を UDM にマッピングするために使用される中間フィールド。
record_type1 answers.type query_type1 を UDM にマッピングするために使用される中間フィールド。
record_type2 answers.type query_type2 を UDM にマッピングするために使用される中間フィールド。
res_code network.dns.response_code dns_response_code.include ルックアップ テーブルを使用してマッピングされます。
response_code network.dns.response_code CEF 形式のログで、response_code が存在する場合は、dns_response_code.include ルックアップ テーブルを使用して network.dns.response_code にマッピングされます。
security_action security_result.action ステータス フィールドから派生します。ステータスが「denied」の場合、security_action は「BLOCK」に設定されます。それ以外の場合は、「ALLOW」に設定されます。
重要度 security_result.severity CEF 形式のログで、重大度が存在し、その内容が「informational」の場合は、「INFORMATIONAL」として security_result.severity にマッピングされます。
src_host principal.hostname Grok パターンを使用して未加工のログの説明フィールドまたはメッセージ フィールドから抽出され、principal.hostname にマッピングされます。
src_ip principal.ip または principal.hostname Grok パターンを使用して、未加工のログのメッセージ フィールドから抽出されます。有効な IP アドレスの場合は principal.ip にマッピングされ、それ以外の場合は principal.hostname にマッピングされます。
src_port principal.port Grok パターンを使用して未加工のログのメッセージ フィールドから抽出され、principal.port にマッピングされます。
ttl1 answers.ttl Grok パターンを使用して未加工のログの msg2 フィールドから抽出され、answers.ttl にマッピングされます。
ttl2 answers.ttl Grok パターンを使用して未加工のログの msg2 フィールドから抽出され、answers.ttl にマッピングされます。
metadata.event_type metadata.event_type さまざまなフィールドとパーサー ロジックから取得されます。他のイベントタイプが特定されていない場合のデフォルトは GENERIC_EVENT です。有効な値は、NETWORK_DNS、NETWORK_CONNECTION、STATUS_UPDATE です。
metadata.log_type metadata.log_type パーサーによって「INFOBLOX_DNS」に設定されます。
metadata.product_name metadata.product_name パーサーによって「Infoblox DNS」に設定されます。
metadata.vendor_name metadata.vendor_name パーサーによって「INFOBLOX」に設定されます。
metadata.product_version metadata.product_version CEF メッセージから抽出されます。
metadata.event_timestamp metadata.event_timestamp タイムスタンプ フィールドからコピーされます。
network.application_protocol network.application_protocol event_type が「GENERIC_EVENT」または「STATUS_UPDATE」でない場合は、「DNS」に設定します。

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