F5 BIG-IP APM のログを収集する

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

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

F5 BIG-IP Access Policy Manager(APM)は、アプリケーション、API、データへの安全で統合されたアクセスを提供します。エンタープライズ ネットワーク向けに、SSO、多要素認証、SSL VPN 機能による ID 認識型コンテキスト ベースのアクセス制御を提供します。パーサーは、F5 BIG-IP APM syslog 形式のログからフィールドを抽出します。grok または kv を使用してログ メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。

始める前に

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

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

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

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

  1. Google SecOps コンソールにログインします。
  2. [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
    

サービスが [アクティブ(実行中)] と表示されます。

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

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

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

構成ファイルを見つける

  • Linux:

    sudo nano /etc/bindplane-agent/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/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'F5_BIGIP_APM'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

構成パラメータ

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

    • レシーバーの構成:

      • udplog: UDP Syslog には udplog、TCP Syslog には tcplog を使用します。
      • 0.0.0.0: リッスンする IP アドレス(すべてのインターフェースでリッスンする場合は 0.0.0.0
      • 514: リッスンするポート番号(標準の syslog ポート)
    • エクスポータの構成:

      • creds_file_path: 取り込み認証ファイルのフルパス:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 ID
      • endpoint: リージョン エンドポイント URL:
        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。
      • log_type: Chronicle に表示されるログタイプ(F5_BIGIP_APM

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+OEnterCtrl+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 ウェブ インターフェース(TMUI/構成ユーティリティ)にログインします。
  2. [システム> ログ> 設定> リモート ロギング] に移動します。
  3. [Remote Logging] セクションで、次の構成の詳細を指定します。
    • リモート IP: Bindplane エージェント ホストの IP アドレスを入力します。
    • リモートポート: 「514」と入力します。
  4. [追加] をクリックします。
  5. [更新] をクリックして構成を保存します。
  6. CLI を使用して詳細な APM ログの高速ロギング(HSL)を構成するには:

    1. F5 BIG-IP システムに SSH 接続します。
    2. 次のコマンドを実行します。

      tmsh create ltm pool syslog_pool members add { BINDPLANE_IP:514 }
      tmsh create sys log-config destination remote-high-speed-log secops_hsl pool-name syslog_pool protocol udp
      tmsh create sys log-config destination remote-syslog secops_syslog remote-high-speed-log secops_hsl
      tmsh create sys log-config publisher secops_publisher destinations add { secops_syslog }
      tmsh save sys config
      
      • BINDPLANE_IP は、Bindplane エージェント ホストの IP アドレスに置き換えます。
  7. パブリッシャーを APM アクセス プロファイルに割り当てます。

    1. [Access] > [Profiles / Policies] > [Access Profiles] に移動します。
    2. ターゲット アクセス プロファイルを選択します。
    3. [ログ設定] タブで、作成したパブリッシャーを選択します。
    4. [更新] をクリックします。
  8. Bindplane エージェントのログを確認して、syslog メッセージが送信されていることを確認します。

UDM マッピング テーブル

ログフィールド UDM マッピング 論理
アプリケーション principal.application 値は、grok フィルタによって抽出されたアプリケーション フィールドから取得されます。
bytes_in network.received_bytes 値は、grok フィルタによって抽出された bytes_in フィールドから取得され、符号なし整数に変換されます。
bytes_out network.sent_bytes 値は、grok フィルタによって抽出された bytes_out フィールドから取得され、符号なし整数に変換されます。
cmd_data principal.process.command_line 値は、kv フィルタによって抽出された cmd_data フィールドから取得されます。
destination_ip target.ip 値は、grok フィルタによって抽出された destination_ip フィールドから取得されます。
destination_port target.port 値は、grok フィルタによって抽出された destination_port フィールドから取得され、整数に変換されます。
フォルダ principal.process.file.full_path 値は、kv フィルタによって抽出された folder フィールドから取得されます。
geoCountry principal.location.country_or_region 値は、grok フィルタによって抽出された geoCountry フィールドから取得されます。
geoState principal.location.state 値は、grok フィルタによって抽出された geoState フィールドから取得されます。
inner_msg security_result.description 他の具体的な説明がない場合、値は grok フィルタによって抽出された inner_msg フィールドから取得されます。
ip_protocol network.ip_protocol 値は、grok フィルタによって抽出された ip_protocol フィールドから取得されます。
principal_hostname principal.hostname 値は、grok フィルタによって抽出された principal_hostname フィールドから取得されます。
principal_ip principal.ip 値は、grok フィルタによって抽出された principal_ip フィールドから取得されます。
process_id principal.process.pid 値は、grok フィルタによって抽出された process_id フィールドから取得されます。
ロール user_role.name 値は、grok フィルタによって抽出された role フィールドから取得されます。ロール フィールドに「admin」が含まれている場合(大文字と小文字を区別しない)、値は「ADMINISTRATOR」に設定されます。
重要度 security_result.severity_details syslog メッセージの元の値がここに保存されます。値は、条件付きロジックを使用して重大度フィールドから取得されます。CRITICAL -> CRITICAL、ERR -> ERROR、ALERT、EMERGENCY -> HIGH、INFO、NOTICE -> INFORMATIONAL、DEBUG -> LOW、WARN -> MEDIUM
source_ip principal.ip 値は、grok フィルタによって抽出された source_ip フィールドから取得されます。
source_port principal.port 値は、grok フィルタによって抽出された source_port フィールドから取得され、整数に変換されます。
ステータス security_result.summary 値は、kv フィルタによって抽出されたステータス フィールドから取得されます。
timestamp metadata.event_timestamp, timestamp 値は、grok フィルタによって抽出されたタイムスタンプ フィールドから取得され、タイムスタンプ オブジェクトに解析されます。最上位のイベント オブジェクトのタイムスタンプ フィールドにもこの値が設定されます。
ユーザー principal.user.userid 値は、「id」または「ID」接頭辞を削除した後に、grok フィルタによって抽出されたユーザー フィールドから取得されます。値は、他のフィールドの有無に基づいて導出されます。ユーザーが存在する場合: USER_UNCATEGORIZED。source_ip と destination_ip が存在する場合: NETWORK_CONNECTION。principal_ip または principal_hostname が存在する場合: STATUS_UPDATE。それ以外の場合: GENERIC_EVENT(「BIGIP_APM」にハードコードされています)。「F5」にハードコードされます。結果フィールドが「failed」の場合、値は「BLOCK」に設定されます。

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