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

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

このドキュメントでは、Google Security Operations フォワーダーを使用して F5 BIG-IP Access Policy Manager(APM)のログを収集する方法について説明します。

詳細については、Google Security Operations へのデータの取り込みの概要をご覧ください。

取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、取り込みラベル F5_BIGIP_APM が付加されたパーサーに適用されます。

F5 BIG-IP APM を構成する

  1. 管理者の認証情報を使用して BIG-IP 構成ユーティリティ ポータルにログインします。
  2. [メイン] > [システム] > [ログ] > [構成] > [リモート ロギング] を選択します。
  3. [プロパティ] セクションで、次の操作を行います。

    • [リモート IP] フィールドに、Google Security Operations 転送元の IP アドレスを入力します。
    • [リモート ポート] フィールドに、大きなポート番号を入力します。
  4. [追加] をクリックします。

  5. [更新] をクリックします。

    APM のロギングでは、Berkeley Software Distribution(BSD)Syslog 形式のみがサポートされています。

    コレクタは、APM 内のシグネチャに基づいて、APM ログのみを処理します。F5 BIG-IP APM イベント コレクタは、LTM 11.6 から 12.1.1 デバイスまでのマルチスレッド ログもサポートしています。

    iRule を使用している場合は、iRule の推奨形式を使用します。Google Security Operations は、次の iRule 形式のみをサポートしています。

    # log_header_requests
    ###################################################################################
    #################################################
    # Purpose: logs header information to Local Traffic log
    # #
    #
    # Update-Log Date By Description
    # Created 02/07/2020 E01961 Initial implementation
    #
    #
    ###################################################################################
    ################################################
    when HTTP_REQUEST {
    set LogString "Client [IP::client_addr]:[TCP::client_port] -> [HTTP::host]
    [HTTP::uri]"
    log local5. "================="
    log local5. "$LogString (request)"
    foreach aHeader [HTTP::header names] {
    log local5. "$aHeader: [HTTP::header value $aHeader]"
    }
    # set UserID [URI::query "?[HTTP::payload]" "UserID"]
    # log local0. "User $UserID attempted login from [IP::client_addr] and referer:
    [HTTP::header "Referer"]"
    # log local0. "============================================="
    }
    when HTTP_RESPONSE {
    log local5. "=================="
    log local5. "$LogString (response) - status: [HTTP::status]"
    foreach aHeader [HTTP::header names] {
    log local5. "$aHeader: [HTTP::header value $aHeader]"
    }
    # log local0. "============================================="
    

F5 BIG-IP DNS を構成する

F5 BIG-IP DNS を構成する手順は次のとおりです。

リモート ロギング サーバーのプールを作成する

  1. [Main] タブで、[DNS] > [Delivery] > [Load balancing] > [Pools or local traffic] > [Pools] を選択します。
  2. 表示された [プールリスト] ウィンドウで、[作成] をクリックします。
  3. 表示された [新しいプール] ウィンドウの [名前] フィールドに、プールの一意の名前を入力します。
  4. [新しいメンバー] セクションで、プールに含めるリモート ロギング サーバーごとに IP アドレスを追加します。
    1. [アドレス] フィールドに Google Security Operations 転送元の IP アドレスを入力するか、ノードリストからノードアドレスを選択します。
    2. [サービスポート] フィールドにサービス番号を入力するか、リストからサービス名を選択します。正しいリモート ロギング ポートが構成されていることを確認します。
  5. [追加]、[完了] の順にクリックします。

リモートの高速ログの宛先を作成する

  1. [Main] タブで、[System] > [Logs] > [Configuration] > [Log destinations] を選択します。
  2. 表示された [ログの保存先] ウィンドウで、[作成] をクリックします。
  3. [名前] フィールドに、この宛先を一意に識別できる名前を入力します。
  4. [タイプ] リストで、[リモート高速ログ] を選択します。
  5. [プール名] リストで、BIG-IP システムがログ メッセージを送信するリモート ログ サーバーのプールを選択します。
  6. [プロトコル] リストで、高速ロギング プール メンバーで使用されるプロトコルを選択します。
  7. [Finished] をクリックします。

フォーマットされたリモートの高速ログの宛先を作成する

  1. [メイン] タブで、[システム] > [ログ] > [構成] > [ログの宛先] を選択します。
  2. 表示された [ログの保存先] ウィンドウで、[作成] をクリックします。
  3. [名前] フィールドに、この宛先を一意に識別できる名前を入力します。
  4. [タイプ] リストで、形式設定されたロギング先として [リモート syslog] を選択します。これで、フォーマットされたテキスト文字列をログサーバーに送信するように BIG-IP システムが構成されました。
  5. [タイプ] リストで、ログの形式を選択します。
  6. [転送先] タブで [高速ログの宛先] リストを選択し、BIG-IP システムがログ メッセージを送信するリモート syslog サーバーのプールを指す宛先を選択します。
  7. [Finished] をクリックします。

パブリッシャーを作成する

  1. [メイン] タブで、[システム] > [ログ] > [構成] > [ログ パブリッシャー] を選択します。
  2. 表示された [ログ パブリッシャー] ウィンドウで、[作成] をクリックします。
  3. [名前] フィールドに、パブリッシャーを一意に識別できる名前を入力します。
  4. [ログ パブリッシャー] リストで、使用可能なリストから、前に作成した宛先を選択します。
  5. 宛先を選択したリストに移動するには、[<< 移動] をクリックします。
  6. フォーマットされた宛先を使用している場合は、ログサーバーに一致する新しく作成された宛先(リモート syslogSplunkArcSight など)を選択します。
  7. [Finished] をクリックします。

カスタム DNS ロギング プロファイルを作成する

  1. [メイン] タブで、[DNS] > [配信] > [プロファイル] > [その他] [DNS ロギング] または [ローカル トラフィック] > [プロファイル] > [その他] > [DNS ロギング] を選択します。
  2. 表示された [DNS ロギング プロファイルのリスト] ウィンドウで、[作成] をクリックします。
  3. [名前] フィールドに、プロファイルの一意の名前を入力します。
  4. [ログ パブリッシャー] リストで、BIG-IP システムが DNS ログエントリを送信する宛先を選択します。
  5. BIG-IP システムが必要な場合:
    • すべての DNS クエリをロギングするには、[クエリをロギング] 設定で、有効チェックボックスがオンになっていることを確認します。
    • すべての DNS レスポンスをログに記録するには、[レスポンスをログに記録] 設定で有効チェックボックスをオンにします。
    • クライアントから送信されたクエリ ID をログ メッセージに含めるには、[クエリ ID を含める] 設定で有効チェックボックスをオンにします。
  6. [Finished] をクリックします。

リスナーに DNS ロギング プロファイルを追加する

  1. [Main] タブで、[DNS] > [Delivery] > [Listeners] > [DNS listener] を選択します。
  2. [Service] セクションの [DNS profile] リストで、前に構成した DNS プロファイルを選択します。
  3. [更新] をクリックします。

F5 BIG-IP APM ログを取り込むように Google Security Operations フォワーダーを構成する

  1. [SIEM 設定] > [転送元] に移動します。
  2. [新しいフォワーダーの追加] をクリックします。
  3. [フォワーダー名] フィールドに、フォワーダーの一意の名前を入力します。
  4. [送信] をクリックします。フォワーダーが追加され、[コレクタの構成を追加する] ウィンドウが表示されます。
  5. [コレクタ名] フィールドに名前を入力します。
  6. [ログタイプ] として [F5 BIGIP Access Policy Manager] を選択します。
  7. [Collector type] として [Syslog] を選択します。
  8. 次の必須入力パラメータを構成します。
    • プロトコル: プロトコルを指定します。
    • アドレス: コレクタが存在し、Syslog データのアドレスが設定されているターゲット IP アドレスまたはホスト名を指定します。
    • ポート: コレクタが存在し、Syslog データをリッスンするターゲット ポートを指定します。
  9. [送信] をクリックします。

Google Security Operations フォワーダーの詳細については、Google Security Operations UI でフォワーダー構成を管理するをご覧ください。

フォワーダーの作成時に問題が発生した場合は、Google Security Operations サポートにお問い合わせください。

フィールド マッピング リファレンス

この F5 BIG-IP APM パーサーは、syslog メッセージからフィールドを抽出し、アプリケーション ソース(tmsh、tmm、apmd、httpd など)に基づいて分類します。次に、抽出されたフィールドを UDM にマッピングし、さまざまなログ形式を処理して、重大度、ロケーション、ユーザー情報などのメタデータでデータを拡充します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
アプリケーション principal.application この値は、grok フィルタによって抽出された application フィールドから取得されます。
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 フィールドから取得されます。role フィールドに「admin」(大文字と小文字を区別しない)が含まれている場合、値は「ADMINISTRATOR」に設定されます。
重要度 security_result.severity_details syslog メッセージの元の値がここに保存されます。この値は、条件付きロジックを使用して severity フィールドから導出されます。
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 フィルタによって抽出された status フィールドから取得されます。
タイムスタンプ metadata.event_timestamp、timestamp 値は、grok フィルタによって抽出された timestamp フィールドから取得され、タイムスタンプ オブジェクトに解析されます。最上位の event オブジェクトの timestamp フィールドにもこの値が設定されます。
ユーザー principal.user.userid 値は、grok フィルタによって抽出された user フィールドから取得されます。このフィールドから「id\" または「ID\" 接頭辞が削除されます。値は、他のフィールドの存在に基づいて導出されます。
user が存在する場合: USER_UNCATEGORIZED
source_ipdestination_ip が存在する場合: NETWORK_CONNECTION
principal_ip または principal_hostname が存在する場合: STATUS_UPDATE
それ以外の場合: GENERIC_EVENT(「BIGIP_APM」にハードコードされています)。「F5」にハードコードされています。result フィールドが「failed」の場合、値は「BLOCK」に設定されます。

変更点

2023-06-06

  • 新しく作成されたパーサー。