BloxOne Threat Defense のログを収集する
このドキュメントでは、Bindplane を使用して BloxOne Threat Defense ログを Google Security Operations に取り込む方法について説明します。Logstash パーサーは、SYSLOG または JSON 形式で受信した BLOXONE DNS
ログからフィールドを抽出します。まず、ログメッセージを JSON オブジェクトに正規化し、抽出されたフィールドを統合データモデル(UDM)にマッピングします。これにより、セキュリティ分析用の位置情報と DNS の詳細情報でデータが拡充されます。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または
systemd
を使用する Linux ホスト - プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- Infoblox BloxOne への特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
- 構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'BLOXONE' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Infoblox BloxOne で Syslog を構成する
- Infoblox ポータルにログインします。
- [Configure]> [Administration] > [Data Connector] に移動します。
- [送信先の設定] タブを選択します。
- [作成> Syslog] をクリックします。
- 次の構成の詳細を指定します。
- 名前: わかりやすい名前を指定します(例: Google SecOps コレクタ)。
- 説明: 簡単な説明を入力します。
- 状態: [有効] を選択します。
- タグ: [追加] をクリックし、次の項目を指定して、鍵と宛先を関連付けます。
- KEY: キーのわかりやすい名前を入力します。
- VALUE: キーの値を入力します。
- 形式: [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 から抽出されます。 |
注: この表には、UDM にマッピングされているフィールドのみが含まれています。ロギングデータのフィールドの一部は、パーサーによって内部的に使用されることがありますが、最終的な UDM 出力には直接反映されません。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。