BeyondTrust Secure Remote Access のログを収集する
このドキュメントでは、Bindplane を使用して BeyondTrust Secure Remote Access ログを収集する方法について説明します。パーサーは 2 つの syslog 形式を処理します。最初の形式では構造化されたメッセージ内で Key-Value ペアが使用され、2 番目の形式ではパイプ区切りのフィールドが使用されます。パーサーは両方の形式から関連するフィールドを抽出し、UDM にマッピングします。また、抽出されたキーワードに基づいてイベントタイプの分類を行い、ログイン/ログアウト イベントと認証タイプの特定のロジックを処理します。
始める前に
- Google Security Operations インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- BeyondTrust Secure Remote Access への特権アクセス権があることを確認します。
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: BEYONDTRUST_REMOTE_ACCESS 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
BeyondTrust リモート サポートを設定する
- BeyondTrust ウェブ UI にログインします。
- [アプライアンス] > [セキュリティ] > [アプライアンス管理] を選択します。
- [Syslog] セクションで、次の操作を行います。
- メッセージ形式: [レガシー BSD 形式] を選択します。
- リモート Syslog サーバー: Bindplane の IP アドレスとポートを入力します。
- [送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
datetime |
metadata.event_timestamp |
when フィールドが存在しない場合、タイムスタンプは RFC3 339 形式を使用して datetime フィールドから解析されます。 |
deviceHost |
target.hostname |
deviceHost の値は target.hostname に直接マッピングされます。 |
dstHost |
target.ip |
dstHost の値は、有効な IP アドレスとして検証された後、target.ip に直接マッピングされます。 |
dstPriv |
additional.fields.[key=dstPriv].value.string_value |
dstPriv の値は、キー dstPriv を持つ additional フィールドに配置されます。 |
dstUid |
target.user.userid |
dstUid の値は target.user.userid に直接マッピングされます。 |
dstUser |
target.user.user_display_name |
dstUser の値は target.user.user_display_name に直接マッピングされます。 |
eventName |
metadata.event_type |
eventName が login (大文字と小文字を区別しない)の場合、metadata.event_type は USER_LOGIN に設定されます。eventName が logout (大文字と小文字を区別しない)の場合、metadata.event_type は USER_LOGOUT に設定されます。それ以外の場合で、eventName が空でない場合は、metadata.event_type が USER_UNCATEGORIZED に設定されます。eventName が空で、メッセージが 2 番目の grok パターンと一致する場合、metadata.event_type は GENERIC_EVENT に設定されます。eventName が空で、メッセージが最初の grok パターンと一致する場合、metadata.event_type は GENERIC_EVENT に設定されます。srcUid 、userid 、who が空でない場合、metadata.event_type は USER_CHANGE_PERMISSIONS に設定されます。deviceHost または site が空でない場合、metadata.event_type は USER_UNCATEGORIZED に設定されます。それ以外の場合は、metadata.event_type が GENERIC_EVENT に設定されます。 |
event_name |
additional.fields.[key=event_name].value.string_value |
event_name の値は、キー event_name を持つ additional フィールドに配置されます。 |
event_name |
metadata.product_event_type |
event_name の値は id フィールドと組み合わせて使用され、metadata.product_event_type に [ id] - event_name`` 形式で入力されます。 |
externalKeyLabel |
additional.fields.[key=externalKeyLabel].value.string_value |
externalKeyLabel の値は、キー externalKeyLabel を持つ additional フィールドに配置されます。 |
id |
metadata.product_event_type |
id の値は event_name フィールドと組み合わせて使用され、metadata.product_event_type に [ id] - event_name`` 形式で入力されます。 |
jumpGroupId |
additional.fields.[key=jumpGroupId].value.string_value |
jumpGroupId の値は、キー jumpGroupId を持つ additional フィールドに配置されます。 |
jumpGroupName |
additional.fields.[key=jumpGroupName].value.string_value |
jumpGroupName の値は、キー jumpGroupName を持つ additional フィールドに配置されます。 |
jumpGroupType |
additional.fields.[key=jumpGroupType].value.string_value |
jumpGroupType の値は、キー jumpGroupType を持つ additional フィールドに配置されます。 |
jumpointId |
additional.fields.[key=jumpointId].value.string_value |
jumpointId の値は、キー jumpointId を持つ additional フィールドに配置されます。 |
jumpointName |
additional.fields.[key=jumpointName].value.string_value |
jumpointName の値は、キー jumpointName を持つ additional フィールドに配置されます。 |
kv_data |
さまざまな UDM フィールド | kv_data フィールドは Key-Value ペアに解析され、キー(eventName 、when 、who 、who_ip 、site 、target 、status 、reason )。 |
kvdata |
さまざまな UDM フィールド | kvdata フィールドは Key-Value ペアに解析され、キー(msg 、srcUser 、srcUid 、srcHost 、dstUser 、dstUid 、dstHost 、sessionId 、jumpointId 、jumpointName 、jumpGroupId 、jumpGroupName 、jumpGroupType 、externalKeyLabel 、dstPriv )。 |
message |
さまざまな UDM フィールド | message フィールドは grok パターンを使用して解析され、さまざまなフィールドが抽出されて UDM フィールドにマッピングされます。 |
msg |
metadata.description |
msg の値は metadata.description に直接マッピングされます。 |
product_event_type |
metadata.product_event_type |
product_event_type の値は metadata.product_event_type に直接マッピングされます。 |
product_log_id |
metadata.product_log_id |
product_log_id の値は metadata.product_log_id に直接マッピングされます。 |
process_id |
principal.process.pid |
process_id の値は principal.process.pid に直接マッピングされます。 |
reason |
security_result.description |
reason の値は security_result.description に直接マッピングされます。 |
segment_number |
additional.fields.[key=segment_number].value.string_value |
segment_number の値は、キー segment_number を持つ additional フィールドに配置されます。 |
sessionId |
network.session_id |
sessionId の値は network.session_id に直接マッピングされます。 |
site |
target.hostname |
site の値は target.hostname に直接マッピングされます。 |
site_id |
additional.fields.[key=site_id].value.string_value |
site_id の値は、キー site_id を持つ additional フィールドに配置されます。 |
srcHost |
principal.ip |
srcHost の値は、有効な IP アドレスとして検証された後、principal.ip に直接マッピングされます。 |
srcUid |
principal.user.userid |
srcUid の値は principal.user.userid に直接マッピングされます。 |
srcUser |
principal.user.user_display_name |
srcUser の値は principal.user.user_display_name に直接マッピングされます。 |
status |
security_result.action |
status が failure (大文字と小文字を区別しない)の場合、security_result.action は BLOCK に設定されます。それ以外の場合は、security_result.action が ALLOW に設定されます。 |
status |
security_result.action_details |
status の値は security_result.action_details に直接マッピングされます。 |
target |
target.application |
target の値は target.application に直接マッピングされます。rep_client は Representative Console に置き換えられ、web/login は Web/Login に置き換えられます。 |
target |
extensions.auth.type |
target が rep_client の場合、extensions.auth.type は MACHINE に設定されます。target が web/login の場合、extensions.auth.type は SSO に設定されます。それ以外の場合は、extensions.auth.type が AUTHTYPE_UNSPECIFIED に設定されます。 |
timestamp |
metadata.event_timestamp |
datetime と when のどちらも存在しない場合は、未加工ログの timestamp がフォールバックとして使用されます。 |
total_segments |
additional.fields.[key=total_segments].value.string_value |
total_segments の値は、キー total_segments を持つ additional フィールドに配置されます。 |
device_product |
additional.fields.[key=device_product].value.string_value |
device_product の値は、キー device_product を持つ additional フィールドに配置されます。 |
device_vendor |
additional.fields.[key=device_vendor].value.string_value |
device_vendor の値は、キー device_vendor を持つ additional フィールドに配置されます。 |
device_version |
metadata.product_version |
device_version の値は metadata.product_version に直接マッピングされます。 |
when |
metadata.event_timestamp |
タイムスタンプは、存在する場合は UNIX 形式を使用して when フィールドから解析されます。 |
who |
principal.user.userid |
who フィールドが正規表現パターンと一致する場合、抽出された userid は principal.user.userid にマッピングされます。それ以外の場合、who フィールド全体が principal.user.userid にマッピングされます。 |
who |
principal.user.user_display_name |
who フィールドが正規表現パターンと一致する場合、抽出された user_display_name は principal.user.user_display_name にマッピングされます。 |
who_ip |
principal.ip |
who_ip の値は principal.ip に直接マッピングされます。 |
(パーサー ロジック) | metadata.log_type |
ログタイプは BEYONDTRUST_REMOTE_ACCESS に設定されます。 |
(パーサー ロジック) | metadata.product_name |
プロダクト名が BeyondTrust Secure Remote Access に設定されます。 |
(パーサー ロジック) | metadata.vendor_name |
ベンダー名が BeyondTrust に設定されます。 |
(パーサー ロジック) | security_result.summary |
値は User %{eventName} 形式で取得されます。 |
(パーサー ロジック) | extensions.auth.mechanism |
method に using password が含まれている場合、メカニズムは USERNAME_PASSWORD に設定されます。method に using elevate が含まれている場合、メカニズムは REMOTE に設定されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。