EfficientIP DDI ログを収集する
このドキュメントでは、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 でテスト済み)
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サービスのステータスが [active (running)] になります。
その他のインストール リソース
その他のインストール オプションとトラブルシューティングについては、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/efficientip_ddi: compression: gzip creds_file_path: '/etc/bindplane-agent/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 service: pipelines: logs/efficientip_to_chronicle: receivers: - udplog exporters: - chronicle/efficientip_ddi各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address:0.0.0.0:514に設定して、UDP ポート 514 のすべてのインターフェースでリッスンします。- Linux の非 root デプロイの場合は、ポート
1514以降を使用します。 - ポートが SOLIDserver の構成と一致していることを確認します。
- Linux の非 root デプロイの場合は、ポート
エクスポータの構成:
creds_file_path: 取り込み認証ファイルのフルパス:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:YOUR_CUSTOMER_IDは、前の手順の顧客 ID に置き換えます。endpoint: リージョン エンドポイント:- 米国:
malachiteingestion-pa.googleapis.com - ヨーロッパ:
europe-malachiteingestion-pa.googleapis.com - アジア:
asia-southeast1-malachiteingestion-pa.googleapis.com - 完全なリストについては、リージョン エンドポイントをご覧ください。
- 米国:
log_type:EFFICIENTIP_DDIに設定します(完全一致が必要です)。ingestion_labels: ログの分類に使用する省略可能なラベル(必要に応じてカスタマイズします)。
構成ファイルを保存する
編集が完了したら、ファイルを保存します。
- Linux:
Ctrl+O、Enter、Ctrl+Xの順に押します。 - Windows: [ファイル>保存] をクリックします。
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"
EfficientIP DDI syslog 転送を構成する
- EfficientIP SOLIDserver ウェブ コンソールにログインします。
- 左側のナビゲーションで [管理] をクリックします。
- [モニタリング] セクションで、[構成] をクリックします。
- メニューで [+ 追加] をクリックします。
- [サービス] リストで、次のサービスを選択します。 named(DNS ログの場合)
- [ターゲット サーバー] フィールドに、Bindplane エージェント ホストの IP アドレスとポートを
<ip-address>:<port>形式で入力します。- 例:
192.168.1.100:514 - Linux で標準以外のポートを使用している場合は、ポートを適宜指定します(例:
192.168.1.100:1514)。
- 例:
[OK] をクリックして構成を保存します。
ログ転送を確認する
- Bindplane エージェントのログを調べて、ログが受信されていることを確認します。
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Linux:
- SOLIDserver からの DNS クエリと回答イベントを含むログエントリを探します。
- 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」に設定します。「DISCOVER」の場合は「DISCOVER」に設定します。「OFFER」の場合は「OFFER」に設定します。「REQUEST」の場合は「REQUEST」に設定します。「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 の場合、質問オブジェクトから統合されます |
| rcode | network.dns.response_code | uinteger に変換された値 |
| response_code | network.dns.response_code | 値が数値コードにマッピングされ、uinteger に変換されます |
| 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 | 値を直接コピー |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。