F5 VPN のログを収集する

パーサーのバージョン: 2.0

以下でサポートされています。

このドキュメントでは、Bindplane エージェントを使用して F5 VPN ログを Google Security Operations に取り込む方法について説明します。

F5 BIG-IP Access Policy Manager(APM)は、ユーザー認証、セッション管理、ポリシー評価、トンネル確立、ネットワーク アクセス イベントの syslog メッセージを生成する VPN およびアクセス管理ソリューションです。パーサーは、syslog 形式のログからフィールドを抽出し、統合データモデル(UDM)にマッピングします。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • Bindplane エージェントと F5 BIG-IP アプライアンス間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • F5 BIG-IP tmsh(バージョン 11.x 以降)への特権アクセス

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新規デプロイ: Chronicle API を使用します(オプション 1)。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを ingestion-auth.json として Bindplane コレクタ ディレクトリ(Linux の場合は /opt/observiq-otel-collector/ingestion-auth.json、Windows の場合は C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に保存するか、config.yaml の creds_file_path を更新して、保存先のパスと一致させます。
  12. [IAM と管理] > [設定] に移動し、プロジェクト番号をコピーします。これはエクスポータの構成に必要です。

オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)

  1. Google SecOps コンソールにログインします。
  2. [設定] > [データ管理] > [収集エージェント] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。
  4. Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [Settings] > [Administration] > [Profile] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows へのインストール

  1. 管理者としてコマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

    サービスが RUNNING と表示されます。

Linux へのインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

    サービスが active (running) と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを探す

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/f5_vpn:
        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: F5_VPN
        raw_log_field: body
    
    service:
      pipelines:
        logs/f5_vpn_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/f5_vpn
    

構成パラメータ

各プレースホルダを次のように置き換えます。

  • レシーバーの構成:

    • 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
    • customer_id: Google SecOps コンソールからコピーしたお客様 ID
    • location: <LOCATION> は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポーターは、chronicle.googleapis.com の前にこの値を付加します。完全なリストについては、リージョン エンドポイントをご覧ください。
    • project: <PROJECT_NUMBER> を、[IAM と管理] > [設定] のプロジェクト番号に置き換えます。
    • endpoint: chronicle.googleapis.com に設定したままにします。

以前の Ingestion API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(例: europe-malachiteingestion-pa.googleapis.com)に置き換えます。

    exporters:
      chronicle/f5_vpn:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: F5_VPN
        raw_log_field: body
    

構成ファイルを保存する

  • 編集が完了したら、ファイルを保存します。
    • Linux: Ctrl+O、Enter、Ctrl+X の順に押します。
    • Windows の場合: [ファイル] > [保存] をクリックします。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

      sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を実行します。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R を押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。
      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

F5 BIG-IP APM で syslog 転送を構成する

  1. F5 BIG-IP コマンドラインに接続します。
  2. tmsh シェルを開きます。

    tmsh
    
  3. 次のコマンドを実行して、リモート syslog サーバーを構成します。

    modify sys syslog remote-servers add { <Name> { host <bindplane-ip> remote-port <bindplane-port> } }
    

    次のように置き換えます。

    • <Name>: この syslog 宛先の一意の名前(例: bindplane_server)。
    • <bindplane-ip>: Bindplane エージェント ホストの IP アドレス。
    • <bindplane-port>: Bindplane エージェント レシーバーで構成されたポート(デフォルト: 514)。
  4. 構成を保存します。

    save sys config partitions all
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
cmd_data principal.process.command_line 値は msg フィールドから抽出されます。
errdefs_msgno additional.fields.errdefs_msgno.string_value 値は msg フィールドから抽出されます。
event_time metadata.event_timestamp 値が解析され、タイムスタンプに変換されます。
hostname principal.hostname,、observer.hostname,、principal.asset.hostname,、observer.asset.hostname, この値はメッセージ フィールドから抽出され、UDM のホスト名フィールドに入力されます。hostip フィールドへの入力にも使用されます。
msg security_result.description この値は message フィールドから抽出され、security_result オブジェクトの description フィールドに入力されます。
prin_ip principal.ip,、principal.asset.ip この値はメッセージ フィールドから抽出され、UDM の IP アドレス フィールドに入力するために使用されます。
additional.fields.Canonical_Info.string_value 値はログメッセージから取得されます。
additional.fields.IDP.string_value 値はログメッセージから取得されます。
additional.fields.Plugin_Support.string_value 値はログメッセージから取得されます。
additional.fields.SMB、Stage.string_value 値はログメッセージから取得されます。
additional.fields.SP.string_value 値はログメッセージから取得されます。
additional.fields.Timezone.string_value 値はログメッセージから取得されます。
additional.fields.Tunnel、Type.string_value 値はログメッセージから取得されます。
additional.fields.UI_Mode.string_value 値はログメッセージから取得されます。
additional.fields.Version.string_value 値はログメッセージから取得されます。
additional.fields.from_rule_item.string_value 値はログメッセージから取得されます。
additional.fields.policy_result.string_value 値はログメッセージから取得されます。
additional.fields.ppp_id.string_value 値はログメッセージから取得されます。
additional.fields.resource.string_value 値はログメッセージから取得されます。
additional.fields.rule.string_value 値はログメッセージから取得されます。
additional.fields.server_vip_ip.string_value 値はログメッセージから取得されます。
additional.fields.server_vip_name.string_value 値はログメッセージから取得されます。
additional.fields.to_rule_item.string_value 値はログメッセージから取得されます。
additional.fields.tunnel_resource.string_value 値はログメッセージから取得されます。
metadata.description 値はログメッセージから取得されます。
metadata.event_type 値は、一部のイベントのパーサーコードでハードコードされ、他のイベントのログ メッセージから派生します。
metadata.log_type 値はバッチタイプに設定されます。
metadata.product_event_type 値はログメッセージから取得されます。
metadata.product_name 値はパーサーコードでハードコードされます。
metadata.vendor_name 値はパーサーコードでハードコードされます。
network.application_protocol 値はログメッセージから取得されます。
network.direction 値はログメッセージから取得されます。
network.http.method 値はログメッセージから取得されます。
network.http.parsed_user_agent 値は network.http.user_agent フィールドから取得されます。
network.http.referral_url 値はログメッセージから取得されます。
network.http.response_code 値はログメッセージから取得されます。
network.http.user_agent 値はログメッセージから取得されます。
network.ip_protocol 値はログメッセージから取得されます。
network.received_bytes 値はログメッセージから取得されます。
network.sent_bytes 値はログメッセージから取得されます。
network.session_id 値はログメッセージから取得されます。
network.tls.cipher 値はログメッセージから取得されます。
network.tls.version 値はログメッセージから取得されます。
observer.asset.hostname 値は hostname フィールドに設定されます。
observer.asset.ip この値は hostip フィールドに設定されます。
observer.hostname 値は hostname フィールドに設定されます。
observer.ip この値は hostip フィールドに設定されます。
principal.application 値はログメッセージから取得されます。
principal.asset.hostname 値は hostname フィールドに設定されます。
principal.asset.ip 値は、hostip フィールドまたは prin_ip フィールド(存在する場合)に設定されます。
principal.asset.product_object_id 値はログメッセージから取得されます。
principal.hostname 値は hostname フィールドに設定されます。
principal.ip 値は、hostip フィールドまたは prin_ip フィールド(存在する場合)に設定されます。
principal.location.country_or_region 値はログメッセージから取得されます。
principal.platform 値はログメッセージから取得されます。
principal.port 値はログメッセージから取得されます。
principal.process.command_line 値はログメッセージから取得されます。
principal.process.pid 値はログメッセージから取得されます。
principal.resource.name 値はログメッセージから取得されます。
principal.resource.type 値は、一部のイベントのパーサーコードでハードコードされ、他のイベントのログ メッセージから派生します。
principal.user.email_addresses 値はログメッセージから取得されます。
principal.user.userid 値はログメッセージから取得されます。
security_result.action 値はログメッセージから取得されます。
security_result.description 値はログメッセージから取得されます。
security_result.rule_name 値はログメッセージから取得されます。
security_result.severity 値はログメッセージから取得されます。
security_result.severity_details 値はログメッセージから取得されます。
security_result.summary 値はログメッセージから取得されます。
src.ip 値はログメッセージから取得されます。
src.location.country_or_region 値はログメッセージから取得されます。
src.port 値はログメッセージから取得されます。
target.asset.hostname 値はログメッセージから取得されます。
target.asset.ip 値はログメッセージから取得されます。
target.hostname 値はログメッセージから取得されます。
target.ip 値はログメッセージから取得されます。
target.port 値はログメッセージから取得されます。
target.process.command_line 値はログメッセージから取得されます。
target.process.pid 値はログメッセージから取得されます。
target.resource.id 値はログメッセージから取得されます。
target.url 値はログメッセージから取得されます。
target.user.userid 値はログメッセージから取得されます。
Hostname target.hostname 変更履歴からマッピング
sess_id network.session_id 変更履歴からマッピング
internal_ip target.ip 変更履歴からマッピング
file_path principal.resource.name 変更履歴からマッピング
useragent network.http.user_agent 変更履歴からマッピング
User-Agent" and "useragent network.http.parsed_user_agent 変更履歴からマッピング
username target.user.userid 変更履歴からマッピング
sid target.user.windows_sid 変更履歴からマッピング
bytes_out network.sent_bytes 変更履歴からマッピング
bytes_in network.received_bytes 変更履歴からマッピング
Platform principal.platform 変更履歴からマッピング
Platform_Version principal.platform_version 変更履歴からマッピング
Javascript_Support", "ActiveX_Support", "Plugin_Support", "Version", "Model", "CPU", "UI_Mode", "SP", "IDP", "to_rule_item", "from_rule_item", "policy_result", "rule", "resource", "ppp_id", "tunnel_resource", "server_vip_ip", "server_vip_name", and "Canonical_Info additional.fields 変更履歴からマッピング
uri_path target.url 変更履歴からマッピング
User-Agent network.http.user_agent 変更履歴からマッピング
s_ip src.ip 変更履歴からマッピング
t_ip target.ip 変更履歴からマッピング
t_port target.port 変更履歴からマッピング
s_nat_ip target.nat_ip 変更履歴からマッピング
cipher_name network.tls.cipher 変更履歴からマッピング
tls_version network.tls.version 変更履歴からマッピング
resource_id target.resource.id 変更履歴からマッピング
src_ip principal.ip 変更履歴からマッピング
status network.http.response_code 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。