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 の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者としてコマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sc query observiq-otel-collector
サービスは RUNNING と表示されます。
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shインストールが完了するまで待ちます。
次のコマンドを実行して、インストールの内容を確認します。
sudo systemctl status observiq-otel-collector
サービスが [アクティブ(実行中)] と表示されます。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
構成ファイルを見つける
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
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
- Linux:
YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 IDendpoint: リージョン エンドポイント URL:- 米国:
malachiteingestion-pa.googleapis.com - ヨーロッパ:
europe-malachiteingestion-pa.googleapis.com - アジア:
asia-southeast1-malachiteingestion-pa.googleapis.com - 完全なリストについては、リージョン エンドポイントをご覧ください。
- 米国:
log_type: Chronicle に表示されるログタイプ(INFOBLOX_DNS)
構成ファイルを保存する
- 編集後、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows: [ファイル>保存] をクリックします。
- Linux:
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart observiq-otel-collectorサービスが実行されていることを確認します。
sudo systemctl status observiq-otel-collectorログでエラーを確認します。
sudo journalctl -u observiq-otel-collector -f
Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。
管理者としてコマンド プロンプトまたは PowerShell を開きます。
net stop observiq-otel-collector && net start observiq-otel-collectorサービス コンソール:
Win+Rキーを押し、「services.msc」と入力して Enter キーを押します。- observIQ OpenTelemetry Collector を見つけます。
右クリックして [再起動] を選択します。
サービスが実行されていることを確認します。
sc query observiq-otel-collectorログでエラーを確認します。
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Infoblox DNS で Syslog 転送を構成する
- Infoblox Grid Manager ウェブ インターフェースにログインします。
- [Grid> Grid Manager> Members] に移動します。
- 構成するメンバーを選択し、[編集] をクリックします。
- [Monitoring] タブに移動します。
- [Syslog] で [追加] をクリックして、新しい Syslog サーバーを追加します。
- 次の構成の詳細を指定します。
- アドレス: Bindplane エージェント ホストの IP アドレスを入力します。
- ポート: 「
514」と入力します。 - トランスポート: [UDP] を選択します。
- Node ID: Infoblox ノード(HA ペアの場合)を選択します。
- 重大度: [情報](または任意の重大度レベル)を選択します。
- ファシリティ: local0(または任意のファシリティ)を選択します。
- 次のログカテゴリを有効にします。
- DNS クエリ: [Grid DNS Properties] > [Logging] で [Log DNS Queries] を選択します。
- DNS responses: [Log DNS Responses] を選択します。
- DHCP: [Grid DHCP Properties] で DHCP ロギングを有効にします。
- 監査: [Grid Properties > Monitoring] で監査ロギングを有効にします。
- [保存して閉じる] をクリックします。
- 必要に応じて DNS サービスを再起動します。
- 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 のプロフェッショナルから回答を得ることができます。