VMware Avi ロードバランサ WAF のログを収集する
このドキュメントでは、Bindplane エージェントを使用して VMware Avi ロードバランサ WAF ログを Google Security Operations に取り込む方法について説明します。
VMware Avi Load Balancer(旧称 Avi Networks)は、WAF イベント、クライアント接続ログ、仮想サービス アクティビティの syslog メッセージを生成するアプリケーション配信コントローラです。パーサーは、Syslog 形式のログからフィールドを抽出し、Unified Data Model(UDM)にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows Server 2016 以降、または
systemdを使用する Linux ホスト - Bindplane エージェントと AVI コントローラ間のネットワーク接続
- プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
- VMware AVI ロードバランサへの特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- 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/vmware_avinetworks_iwaf: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: VMWARE_AVINETWORKS_IWAF raw_log_field: body service: pipelines: logs/vmware_avinetworks_iwaf_to_chronicle: receivers: - udplog exporters: - chronicle/vmware_avinetworks_iwaf
構成パラメータ
各プレースホルダを次のように置き換えます。
レシーバーの構成:
listen_address: リッスンする IP アドレスとポート:0.0.0.0: すべてのインターフェースでリッスンします(推奨)。- ポート
514は標準の syslog ポートです(Linux で root が必要です。root 以外のユーザーは1514を使用します)。
エクスポータの構成:
creds_file_path: 取り込み認証ファイルのフルパス。- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Google SecOps コンソールからコピーしたお客様 IDendpoint: リージョン エンドポイント URL:- 米国:
malachiteingestion-pa.googleapis.com - ヨーロッパ:
europe-malachiteingestion-pa.googleapis.com - アジア:
asia-southeast1-malachiteingestion-pa.googleapis.com - 完全なリストについては、リージョン エンドポイントをご覧ください。
- 米国:
構成ファイルを保存する
- 編集後、ファイルを保存します。
- 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"
VMware AVI WAF の外部ロギングを構成する
- AVI Controller ウェブ UI にログインします。
- [テンプレート> プロファイル> アナリティクス] に移動します。
- 新しい分析プロファイルを作成するか、既存の分析プロファイルを選択して編集します。
- [Edit Analytics Profile] 画面で、[Client Log] タブを選択します。
- [外部ロギング] セクションまでスクロールし、[ログを外部サーバーにストリーミングする] チェックボックスをオンにします。
- 次の構成情報を指定します。
- ログ ストリーミング プロトコル: [UDP] を選択します。
- デフォルト ポート: 「514」と入力します。
- ストリーミングするログの種類: [すべてのログ] を選択します。
- [サーバー] の下にある [追加] ボタンをクリックします。
- IP アドレス: Bindplane エージェントの IP アドレスを入力します。
- ポート: Bindplane エージェントのポート番号(例:
514)を入力します。
- [保存] をクリックします。
- ログデータをストリーミングする仮想サービスに設定を適用します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | 論理 |
|---|---|---|
server_name |
about.hostname |
直接マッピングされます。 |
_field |
additional.fields |
統合済み |
additional_field_label |
additional.fields |
統合済み |
cacheable_label |
additional.fields |
統合済み |
compression_label |
additional.fields |
統合済み |
host_label |
additional.fields |
統合済み |
http_version_label |
additional.fields |
統合済み |
is_internal_label |
additional.fields |
統合済み |
key |
additional.fields |
マッピング: `"all_request_headers_pragma", "all_request_headers_accept", "all_request_headers_co... |
match_element_label |
additional.fields |
統合済み |
match_value_label |
additional.fields |
統合済み |
persistent_session_id_label |
additional.fields |
統合済み |
request_headers_label |
additional.fields |
統合済み |
request_id_label |
additional.fields |
統合済み |
response_content_type_label |
additional.fields |
統合済み |
response_headers_label |
additional.fields |
統合済み |
response_time_first_byte_label |
additional.fields |
統合済み |
response_time_last_byte_label |
additional.fields |
統合済み |
rule_log_msg_label |
additional.fields |
統合済み |
rule_log_phase_label |
additional.fields |
統合済み |
rule_log_rule_group_label |
additional.fields |
統合済み |
rule_log_rule_id_label |
additional.fields |
統合済み |
rule_log_rule_name_label |
additional.fields |
統合済み |
server_connection_reused_label |
additional.fields |
統合済み |
server_response_code_label |
additional.fields |
統合済み |
server_response_length_label |
additional.fields |
統合済み |
server_response_time_first_byte_label |
additional.fields |
統合済み |
server_response_time_last_byte_label |
additional.fields |
統合済み |
server_rtt_label |
additional.fields |
統合済み |
server_side_redirect_uri_label |
additional.fields |
統合済み |
server_ssl_session_id_label |
additional.fields |
統合済み |
servers_tried_label |
additional.fields |
統合済み |
ssl_cipher_label |
additional.fields |
統合済み |
ssl_session_id_label |
additional.fields |
統合済み |
ssl_version_label |
additional.fields |
統合済み |
tag_label |
additional.fields |
統合済み |
value_label |
additional.fields |
統合済み |
waf_log.latency_request_header_phase_label |
additional.fields |
統合済み |
waf_log_latency_request_body_phase_label |
additional.fields |
統合済み |
waf_log_latency_response_body_phase_label |
additional.fields |
統合済み |
waf_log_latency_response_header_phase_label |
additional.fields |
統合済み |
waf_log_rules_configured_label |
additional.fields |
統合済み |
waf_log_rules_executed_label |
additional.fields |
統合済み |
service_engine |
intermediary.hostname |
直接マッピングされます。 |
intermediary_ip |
intermediary.ip |
統合済み |
server_src_port |
intermediary.port |
直接マッピングされます。 |
report_timestamp |
metadata.event_timestamp |
ISO8601 として解析済み |
timestamp |
metadata.event_timestamp |
ISO8601 として解析済み |
has_principal |
metadata.event_type |
マッピング: true → NETWORK_HTTP、true → NETWORK_CONNECTION、true → STATUS_UPDATE |
log_id |
metadata.product_log_id |
直接マッピングされます。 |
log_id_syslog |
metadata.product_log_id |
直接マッピングされます。 |
http_method |
network.http.method |
直接マッピングされます。 |
method |
network.http.method |
直接マッピングされます。 |
http_user_agent |
network.http.parsed_user_agent |
直接マッピングされます。 |
http_referer |
network.http.referral_url |
直接マッピングされます。 |
referer |
network.http.referral_url |
直接マッピングされます。 |
http_status |
network.http.response_code |
直接マッピングされます。 |
response_code |
network.http.response_code |
直接マッピングされます。 |
http_user_agent |
network.http.user_agent |
直接マッピングされます。 |
user_agent |
network.http.user_agent |
直接マッピングされます。 |
http_bytes_received |
network.received_bytes |
直接マッピングされます。 |
response_length |
network.received_bytes |
直接マッピングされます。 |
http_bytes_sent |
network.sent_bytes |
直接マッピングされます。 |
request_length |
network.sent_bytes |
直接マッピングされます。 |
client_rtt |
network.session_duration.seconds |
直接マッピングされます。 |
duration |
network.session_duration.seconds |
直接マッピングされます。 |
server_conn_src_ip |
observer.ip |
統合済み |
client_ip |
principal.asset.ip |
統合済み |
source_ip |
principal.asset.ip |
マッピング済み: client_ip → source_ip |
src_ip |
principal.asset.ip |
統合済み |
client_ip |
principal.ip |
統合済み |
source_ip |
principal.ip |
マッピング済み: client_ip → source_ip |
src_ip |
principal.ip |
統合済み |
client_src_port |
principal.port |
直接マッピングされます。 |
user |
principal.user.userid |
直接マッピングされます。 |
request_state |
security_result.description |
直接マッピングされます。 |
_field |
security_result.detection_fields |
統合済み |
waf_status_label |
security_result.detection_fields |
統合済み |
dest_ip |
target.asset.ip |
統合済み |
server_ip |
target.asset.ip |
統合済み |
vs_ip |
target.asset.ip |
統合済み |
vs_name_syslog |
target.hostname |
直接マッピングされます。 |
dest_ip |
target.ip |
統合済み |
server_ip |
target.ip |
統合済み |
vs_ip |
target.ip |
統合済み |
client_dest_port |
target.port |
名前変更済み/マッピング済み |
port |
target.port |
直接マッピングされます。 |
server_dest_port |
target.port |
名前変更済み/マッピング済み |
pool_label |
target.resource.attribute.labels |
統合済み |
pool_name_label |
target.resource.attribute.labels |
統合済み |
virtualservice_label |
target.resource.attribute.labels |
統合済み |
redirected_uri |
target.url |
直接マッピングされます。 |
uri_query |
target.url |
直接マッピングされます。 |
url |
target.url |
直接マッピングされます。 |
| なし | metadata.event_type |
定数: NETWORK_HTTP |
| なし | metadata.product_name |
定数: AVI Load Balancer |
| なし | metadata.vendor_name |
定数: Vmware |
| なし | network.direction |
定数: INBOUND |
| なし | network.http.parsed_user_agent |
定数: parseduseragent |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。