A10 ネットワーク ロードバランサのログを収集する
このドキュメントでは、Bindplane エージェントを使用して A10 Network Load Balancer ログを Google Security Operations にエクスポートする方法について説明します。パーサーは、まず grok
パターンを使用して関連するフィールドを抽出します。次に、条件ステートメント(if
)を使用して、抽出されたフィールドの存在と内容に基づいて統合データモデル(UDM)にマッピングし、最終的にイベントタイプを分類します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Windows 2016 以降、または
systemd
を使用する Linux ホストを使用していることを確認します。 - プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- A10 ロードバランサへの特権アクセス権があることを確認します。
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: A10_LOAD_BALANCER 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
A10 ロードバランサで Syslog サーバーを構成する
- SSH クライアントを使用して A10 ロードバランサへの SSH 接続を確立します。
次のコマンドを実行して構成モードに入ります。
config
次のコマンドを使用して、リモート syslog サーバーを構成します。
logging host <bindplane-server-ip> <port-number>
<bindplane-server-ip>
は Bindplane の IP アドレスに、<port-number>
は Bindplane で構成された値に置き換えます(例:514
)。
重大度レベルを設定するには、次のコマンドを使用します。
logging level information
- これにより、警告やエラーなどの情報メッセージが Bindplane エージェントに送信されます。
次のコマンドを実行して、syslog ロギングが有効になっていることを確認します。
logging enable
再起動後も構成が保持されるように、構成を保存します。
write memory
完全な CLI 構成の例:
config logging host 192.168.1.100 514 logging level info logging enable write memory
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
dns | additional.fields.dns.value.string_value | 値は、Grok パターンによって抽出された dns フィールドから取得されます。 |
dns_server | additional.fields.dns_server.value.string_value | 値は、Grok パターンによって抽出された dns_server フィールドから取得されます。 |
gslb | additional.fields.gslb.value.string_value | 値は、Grok パターンによって抽出された gslb フィールドから取得されます。 |
host_name | principal.hostname principal.asset.hostname |
値は、Grok パターンによって抽出された host_name フィールドから取得されます。 |
httpmethod | network.http.method | 値は、Grok パターンによって抽出された httpmethod フィールドから取得されます。 |
partion_id | additional.fields.partion_id.value.string_value | 値は、Grok パターンによって抽出された partion_id フィールドから取得されます。 |
prin_ip | principal.ip principal.asset.ip |
値は、Grok パターンによって抽出された prin_ip フィールドから取得されます。 |
prin_mac | principal.mac | 値は、Grok パターンによって抽出された prin_mac フィールドから取得されます。ドットが削除され、2 文字ごとにコロンが挿入されます。 |
prin_port | principal.port | 値は、grok パターンによって抽出された prin_port フィールドから取得され、整数に変換されます。 |
proto | network.ip_protocol | 値は、Grok パターンによって抽出された proto フィールドから取得されます。message フィールドに UDP が含まれている場合、値は UDP に設定されます。 |
sessionid | network.session_id | 値は、Grok パターンによって抽出された sessionid フィールドから取得されます。 |
status_code | network.http.response_code | 値は、grok パターンによって抽出された status_code フィールドから取得され、整数に変換されます。 |
tar_ip | target.ip target.asset.ip |
値は、Grok パターンによって抽出された tar_ip フィールドから取得されます。 |
tar_mac | target.mac | 値は、Grok パターンによって抽出された tar_mac フィールドから取得されます。ドットが削除され、2 文字ごとにコロンが挿入されます。 |
tar_port | target.port | 値は、grok パターンによって抽出された tar_port フィールドから取得され、整数に変換されます。 |
時間 | metadata.event_timestamp.seconds | 値は、grok パターンによって抽出された time フィールドから、複数の可能な日付形式を使用して解析されます。 |
URL | target.url | 値は、Grok パターンによって抽出された url フィールドから取得されます。 |
ユーザー | principal.user.userid | 値は、Grok パターンによって抽出された user フィールドから取得されます。 |
なし | metadata.event_type | プリンシパルとターゲットの情報が存在するかどうかを基に、パーサーのロジックによって決定されます。 - NETWORK_CONNECTION : プリンシパルとターゲットの両方の情報が存在する場合。- STATUS_UPDATE : プリンシパル情報のみが存在する場合。- GENERIC_EVENT : それ以外の場合。 |
なし | metadata.log_type | A10_LOAD_BALANCER にハードコードされています。 |
なし | network.application_protocol | proto フィールドが HTTP の場合、HTTP に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。