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 を構成する
- 管理者の認証情報を使用して BIG-IP 構成ユーティリティ ポータルにログインします。
- [メイン] > [システム] > [ログ] > [構成] > [リモート ロギング] を選択します。
[プロパティ] セクションで、次の操作を行います。
- [リモート IP] フィールドに、Google Security Operations 転送元の IP アドレスを入力します。
- [リモート ポート] フィールドに、大きなポート番号を入力します。
[追加] をクリックします。
[更新] をクリックします。
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 を構成する手順は次のとおりです。
- リモート ロギング サーバーのプールを作成する。
- リモートの高速ログの宛先を作成する。
- フォーマットされたリモートの高速ログの宛先を作成する。
- パブリッシャーを作成します。
- カスタム DNS ロギング プロファイルを作成する。
- リスナーに DNS ロギング プロファイルを追加する。
リモート ロギング サーバーのプールを作成する
- [Main] タブで、[DNS] > [Delivery] > [Load balancing] > [Pools or local traffic] > [Pools] を選択します。
- 表示された [プールリスト] ウィンドウで、[作成] をクリックします。
- 表示された [新しいプール] ウィンドウの [名前] フィールドに、プールの一意の名前を入力します。
- [新しいメンバー] セクションで、プールに含めるリモート ロギング サーバーごとに IP アドレスを追加します。
- [アドレス] フィールドに Google Security Operations 転送元の IP アドレスを入力するか、ノードリストからノードアドレスを選択します。
- [サービスポート] フィールドにサービス番号を入力するか、リストからサービス名を選択します。正しいリモート ロギング ポートが構成されていることを確認します。
- [追加]、[完了] の順にクリックします。
リモートの高速ログの宛先を作成する
- [Main] タブで、[System] > [Logs] > [Configuration] > [Log destinations] を選択します。
- 表示された [ログの保存先] ウィンドウで、[作成] をクリックします。
- [名前] フィールドに、この宛先を一意に識別できる名前を入力します。
- [タイプ] リストで、[リモート高速ログ] を選択します。
- [プール名] リストで、BIG-IP システムがログ メッセージを送信するリモート ログ サーバーのプールを選択します。
- [プロトコル] リストで、高速ロギング プール メンバーで使用されるプロトコルを選択します。
- [Finished] をクリックします。
フォーマットされたリモートの高速ログの宛先を作成する
- [メイン] タブで、[システム] > [ログ] > [構成] > [ログの宛先] を選択します。
- 表示された [ログの保存先] ウィンドウで、[作成] をクリックします。
- [名前] フィールドに、この宛先を一意に識別できる名前を入力します。
- [タイプ] リストで、形式設定されたロギング先として [リモート syslog] を選択します。これで、フォーマットされたテキスト文字列をログサーバーに送信するように BIG-IP システムが構成されました。
- [タイプ] リストで、ログの形式を選択します。
- [転送先] タブで [高速ログの宛先] リストを選択し、BIG-IP システムがログ メッセージを送信するリモート syslog サーバーのプールを指す宛先を選択します。
- [Finished] をクリックします。
パブリッシャーを作成する
- [メイン] タブで、[システム] > [ログ] > [構成] > [ログ パブリッシャー] を選択します。
- 表示された [ログ パブリッシャー] ウィンドウで、[作成] をクリックします。
- [名前] フィールドに、パブリッシャーを一意に識別できる名前を入力します。
- [ログ パブリッシャー] リストで、使用可能なリストから、前に作成した宛先を選択します。
- 宛先を選択したリストに移動するには、[<< 移動] をクリックします。
- フォーマットされた宛先を使用している場合は、ログサーバーに一致する新しく作成された宛先(リモート syslog、Splunk、ArcSight など)を選択します。
- [Finished] をクリックします。
カスタム DNS ロギング プロファイルを作成する
- [メイン] タブで、[DNS] > [配信] > [プロファイル] > [その他] [DNS ロギング] または [ローカル トラフィック] > [プロファイル] > [その他] > [DNS ロギング] を選択します。
- 表示された [DNS ロギング プロファイルのリスト] ウィンドウで、[作成] をクリックします。
- [名前] フィールドに、プロファイルの一意の名前を入力します。
- [ログ パブリッシャー] リストで、BIG-IP システムが DNS ログエントリを送信する宛先を選択します。
- BIG-IP システムが必要な場合:
- すべての DNS クエリをロギングするには、[クエリをロギング] 設定で、有効チェックボックスがオンになっていることを確認します。
- すべての DNS レスポンスをログに記録するには、[レスポンスをログに記録] 設定で有効チェックボックスをオンにします。
- クライアントから送信されたクエリ ID をログ メッセージに含めるには、[クエリ ID を含める] 設定で有効チェックボックスをオンにします。
- [Finished] をクリックします。
リスナーに DNS ロギング プロファイルを追加する
- [Main] タブで、[DNS] > [Delivery] > [Listeners] > [DNS listener] を選択します。
- [Service] セクションの [DNS profile] リストで、前に構成した DNS プロファイルを選択します。
- [更新] をクリックします。
F5 BIG-IP APM ログを取り込むように Google Security Operations フォワーダーを構成する
- [SIEM 設定] > [転送元] に移動します。
- [新しいフォワーダーの追加] をクリックします。
- [フォワーダー名] フィールドに、フォワーダーの一意の名前を入力します。
- [送信] をクリックします。フォワーダーが追加され、[コレクタの構成を追加する] ウィンドウが表示されます。
- [コレクタ名] フィールドに名前を入力します。
- [ログタイプ] として [F5 BIGIP Access Policy Manager] を選択します。
- [Collector type] として [Syslog] を選択します。
- 次の必須入力パラメータを構成します。
- プロトコル: プロトコルを指定します。
- アドレス: コレクタが存在し、Syslog データのアドレスが設定されているターゲット IP アドレスまたはホスト名を指定します。
- ポート: コレクタが存在し、Syslog データをリッスンするターゲット ポートを指定します。
- [送信] をクリックします。
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_ip と destination_ip が存在する場合: NETWORK_CONNECTION principal_ip または principal_hostname が存在する場合: STATUS_UPDATE それ以外の場合: GENERIC_EVENT(「BIGIP_APM」にハードコードされています)。「F5」にハードコードされています。 result フィールドが「failed」の場合、値は「BLOCK」に設定されます。 |
変更点
2023-06-06
- 新しく作成されたパーサー。