Symantec VIP Enterprise Gateway のログを収集する
このドキュメントでは、Bindplane エージェントを使用して Symantec VIP Enterprise Gateway ログを Google Security Operations に取り込む方法について説明します。
Symantec VIP(Validation and ID Protection)Enterprise Gateway は、認証イベント、認証情報の検証、LDAP 同期、ヘルスチェック アクティビティの syslog メッセージを生成する多要素認証ソリューションです。パーサーは、JSON 形式と syslog 形式のログからフィールドを抽出し、統合データモデル(UDM)にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows Server 2016 以降、または
systemdを使用する Linux ホスト - Bindplane エージェントと Symantec VIP Gateway 間のネットワーク接続
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- Symantec VIP Gateway ウェブ UI への管理者権限
Bindplane エージェントの Google SecOps 認証情報を取得する
Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。
- 新規デプロイ: Chronicle API を使用します(オプション 1)。
- 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
オプション 1: Chronicle API のサービス アカウントを作成する(推奨)
- Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
- [IAM と管理] > [サービス アカウント] に移動します。
- [サービス アカウントを作成] をクリックします。
- 次の構成情報を指定します。
- サービス アカウント名: アカウントの名前を入力します(例:
bindplane-ingest)。 - サービス アカウントの説明: 説明を入力します(例:
Bindplane agent log ingestion)。
- サービス アカウント名: アカウントの名前を入力します(例:
- [作成して続行] をクリックします。
- [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
- [続行] をクリックして [完了] をクリックします。
- 作成したサービス アカウントをクリックし、[キー] タブに移動します。
- [鍵を追加] > [新しい鍵を作成] の順にクリックします。
- [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
- 鍵ファイルを Bindplane コレクタ ディレクトリ(Linux の場合は
/opt/observiq-otel-collector/ingestion-auth.json、Windows の場合はC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)にingestion-auth.jsonとして保存するか、config.yamlのcreds_file_pathを保存先のパスと一致するように更新します。 - [IAM と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。これはエクスポータの構成に必要です。
オプション 2: 取り込み認証ファイルをダウンロードする(以前のバージョン)
- 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 /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
構成ファイルを編集します。
config.yamlの内容全体を次の構成に置き換えます。receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/symantec_vip: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: SYMANTEC_VIP raw_log_field: body service: pipelines: logs/symantec_vip_to_chronicle: receivers: - udplog exporters: - chronicle/symantec_vip
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address: リッスンする IP アドレスとポート。0.0.0.0: すべてのインターフェースでリッスンします(推奨)。- ポート
514は標準の syslog ポートです(Linux では root が必要です。root 以外の場合は1514を使用します)。
エクスポータの構成:
creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Google SecOps コンソールからコピーしたお客様 IDlocation:<LOCATION>は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1など)に置き換えます。エクスポーターは、chronicle.googleapis.comの先頭にこの値を付加します。完全なリストについては、リージョン エンドポイントをご覧ください。project:<PROJECT_NUMBER>を [IAM と管理] > [設定] のプロジェクト番号に置き換えます。endpoint:chronicle.googleapis.comに設定したままにします。
以前の取り込み API エクスポータ
オプション 2 の取り込み認証ファイルを使用する場合は、
exportersブロックを次のように置き換えます。creds_file_pathを取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.comをリージョン エンドポイント(europe-malachiteingestion-pa.googleapis.comなど)に置き換えます。exporters: chronicle/symantec_vip: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SYMANTEC_VIP raw_log_field: body
構成ファイルを保存する
- 編集が完了したら、ファイルを保存します。
- 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"
Symantec VIP Enterprise Gateway で syslog を構成する
- Symantec VIP Gateway ウェブ UI にログインします。
- [Logs] > [Syslog Configuration] に移動します。
- Syslog を初めて構成する場合は、プロンプトが表示されたら [Yes] を選択します。すでに設定されている場合は、[編集] をクリックします。
- 次の構成情報を指定します。
- Syslog Facility: [LOG_LOCAL0] を選択します。
- Syslog ホスト: Bindplane エージェントの IP アドレスを入力します。
- Syslog ポート: Bindplane エージェントのポート番号を入力します(例: UDP の場合は
514)。
- [保存] をクリックします。
- [設定] > [コンソール設定] に移動します。
- 次の構成情報を指定します。
- Logging Level: [Info] を選択します。
- Syslog を有効にする: [はい] を選択します。
- [送信] をクリックします。
- [設定] > [ヘルスチェックの設定] に移動します。
- [Yes] を選択して、ヘルスチェック サービスを有効にします。
- 次の構成情報を指定します。
- Logging Level: [Info] を選択します。
- Syslog を有効にする: [はい] を選択します。
- [送信] をクリックします。
- [User Store] > [LDAP Directory Synchronization] に移動します。
- 次の構成の詳細を編集します。
- ログレベル: [Info] を選択します。
- Syslog を有効にする: [はい] を選択します。
- [送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| アプリケーション | read_only_udm.principal.application | 値は、json フィルタによって抽出された application フィールドから取得されます。 |
| コマンド | read_only_udm.target.process.command_line | 値は、Grok パターンによって抽出された command フィールドから取得されます。 |
| credentialType | このフィールドは UDM に直接マッピングされません。これは、read_only_udm.extensions.auth.mechanism の値を導出するために使用されます。 | |
| データ | このフィールドは UDM に直接マッピングされません。他のフィールドを抽出するために解析されます。 | |
| data2 | このフィールドは UDM に直接マッピングされません。他のフィールドを抽出するために解析されます。 | |
| datetime | read_only_udm.metadata.event_timestamp.seconds read_only_udm.metadata.event_timestamp.nanos |
datetime フィールドから抽出されたエポックからの秒数とナノ秒数。 |
| 降順 | read_only_udm.metadata.description | 値は、json フィルタによって抽出された desc フィールドから取得されます。 |
| 説明 | read_only_udm.security_result.description | 値は、json フィルタによって抽出された description フィールドから取得されます。 |
| filename | read_only_udm.target.process.file.full_path | 値は、Grok パターンによって抽出された filename フィールドから取得されます。 |
| hostname | read_only_udm.principal.hostname | 値は、json フィルタによって抽出された hostname フィールドから取得されます。 |
| host_name | read_only_udm.intermediary.hostname | 値は、json フィルタによって抽出された host_name フィールドから取得されます。 |
| log_level | このフィールドは UDM に直接マッピングされません。これは、read_only_udm.security_result.severity の値を導出するために使用されます。 | |
| log_type | read_only_udm.metadata.product_event_type | 値は、json フィルタによって抽出された log_type フィールドから取得されます。 |
| msg | このフィールドは UDM に直接マッピングされません。他のフィールドを抽出するために解析されます。 | |
| オペレーション | read_only_udm.security_result.summary | 値は、Grok パターンによって抽出された operation フィールドから取得されます。 |
| processid | read_only_udm.target.process.pid | 値は、grok パターンによって抽出された processid フィールドから取得されます。 |
| product | read_only_udm.metadata.product_name | 値は、json フィルタによって抽出された product フィールドから取得されます。 |
| reason | read_only_udm.metadata.description | 値は、grok パターンによって抽出された reason フィールドから取得されます。 |
| request_id | read_only_udm.target.resource.id | 値は、grok パターンによって抽出された request_id フィールドから取得されます。 |
| src_ip | read_only_udm.principal.ip | 値は、Grok パターンによって抽出された src_ip フィールドから取得されます。 |
| ステータス | read_only_udm.metadata.description | 値は、grok パターンによって抽出された status フィールドから取得されます。 |
| 概要 | read_only_udm.security_result.summary | 値は、json フィルタによって抽出された summary フィールドから取得されます。 |
| timestamp.nanos | read_only_udm.metadata.event_timestamp.nanos | 元のログのタイムスタンプからのナノ秒。 |
| timestamp.seconds | read_only_udm.metadata.event_timestamp.seconds | 元のログのタイムスタンプからの秒数。 |
| 時間 | このフィールドは UDM に直接マッピングされません。これは、read_only_udm.metadata.event_timestamp.seconds と read_only_udm.metadata.event_timestamp.nanos の値を導出するために使用されます。 | |
| ユーザー | read_only_udm.target.user.userid | 値は、json フィルタまたは grok パターンによって抽出された user フィールドから取得されます。 |
| vendor | read_only_udm.metadata.vendor_name | 値は、json フィルタによって抽出された vendor フィールドから取得されます。 |
| read_only_udm.extensions.auth.mechanism | credentialType フィールドによって決まります。credentialType が SMS_OTP または STANDARD_OTP の場合、OTP が使用されます。credentialType が正規表現 PASSWORD と一致する場合、USERNAME_PASSWORD が使用されます。 |
|
| read_only_udm.extensions.auth.type | reason フィールドが正規表現 LDAP と一致する場合、SSO が使用されます。それ以外の場合は、AUTHTYPE_UNSPECIFIED が使用されます。 |
|
| read_only_udm.metadata.event_type | 特定のフィールドの有無によって決まります。user または processid が空でない場合は、USER_LOGIN が使用されます。user が空で、src_ip が空でないか 0.0.0.0 の場合、STATUS_UPDATE が使用されます。それ以外の場合は、GENERIC_EVENT が使用されます。 |
|
| read_only_udm.metadata.log_type | SYMANTEC_VIP にハードコードされています。 |
|
| read_only_udm.security_result.action | status フィールドによって決定されます。status が Authentication Success、GRANTED、Authentication Completed、After Services Authenticate call、CHALLENGED のいずれかの場合、ALLOW が使用されます。status が DENIED、Acces-Reject、Unknown Error、Service Unavailable、FAILED のいずれかの場合、BLOCK が使用されます。status が PUSH request sent for user または Trying to fetch attribute の場合、QUARANTINE が使用されます。 |
|
| read_only_udm.security_result.severity | log_level フィールドによって決定されます。log_level が DEBUG、INFO、AUDIT のいずれかの場合、INFORMATIONAL が使用されます。log_level が ERROR の場合、ERROR が使用されます。log_level が WARNING の場合、MEDIUM が使用されます。 |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。