Darktrace のログを収集する
このドキュメントでは、Bindplane エージェントを使用して Darktrace ログを Google Security Operations に取り込む方法について説明します。このパーサーは、まず syslog メッセージから共通フィールドを抽出し、次に条件付きロジックを使用して CEF 形式と JSON 形式の両方の Darktrace ログを処理します。抽出されたフィールドを統合データモデル(UDM)スキーマにマッピングし、セキュリティ コンテキストでデータを拡充して、ダウンストリーム分析用のイベント分類を標準化します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- Windows 2016 以降、または systemd を使用する Linux ホスト
- プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- Darktrace への特権アクセス
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: tcplog: # Replace the port and IP address as required listen_address: `0.0.0.0:10282` 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: DARKTRACE raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindlane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Darktrace で Syslog を構成する
- Darktrace ウェブ UI にログインします。
- [管理者] > [システム構成] に移動します。
- [アラート設定を確認] をクリックします。
- 次の構成の詳細を指定します。
- CEF Syslog アラート: [True] を選択します。
- CEF Syslog サーバー: Bindplane の IP アドレスを入力します。
- CEF Syslog サーバー ポート: Bindplane ポート番号(例:
10282
)を入力します。 - CEF Syslog TCP アラート: [True] を選択します。
- [保存] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
darktraceUrl | security_result.url_back_to_product | 値は darktraceUrl フィールドから取得されます。 |
darktrace_host | observer.hostname | 値が IP アドレスでない場合、値は darktrace_host フィールドから取得されます。 |
darktrace_ip | observer.ip | 値は darktrace_ip フィールドから取得されます。 |
darktrace_user | observer.user.userid | 値は darktrace_user フィールドから取得されます。 |
説明 | security_result.summary、metadata.description | 値は description フィールドから取得されます。 |
device.customFields.DT-AUTO.macaddress | principal.mac | 値は device.customFields.DT-AUTO.macaddress フィールドから取得されます。 |
device.did | principal.asset.asset_id | 値は device.did フィールドから取得され、文字列に変換されて Device ID: が接頭辞として付加されます。 |
device.firstSeen | principal.asset.first_seen_time | 値は device.firstSeen フィールドから取得され、文字列に変換されて、ミリ秒単位の UNIX タイムスタンプとして解析されます。 |
device.hostname | principal.hostname、principal.asset.hostname | 値は device.hostname フィールドから取得されます。 |
device.ip | principal.ip、principal.asset.ip | 値が IP アドレス形式と一致する場合、値は device.ip フィールドから取得されます。 |
device.ips.0.subnet | additional.fields.subnet | 値は device.ips.0.subnet フィールドから取得され、subnet という接頭辞が付加されます。 |
device.ips.ip | principal.ip、principal.asset.ip | この値は、リスト内の各 IP アドレスの device.ips.ip フィールドから取得されます。 |
device.lastSeen | principal.asset.last_discover_time | 値は device.lastSeen フィールドから取得され、文字列に変換されて、ミリ秒単位の UNIX タイムスタンプとして解析されます。 |
device.macaddress | principal.mac | 値は device.macaddress フィールドから取得されます。 |
device.objecttype | principal.asset.type | 値が device の場合、UDM フィールドは WORKSTATION に設定されます。 |
device.sid | principal.resource.attribute.labels.sid | 値は device.sid フィールドから取得され、文字列に変換されます。 |
device.typelabel | principal.resource.attribute.labels.typelabel | 値は device.typelabel フィールドから取得されます。 |
device.typename | principal.resource.attribute.labels.typename | 値は device.typename フィールドから取得されます。 |
dst | target.ip、target.asset.ip | 値は dst フィールドから取得されます。 |
dpt | target.port | 値は dpt フィールドから取得され、整数に変換されます。 |
dvc | principal.ip、principal.asset.ip | dvc の値が IP アドレスの場合、UDM フィールドに追加されます。 |
dvchost | principal.hostname、principal.asset.hostname | 値は dvchost フィールドから取得されます。 |
endpoint | target.url | 値は endpoint フィールドから取得されます。 |
event_time | metadata.event_timestamp | 値は event_time フィールドから取得され、ISO8601 タイムスタンプとして解析されます。 |
externalId | metadata.product_log_id | 値は externalId フィールドから取得されます。 |
incidentEventUrl | principal.url | 値は incidentEventUrl フィールドから取得されます。 |
ip | principal.ip、principal.asset.ip | 値が IP アドレス形式と一致する場合、値は ip フィールドから取得されます。 |
issue_msg | security_result.summary | 値は issue_msg フィールドから取得されます。 |
メッセージ | security_result.description | 値は message フィールドから取得されます。 |
method | network.http.method | 値は method フィールドから取得されます。 |
model.description | metadata.description | 値は model.description フィールドから取得されます。 |
model.name | metadata.product_event_type | 値は model.name フィールドから取得されます。 |
model.now.category | security_result.severity | 値が critical の場合、UDM フィールドは CRITICAL に設定されます。値が Informational の場合、UDM フィールドは INFORMATIONAL に設定されます。値が Suspicious の場合、UDM フィールドは HIGH に設定され、カテゴリは NETWORK_SUSPICIOUS に設定されます。 |
model.now.description | metadata.description | 値は model.now.description フィールドから取得されます。 |
model.now.message | security_result.description | 値は model.now.message フィールドから取得されます。 |
model.now.name | metadata.product_event_type | 値は model.now.name フィールドから取得されます。 |
model.now.pid | principal.process.pid | 値は model.now.pid フィールドから取得され、文字列に変換されます。 |
model.now.uuid | principal.user.userid | 値は model.now.uuid フィールドから取得され、イベントタイプは USER_UNCATEGORIZED に設定されます。 |
model.pid | principal.process.pid | 値は model.pid フィールドから取得され、文字列に変換されます。 |
model.then.description | principal.resource.attribute.labels.Model の説明 | 値は model.then.description フィールドから取得されます。 |
model.then.name | principal.resource.attribute.labels.Model Then Name | 値は model.then.name フィールドから取得されます。 |
model.then.pid | principal.resource.attributes.labels.Model Then Pid | 値は model.then.pid フィールドから取得され、文字列に変換されます。 |
model.then.uuid | principal.resource.attribute.labels.Model Then UUID | 値は model.then.uuid フィールドから取得されます。 |
model.uuid | principal.user.userid | 値は model.uuid フィールドから取得され、イベントタイプは USER_UNCATEGORIZED に設定されます。 |
relatedBreaches.0.modelName | security_result.description | 値は relatedBreaches.0.modelName フィールドから取得されます。 |
スコア | security_result.priority、security_result.priority_details | 値が 0.8 ~ 1 の場合、優先度は HIGH_PRIORITY に設定されます。値が 0.5 ~ 0.79 の場合、優先度は MEDIUM_PRIORITY に設定されます。値が 0 ~ 0.49 の場合、優先度は LOW_PRIORITY に設定されます。優先度の詳細は、Score : の後に score の値を文字列に変換したものが設定されます。 |
重要度 | security_result.severity | 値が 2 の場合、UDM フィールドは MEDIUM に設定されます。値が 2 より大きい場合、UDM フィールドは HIGH に設定されます。 |
shost | principal.hostname、principal.asset.hostname | 値は shost フィールドから取得されます。 |
smac | principal.mac | 値は smac フィールドから取得されます。 |
src | principal.ip、principal.asset.ip | 値は src フィールドから取得されます。 |
ステータス | network.http.response_code | 値は status フィールドから取得され、文字列に変換されます。 |
概要 | metadata.description | 値は summary フィールドから取得されます。 |
時間 | 値は time フィールドから取得され、文字列に変換されて、ミリ秒単位の UNIX タイムスタンプとして解析されます。 |
|
timestamp | 値は timestamp フィールドから取得され、ISO8601 タイムスタンプまたはミリ秒単位の UNIX タイムスタンプとして解析されます。 |
|
title | security_result.summary | 値は title フィールドから取得されます。 |
triggeredComponents.ip | intermediary.ip | 値が IP アドレス形式と一致する場合、値は triggeredComponents.ip フィールドから取得されます。 |
triggeredComponents.port | intermediary.port | 値は triggeredComponents.port フィールドから取得され、整数に変換されます。 |
ユーザー名 | principal.user.userid | 値は username フィールドから取得されます。 |
metadata.vendor_name | DARKTRACE に設定します。 |
|
metadata.product_name | DCIP に設定します。 |
|
metadata.log_type | DARKTRACE に設定します。 |
|
network.ip_protocol | issue_msg に UDP が含まれていない場合、TCP に設定します。それ以外の場合は UDP に設定します。 |
|
security_result.action | status が 401 の場合は BLOCK に設定し、それ以外の場合は ALLOW に設定します。 |
|
security_result.severity | INFORMATIONAL に設定します。 |
|
network.application_protocol | method が空でない場合は、HTTP に設定します。 |
|
metadata.event_type | method が空でない場合は、NETWORK_HTTP に設定します。description に logged into \\\\S+ over ssh が含まれている場合、USER_LOGIN に設定します。target_ip が空でない場合は、NETWORK_CONNECTION に設定します。それ以外の場合は STATUS_UPDATE に設定します。 |
|
extensions.auth.type | description に logged into \\\\S+ over ssh が含まれている場合、MACHINE に設定します。 |
|
security_result.category | issue_msg に Exfiltration が含まれている場合、DATA_EXFILTRATION に設定します。issue_msg に Compromise が含まれている場合、NETWORK_MALICIOUS に設定します。それ以外の場合は NETWORK_SUSPICIOUS に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。