BloxOne Threat Defense のログを収集する
パーサーのバージョン: 8.0
このドキュメントでは、Bindplane エージェントを使用して BloxOne Threat Defense ログを Google Security Operations に取り込む方法について説明します。
Infoblox BloxOne Threat Defense は、DNS クエリ、脅威インテリジェンス イベント、ポリシー アクションの syslog メッセージを CEF 形式で生成するクラウド マネージド DNS セキュリティ サービスです。パーサーはフィールドを正規化し、統合データモデル(UDM)にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows Server 2016 以降、または
systemdを使用する Linux ホスト - Bindplane エージェントと Infoblox BloxOne プラットフォーム間のネットワーク接続
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- Infoblox Portal への特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [収集エージェント] に移動します。
- 取り込み認証ファイルをダウンロードする
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/bloxone: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: BLOXONE raw_log_field: body service: pipelines: logs/bloxone_to_chronicle: receivers: - udplog exporters: - chronicle/bloxone
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address: リッスンする IP アドレスとポート:0.0.0.0: すべてのインターフェースでリッスンします(推奨)。- ポート
514は標準の syslog ポートです(Linux で root が必要です。root 以外のユーザーは1514を使用します)。
エクスポータの構成:
creds_file_path: 取り込み認証ファイルのフルパス:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Google SecOps コンソールからコピーしたお客様 IDendpoint: リージョン エンドポイント URL:- 米国:
malachiteingestion-pa.googleapis.com - ヨーロッパ:
europe-malachiteingestion-pa.googleapis.com - アジア:
asia-southeast1-malachiteingestion-pa.googleapis.com - 完全なリストについては、リージョン エンドポイントをご覧ください。
- 米国:
構成ファイルを保存する
- 編集後、ファイルを保存します。
- 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 BloxOne で syslog を構成する
- Infoblox ポータルにログインします。
- [構成]> [管理] > [データ コネクタ] に移動します。
- [宛先構成] タブを選択します。
- [作成> Syslog] をクリックします。
- 次の構成情報を指定します。
- 名前: わかりやすい名前を指定します(例: Google SecOps コレクタ)。
- 説明: 簡単な説明を入力します。
- 状態: [有効] を選択します。
- タグ: [追加] をクリックし、次を指定して、キーを宛先に関連付けます。
- KEY: キーのわかりやすい名前を入力します。
- 値: キーの値を入力します。
- 形式: [CEF] を選択します。
- プロトコル: Bindplane エージェントの構成に応じて、[UDP] または [TCP] を選択します。
- FQDN/IP: Bindplane エージェントの IP アドレスを入力します。
- ポート: Bindplane エージェントのポートを入力します(デフォルトは UDP の
514です)。
- [保存して閉じる] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
additional_list.key |
このフィールドは、additional_list 配列を反復処理し、key フィールドの値に基づいてデータを抽出するループで使用されます。UDM に直接マッピングされません。 |
|
additional_list.value |
principal.location.region_latitude、principal.location.region_longitude、target.location.region_latitude、target.location.region_longitude |
このフィールドは additional_list.key と組み合わせて使用され、additional_list 配列から特定の値が抽出されます。値を抽出してマッピングするロジックは、対応する key によって異なります。例: - additional_list.key が intel:source:ip:geoIP:location の場合、grok を使用して緯度と経度の値を抽出し、それぞれ principal.location.region_latitude と principal.location.region_longitude にマッピングします。- additional_list.key が intel:destination:ip:geoIP:location の場合、grok を使用して緯度と経度の値を抽出し、それぞれ target.location.region_latitude と target.location.region_longitude にマッピングします。 |
additional_string.key |
additional_list.key と同様に、このフィールドはループで使用され、additional_string 配列を反復処理し、key 値に基づいてデータを抽出します。UDM に直接マッピングされません。 |
|
additional_string.value |
additional.fields.value.string_value、principal.location.country_or_region、target.location.country_or_region、src.ip、src.port、src.hostname、network.ip_protocol |
additional_string.key とともに使用して、additional_string 配列から値を抽出します。値をマッピングするロジックは、対応する key によって異なります。例: - additional_string.key が intel:source:ip:ip2asn:start_ip、intel:source:ip:ip2asn:finish_ip、intel:destination:ip:ip2asn:start_ip、intel:destination:ip:ip2asn:finish_ip のいずれかの場合、対応するキーを使用して値を additional.fields.value.string_value にマッピングします。- additional_string.key が intel:source:ip:geoIP:country の場合、値を principal.location.country_or_region にマッピングします。- additional_string.key が intel:destination:ip:geoIP:country の場合、値を target.location.country_or_region にマッピングします。- additional_string.key が log:source:ip の場合、値を src.ip にマッピングします。- additional_string.key が log:source:port の場合、値を整数に変換してから src.port にマッピングします。- additional_string.key が log:source:hostname の場合、値を src.hostname にマッピングします。- additional_string.key が log:cdh:input:protocol の場合、値を大文字に変換してから network.ip_protocol にマッピングします。 |
app_category |
security_result.category_details |
直接マッピングされます。 |
confidence |
security_result.confidence |
次のロジックに基づいてマッピングされます。 - confidence が LOW の場合、LOW_CONFIDENCE にマッピングします。- confidence が MEDIUM の場合、MEDIUM_CONFIDENCE にマッピングします。- confidence が HIGH の場合、HIGH_CONFIDENCE にマッピングします。 |
country |
principal.location.name |
直接マッピングされますが、raw.infobloxb1region が空の場合に限ります。 |
device |
principal.ip、principal.asset.ip |
直接マッピングされますが、raw.dvc が空の場合に限ります。 |
dhcp_fingerprint |
security_result.detection_fields.value |
キー dhcp_fingerprint で直接マッピングされます。 |
dns_view |
security_result.detection_fields.value |
キー dns_view で直接マッピングされます。 |
endpoint_groups |
security_result.detection_fields.value |
キー endpoint_groups で直接マッピングされます。 |
event_time |
metadata.event_timestamp.seconds |
ISO8601 タイムスタンプとして解析され、秒の値が抽出されます。timestamp フィールドが空の場合にのみ使用されます。 |
feed_name |
principal.resource.name |
feed_name は principal.resource.name にマッピングされます。 |
feed_type |
principal.resource.attribute.labels.value |
キー feed_type で直接マッピングされます。 |
mac_address |
principal.mac |
小文字に変換された後、直接マッピングされます。 |
network |
principal.hostname、principal.asset.hostname |
直接マッピングされますが、raw.dvchost と raw.dvc の両方が空の場合に限ります。 |
os_version |
principal.platform_version |
直接マッピングされます。 |
policy_action |
security_result.action_details、security_result.action |
policy_action は security_result.action_details に直接マッピングされます。security_result.action は次のロジックに基づいて導出されます。- policy_action が Redirect または Log の場合、ALLOW にマッピングします。- policy_action が BLOCK の場合、BLOCK にマッピングします。 |
policy_name |
security_result.detection_fields.value |
キー policy_name で直接マッピングされます。 |
qname |
network.dns.questions.name |
直接マッピングされます。 |
qtype |
network.dns.questions.type |
次のロジックに基づいてマッピングされます。 - qtype が A の場合、1 にマッピングされます(符号なし整数に変換されます)。- qtype が PTR の場合、12 にマッピングします(符号なし整数に変換)。 |
raw.act |
security_result.action_details |
直接マッピングされます。 |
raw.app |
network.application_protocol |
大文字に変換された後、直接マッピングされます。 |
raw.deviceeventclassid |
metadata.product_event_type |
raw.name と連結され(- で区切られます)、metadata.product_event_type にマッピングされます。 |
raw.devicevendor |
metadata.vendor_name |
直接マッピングされます。 |
raw.deviceproduct |
metadata.product_name |
直接マッピングされます。 |
raw.deviceversion |
metadata.product_version |
直接マッピングされます。 |
raw.deviceseverity |
security_result.severity_details、security_result.severity |
raw.deviceseverity は security_result.severity_details に直接マッピングされます。security_result.severity は次のロジックに基づいて導出されます。- raw.deviceseverity が [0、1、2、3] の場合、LOW にマッピングします。- raw.deviceseverity が [4、5、6] に含まれている場合は、MEDIUM にマッピングします。- raw.deviceseverity が [7, 8] に含まれる場合は、HIGH にマッピングします。- raw.deviceseverity が [9, 10] に含まれる場合は、CRITICAL にマッピングします。 |
raw.dvc |
principal.ip、principal.asset.ip |
直接マッピングされます。 |
raw.dvchost |
principal.hostname、principal.asset.hostname |
直接マッピングされますが、raw.dvc と等しくない場合に限ります。 |
raw.infobloxb1connectiontype |
additional.fields.value.string_value |
キー infobloxb1connectiontype で直接マッピングされます。 |
raw.infobloxb1ophname |
observer.hostname、observer.asset.hostname |
直接マッピングされます。 |
raw.infobloxb1ophipaddress |
observer.ip |
直接マッピングされます。 |
raw.infobloxb1policyname |
security_result.detection_fields.value |
キー infobloxb1policyname で直接マッピングされます。 |
raw.infobloxdnsqclass |
dns_question.class、dns_answer.class |
dns_query_class_mapping.include ファイルで定義されたルックアップ テーブルに基づいて dns_question.class と dns_answer.class を導出するために使用されます。 |
raw.infobloxdnsqtype |
dns_question.type、dns_answer.type |
dns_record_type.include ファイルで定義されたルックアップ テーブルに基づいて dns_question.type と dns_answer.type を導出するために使用されます。 |
raw.infobloxdnsrcode |
network.dns.response_code |
dns_response_code.include ファイルで定義されたルックアップ テーブルに基づいて network.dns.response_code を導出するために使用されます。 |
raw.infobloxpolicyid |
security_result.detection_fields.value |
キー infobloxpolicyid で直接マッピングされます。 |
raw.msg |
metadata.description |
先頭と末尾の引用符を削除した後、raw.msg は metadata.description に直接マッピングされます。 |
raw.name |
metadata.product_event_type |
raw.deviceeventclassid と連結され(- で区切られます)、metadata.product_event_type にマッピングされます。 |
rcode |
security_result.detection_fields.value、network.dns.response_code |
rcode は、キー rcode を使用して security_result.detection_fields.value に直接マッピングされます。rcode が NXDOMAIN の場合、network.dns.response_code は 3 に設定されます(符号なし整数に変換されます)。 |
rdata |
network.dns.answers.data |
直接マッピングされます。 |
rip |
target.ip、target.asset.ip |
直接マッピングされます。 |
severity |
security_result.severity |
次のロジックに基づいてマッピングされます。 - severity が INFO(大文字と小文字を区別しない)の場合、INFORMATIONAL にマッピングします。- severity が HIGH の場合、HIGH にマッピングします。 |
tclass |
security_result.detection_fields.value |
キー tclass で直接マッピングされます。 |
threat_indicator |
security_result.detection_fields.value |
キー threat_indicator で直接マッピングされます。 |
timestamp |
metadata.event_timestamp.seconds |
ISO8601 タイムスタンプとして解析され、秒の値が抽出されます。 |
user |
principal.user.user_display_name |
直接マッピングされます。 |
user_groups |
security_result.detection_fields.value |
キー user_groups で直接マッピングされます。 |
| なし | principal.resource.resource_subtype |
feed_name が空でない場合は、Feed に設定します。 |
| なし | metadata.log_type |
BLOXONE に設定します。 |
| なし | additional.fields.key |
対応する raw フィールドに基づいて、infobloxancount、infobloxarcount、infobloxb1connectiontype、infobloxnscount、intel:destination:ip:ip2asn:finish_ip、intel:destination:ip:ip2asn:start_ip、intel:source:ip:ip2asn:finish_ip、または intel:source:ip:ip2asn:start_ip に設定します。 |
| なし | metadata.event_type |
has_principal が true の場合は STATUS_UPDATE に設定し、それ以外の場合は GENERIC_EVENT に設定します。 |
| なし | network.dns.questions.type |
A レコードの場合は 1、PTR レコードの場合は 12 に設定され、符号なし整数に変換されます。 |
| なし | network.dns.answers.name、network.dns.answers.type、network.dns.answers.class |
DNS レスポンス文字列を解析して raw.msg から抽出されます。 |
| なし | intermediary.hostname、intermediary.ip、intermediary.asset.ip |
DNS レスポンス文字列を解析して raw.msg から抽出されます。 |
intermediaryhost |
intermediary.hostname |
変更履歴からマッピング |
app_name |
principal.application |
変更履歴からマッピング |
endpoint_groups", "user_groups", "dns_view", "dhcp_fingerprint", "policy_name", "tclass", "tproperty", "threat_indicator", "category", and "rcode |
security_result.detection_fields |
変更履歴からマッピング |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。