ADVA Fiber Service Platform のログを収集する
このドキュメントでは、Bindplane を使用して ADVA Fiber Service Platform(ADVA FSP)ログを Google Security Operations に取り込む方法について説明します。パーサーは、スイッチとルーターの syslog メッセージからフィールドを抽出し、Key-Value ペアに変換します。次に、抽出されたフィールドとその値を Chronicle UDM スキーマ内の対応するフィールドにマッピングし、セキュリティ分析用のデータを拡充します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
systemdを使用する Windows 2012 SP2 以降または Linux ホスト- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- ADVA FSP デバイス管理コンソールへの特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。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
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ファイルを編集します。次の 2 つは動作するレシーバー オプションです。デバイスがログを送信する方法に一致するものを選択してください。- オプション A - UDP ログ レシーバ(シンプルな UDP)
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com log_type: 'ADVA_FSP' raw_log_field: body ingestion_labels: service: pipelines: logs/adva-fsp: receivers: - udplog exporters: - chronicle/chronicle_w_labels- オプション B - Syslog レシーバ(厳格な syslog フレーム処理に推奨)
receivers: syslog: tcp: listen_address: "0.0.0.0:514" protocol: rfc5424 # or rfc3164 if your device uses BSD syslog exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com log_type: 'ADVA_FSP' raw_log_field: body ingestion_labels: source: 'adva-fsp' env: 'production' service: pipelines: logs/adva-fsp: receivers: - syslog exporters: - chronicle/chronicle_w_labels- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<CUSTOMER_ID>は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.jsonの値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agentWindows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgentADVA FSP で Syslog 転送を構成する
- ADVA FSP Management Console にログインします。
- [Node] > [General] > [Controls] に移動します。
- [Remote Event Recipients (SysLog)] セクションで、[Add] をクリックします。
- 次の構成の詳細を指定します。
- IPv4/v6 アドレス: Bindplane エージェントの IP アドレスを入力します。
- ポート: Bindplane エージェントのポート番号(例:
514)を入力します。 - プロトコル: 実際の Bindplane エージェントの構成に応じて、[UDP] または [TCP] を選択します。
- メッセージ拡張機能: 省略可: [ユーザーラベルを追加] をクリックして、メッセージに追加の識別子を含めます。
- [保存] をクリックして、構成を有効にします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| ACCESSORDER | additional.fields.value.string_value | この値は、未加工ログの ACCESSORDER フィールドから取得されます。 |
| 住所 | principal.ip | 値は、未加工ログの ADDRESS フィールドから取得され、IP アドレスとして解析されます。 |
| ADMINSTATE | additional.fields.value.string_value | この値は、未加工ログの ADMINSTATE フィールドから取得されます。 |
| AISCLIENTMDLEVEL | additional.fields.value.string_value | この値は、未加工ログの AISCLIENTMDLEVEL フィールドから取得されます。 |
| AISGENENABLED | additional.fields.value.string_value | この値は、未加工ログの AISGENENABLED フィールドから取得されます。 |
| AISPRIORITY | additional.fields.value.string_value | この値は、未加工ログの AISPRIORITY フィールドから取得されます。 |
| AISTXPERIOD | additional.fields.value.string_value | この値は、未加工ログの AISTXPERIOD フィールドから取得されます。 |
| AISTRIGGERTYPES | additional.fields.value.string_value | この値は、未加工ログの AISTRIGGERTYPES フィールドから取得されます。 |
| BUFFERSIZE | additional.fields.value.string_value | この値は、未加工ログの BUFFERSIZE フィールドから取得されます。 |
| CCIENABLED | additional.fields.value.string_value | この値は、未加工ログの CCIENABLED フィールドから取得されます。 |
| CCMINTERFACESTATUSTLVCONTROL | additional.fields.value.string_value | この値は、未加工ログの CCMINTERFACESTATUSTLVCONTROL フィールドから取得されます。 |
| CCMLTMPRIORITY | additional.fields.value.string_value | この値は、未加工ログの CCMLTMPRIORITY フィールドから取得されます。 |
| CFMTAGETHERTYPE | additional.fields.value.string_value | この値は、未加工ログの CFMTAGETHERTYPE フィールドから取得されます。 |
| CIR | additional.fields.value.string_value | この値は、未加工ログの CIR フィールドから取得されます。 |
| COS | additional.fields.value.string_value | この値は、未加工ログの COS フィールドから取得されます。 |
| CT | metadata.description | この値は、未加工ログの CT フィールドから取得されます。 |
| DESTBMAC | target.mac | 値は、未加工ログの DESTBMAC フィールドから取得され、MAC アドレスとして解析されます。 |
| DHCPCIDENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPCIDENABLED フィールドから取得されます。 |
| DHCPENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPENABLED フィールドから取得されます。 |
| DHCPHOSTNAME | network.dhcp.client_hostname | この値は、未加工ログの DHCPHOSTNAME フィールドから取得されます。 |
| DHCPHOSTNAMEENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPHOSTNAMEENABLED フィールドから取得されます。 |
| DHCPHOSTNAMETYPE | additional.fields.value.string_value | この値は、未加工ログの DHCPHOSTNAMETYPE フィールドから取得されます。 |
| DHCPLOGSERVERENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPLOGSERVERENABLED フィールドから取得されます。 |
| DHCPNTPSERVERENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPNTPSERVERENABLED フィールドから取得されます。 |
| DHCPV6CIDENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPV6CIDENABLED フィールドから取得されます。 |
| DHCPV6ENABLED | additional.fields.value.string_value | この値は、未加工ログの DHCPV6ENABLED フィールドから取得されます。 |
| DHCPV6ROLE | additional.fields.value.string_value | この値は、未加工ログの DHCPV6ROLE フィールドから取得されます。 |
| DHCPVENDORINFOTYPE | additional.fields.value.string_value | この値は、未加工ログの DHCPVENDORINFOTYPE フィールドから取得されます。 |
| DIR | additional.fields.value.string_value | この値は、未加工ログの DIR フィールドから取得されます。 |
| 行動促進(DIRECTION) | network.direction | 未加工ログの DIRECTION フィールドが「UP」(大文字と小文字を区別しない)の場合は「OUTBOUND」、DIRECTION フィールドが「DOWN」の場合は「INBOUND」に設定されます。それ以外の場合は空のままになります。 |
| ENCAPSULATIONTYPE | additional.fields.value.string_value | この値は、未加工ログの ENCAPSULATIONTYPE フィールドから取得されます。 |
| GUARANTEEDA2NBW | additional.fields.value.string_value | この値は、未加工ログの GUARANTEEDA2NBW フィールドから取得されます。 |
| HCOSMGMTENABLED | additional.fields.value.string_value | この値は、未加工ログの HCOSMGMTENABLED フィールドから取得されます。 |
| INT | additional.fields.value.string_value | この値は、未加工ログの INT フィールドから取得されます。 |
| IPMODE | additional.fields.value.string_value | この値は、未加工ログの IPMODE フィールドから取得されます。 |
| IPV6ADDR | principal.ip | 値は、未加工ログの IPV6ADDR フィールドから取得され、IP アドレスとして解析されます。 |
| IPV6ADDRPREFIXLENGTH | additional.fields.value.string_value | この値は、未加工ログの IPV6ADDRPREFIXLENGTH フィールドから取得されます。 |
| IPV6MTU | additional.fields.value.string_value | この値は、未加工ログの IPV6MTU フィールドから取得されます。 |
| ITAG | additional.fields.value.string_value | この値は、未加工ログの ITAG フィールドから取得されます。 |
| ITAGENABLED | additional.fields.value.string_value | この値は、未加工ログの ITAGENABLED フィールドから取得されます。 |
| LBMTXDESTTYPE | additional.fields.value.string_value | この値は、未加工ログの LBMTXDESTTYPE フィールドから取得されます。 |
| LBMTXNUMMSGS | additional.fields.value.string_value | この値は、未加工ログの LBMTXNUMMSGS フィールドから取得されます。 |
| LBMTXVLANDROPENABLE | additional.fields.value.string_value | この値は、未加工ログの LBMTXVLANDROPENABLE フィールドから取得されます。 |
| LBMTXVLANPRIORITY | additional.fields.value.string_value | この値は、未加工ログの LBMTXVLANPRIORITY フィールドから取得されます。 |
| LLRESPONDERENABLED | additional.fields.value.string_value | この値は、未加工ログの LLRESPONDERENABLED フィールドから取得されます。 |
| LLVIDLIST | additional.fields.value.string_value | この値は、未加工ログの LLVIDLIST フィールドから取得されます。 |
| LMDUALENDEDCOUNTALLPRIOS | additional.fields.value.string_value | この値は、未加工ログの LMDUALENDEDCOUNTALLPRIOS フィールドから取得されます。 |
| LMINPROFILEONLY | additional.fields.value.string_value | この値は、未加工ログの LMINPROFILEONLY フィールドから取得されます。 |
| LMRXCOUNTALLPRIOS | additional.fields.value.string_value | この値は、未加工ログの LMRXCOUNTALLPRIOS フィールドから取得されます。 |
| LMTXCOUNTALLPRIOS | additional.fields.value.string_value | この値は、未加工ログの LMTXCOUNTALLPRIOS フィールドから取得されます。 |
| 場所 | additional.fields.value.string_value | この値は、未加工ログの LOC フィールドから取得されます。 |
| LOCN | additional.fields.value.string_value | この値は、未加工ログの LOCN フィールドから取得されます。 |
| LOGINTIMEOUT | additional.fields.value.string_value | この値は、未加工ログの LOGINTIMEOUT フィールドから取得されます。 |
| LOOPBACKBLOCKINGENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKBLOCKINGENABLED フィールドから取得されます。 |
| LOOPBACKCONFIG | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKCONFIG フィールドから取得されます。 |
| LOOPBACKDESTMAC | target.mac | 値は、未加工ログの LOOPBACKDESTMAC フィールドから取得され、MAC アドレスとして解析されます。 |
| LOOPBACKDESTMACCONTROL | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKDESTMACCONTROL フィールドから取得されます。 |
| LOOPBACKINNERVLAN1 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKINNERVLAN1 フィールドから取得されます。 |
| LOOPBACKINNERVLAN1ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKINNERVLAN1ENABLED フィールドから取得されます。 |
| LOOPBACKINNERVLAN2 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKINNERVLAN2 フィールドから取得されます。 |
| LOOPBACKINNERVLAN2ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKINNERVLAN2ENABLED フィールドから取得されます。 |
| LOOPBACKINNERVLAN3 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKINNERVLAN3 フィールドから取得されます。 |
| LOOPBACKINNERVLAN3ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKINNERVLAN3ENABLED フィールドから取得されます。 |
| LOOPBACKOUTERITAG1 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERITAG1 フィールドから取得されます。 |
| LOOPBACKOUTERITAG1ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERITAG1ENABLED フィールドから取得されます。 |
| LOOPBACKOUTERITAG2 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERITAG2 フィールドから取得されます。 |
| LOOPBACKOUTERITAG2ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERITAG2ENABLED フィールドから取得されます。 |
| LOOPBACKOUTERITAG3 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERITAG3 フィールドから取得されます。 |
| LOOPBACKOUTERITAG3ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERITAG3ENABLED フィールドから取得されます。 |
| LOOPBACKOUTERVLAN1 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERVLAN1 フィールドから取得されます。 |
| LOOPBACKOUTERVLAN1ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERVLAN1ENABLED フィールドから取得されます。 |
| LOOPBACKOUTERVLAN2 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERVLAN2 フィールドから取得されます。 |
| LOOPBACKOUTERVLAN2ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERVLAN2ENABLED フィールドから取得されます。 |
| LOOPBACKOUTERVLAN3 | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERVLAN3 フィールドから取得されます。 |
| LOOPBACKOUTERVLAN3ENABLED | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKOUTERVLAN3ENABLED フィールドから取得されます。 |
| LOOPBACKSOURCEMAC | principal.mac | 値は、未加工ログの LOOPBACKSOURCEMAC フィールドから取得され、MAC アドレスとして解析されます。 |
| LOOPBACKSWAPSADA | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKSWAPSADA フィールドから取得されます。 |
| LOOPBACKTIMER | additional.fields.value.string_value | この値は、未加工ログの LOOPBACKTIMER フィールドから取得されます。 |
| LOWESTPRIODEFECT | additional.fields.value.string_value | この値は、未加工ログの LOWESTPRIODEFECT フィールドから取得されます。 |
| LTMTXDESTTYPE | additional.fields.value.string_value | この値は、未加工ログの LTMTXDESTTYPE フィールドから取得されます。 |
| LTMTXEGRESSID | metadata.product_log_id | この値は、未加工ログの LTMTXEGRESSID フィールドから取得されます。 |
| LTMTXFLAGS | additional.fields.value.string_value | この値は、未加工ログの LTMTXFLAGS フィールドから取得されます。 |
| LTMTXTTL | additional.fields.value.string_value | この値は、未加工ログの LTMTXTTL フィールドから取得されます。 |
| MT | additional.fields.value.string_value | この値は、未加工ログの MT フィールドから取得されます。 |
| MAXIMUMA2NBW | additional.fields.value.string_value | この値は、未加工ログの MAXIMUMA2NBW フィールドから取得されます。 |
| MVAL | additional.fields.value.string_value | この値は、未加工ログの MVAL フィールドから取得されます。 |
| 名前 | additional.fields.value.string_value | この値は、未加工ログの NAME フィールドから取得されます。 |
| NC | additional.fields.value.string_value | この値は、未加工ログの NC フィールドから取得されます。 |
| PORTEID | additional.fields.value.string_value | この値は、未加工ログの PORTEID フィールドから取得されます。 |
| PORTLLENABLED | additional.fields.value.string_value | この値は、未加工ログの PORTLLENABLED フィールドから取得されます。 |
| PRIMARYSERVER | target.ip | 値は、未加工ログの PRIMARYSERVER フィールドから取得され、IP アドレスとして解析されます。 |
| PRIMARYVID | additional.fields.value.string_value | この値は、未加工ログの PRIMARYVID フィールドから取得されます。 |
| QUEUEPROFILEID | additional.fields.value.string_value | この値は、未加工ログの QUEUEPROFILEID フィールドから取得されます。 |
| RXSHAPEREID | additional.fields.value.string_value | この値は、未加工ログの RXSHAPEREID フィールドから取得されます。 |
| SATRESPONDENABLED | additional.fields.value.string_value | この値は、未加工ログの SATRESPONDENABLED フィールドから取得されます。 |
| SE | additional.fields.value.string_value | この値は、未加工ログの SE フィールドから取得されます。 |
| SHAREDVIM | additional.fields.value.string_value | この値は、未加工ログの SHAREDVIM フィールドから取得されます。 |
| SVLANENABLED | additional.fields.value.string_value | この値は、未加工ログの SVLANENABLED フィールドから取得されます。 |
| SVLANID | additional.fields.value.string_value | この値は、未加工ログの SVLANID フィールドから取得されます。 |
| SYSLOCATION | principal.location.country_or_region | この値は、未加工ログの SYSLOCATION フィールドから取得されます。 |
| THVAL | additional.fields.value.string_value | この値は、未加工ログの THVAL フィールドから取得されます。 |
| タイプ | additional.fields.value.string_value | この値は、未加工ログの TYPE フィールドから取得されます。 |
| USERACCESSTYPE | additional.fields.value.string_value | この値は、未加工ログの USERACCESSTYPE フィールドから取得されます。 |
| USERAUTHKEY | additional.fields.value.string_value | この値は、未加工ログの USERAUTHKEY フィールドから取得されます。 |
| USERAUTHKEYLOCAL | additional.fields.value.string_value | この値は、未加工ログの USERAUTHKEYLOCAL フィールドから取得されます。 |
| USERAUTHPROTOCOL | additional.fields.value.string_value | この値は、未加工ログの USERAUTHPROTOCOL フィールドから取得されます。 |
| USERENGINEID | additional.fields.value.string_value | この値は、未加工ログの USERENGINEID フィールドから取得されます。 |
| USERKEYSLOCAL | additional.fields.value.string_value | この値は、未加工ログの USERKEYSLOCAL フィールドから取得されます。 |
| ユーザー名 | principal.user.userid | この値は、未加工ログの USERNAME フィールドから取得されます。 |
| USERPRIVKEY | additional.fields.value.string_value | この値は、未加工ログの USERPRIVKEY フィールドから取得されます。 |
| USERPRIVKEYLOCAL | additional.fields.value.string_value | この値は、未加工ログの USERPRIVKEYLOCAL フィールドから取得されます。 |
| USERPRIVPROTOCOL | additional.fields.value.string_value | この値は、未加工ログの USERPRIVPROTOCOL フィールドから取得されます。 |
| USERSECURITYLEVEL | additional.fields.value.string_value | この値は、未加工ログの USERSECURITYLEVEL フィールドから取得されます。 |
| USERSECURITYNAME | principal.user.user_display_name | この値は、未加工ログの USERSECURITYNAME フィールドから取得されます。 |
| アプリケーション | principal.application | 値は、grok パーサーによって抽出されたアプリケーション フィールドから取得されます。 |
| 説明 | security_result.description | 値は、grok パーサーによって抽出された説明フィールドから取得されます。 |
| metadata.description | 未加工ログの CT フィールドが「Backup NTP Server Failed」の場合、値は「Backup NTP Server Failed」に設定されます。 | |
| metadata.event_timestamp.seconds | 値は、grok パーサーによって抽出されたタイムスタンプ フィールドから取得され、エポック秒に変換されます。 | |
| metadata.event_type | 値は次のロジックに基づいて設定されます。 - network_dhcp_present が true で、principal_present または target_present のいずれかが true の場合は NETWORK_DHCP。 - target_present と principal_present の両方が true の場合は NETWORK_CONNECTION。 - user_present が true の場合は USER_RESOURCE_ACCESS。 - principal_present が true の場合は STATUS_UPDATE。 - それ以外の場合は GENERIC_EVENT。 |
|
| metadata.product_log_id | この値は、未加工ログの LTMTXEGRESSID フィールドから取得されます。 | |
| metadata.product_name | 値は「ADVA_FSP」に設定されます。 | |
| metadata.vendor_name | 値は「ADVA_FSP」に設定されます。 | |
| network.application_protocol | network_dhcp_present が true で、principal_present または target_present のいずれかが true の場合、値は「DHCP」に設定されます。 | |
| principal.hostname | 値は、Grok パーサーによって抽出された principal_hostname フィールドから取得され、アンダースコアが削除されます。 | |
| principal.ip | 値は、未加工ログの IPADDR フィールドから取得され、IP アドレスとして解析されます。 | |
| timestamp.seconds | 値は、grok パーサーによって抽出されたタイムスタンプ フィールドから取得され、エポック秒に変換されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。