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 ロギング プロファイルを追加します。
リモート ロギング サーバーのプールを作成する
- [メイン] タブで、[DNS] > [送信] > [ロード バランシング] > [プールまたはローカル トラフィック] > [プール] を選択します。
- 表示された [プールリスト] ウィンドウで、[作成] をクリックします。
- 表示された [新しいプール] ウィンドウの [名前] フィールドに、プールの一意の名前を入力します。
- [新規メンバー] セクションで、プールに含めるリモート ロギング サーバーの IP アドレスを追加します。
- [アドレス] フィールドに Google Security Operations フォワーダーの IP アドレスを入力するか、ノードリストからノードアドレスを選択します。
- [サービスポート] フィールドにサービス番号を入力するか、リストからサービス名を選択します。正しいリモート ロギング ポートが構成されていることを確認します。
 
- [追加] をクリックし、[完了] をクリックします。
リモートの高速ログの宛先を作成する
- [メイン] タブで、[システム] > [ログ] > [設定] > [ログの宛先] を選択します。
- 表示された [ログの宛先] ウィンドウで、[作成] をクリックします。
- [名前] フィールドに、この宛先の一意で識別可能な名前を入力します。
- [タイプ] リストで、[リモート高速ログ] を選択します。
- [プール名] リストで、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 ロギング プロファイルを追加する
- [メイン] タブで、[DNS] > [送信] > [リスナー] > [DNS リスナー] を選択します。
- [サービス] セクションの [DNS プロファイル] リストで、以前に構成した DNS プロファイルを選択します。
- [更新] をクリックします。
F5 BIG-IP APM のログを取り込むように Google Security Operations フォワーダーを構成する
- [SIEM 設定] > [フォワーダー] に移動します。
- [新しいフォワーダーの追加] をクリックします。
- [フォワーダーの名前] フィールドに、フォワーダーの一意の名前を入力します。
- [送信] をクリックします。フォワーダーが追加され、[コレクタの構成を追加する] ウィンドウが表示されます。
- [コレクタ名] フィールドに名前を入力します。
- [ログタイプ] として [F5 BIGIP Access Policy Manager] を選択します。
- [コレクタ タイプ] として [Syslog] を選択します。
- 次の必須入力パラメータを構成します。
- Protocol: プロトコルを指定します。
- アドレス: コレクタが存在し、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フィールドから取得されます。 | 
| timestamp | metadata.event_timestamp, timestamp | 値は、grok フィルタによって抽出された timestampフィールドから取得され、タイムスタンプ オブジェクトに解析されます。最上位のeventオブジェクトのtimestampフィールドにもこの値が設定されます。 | 
| user | principal.user.userid | 値は、「id\"」または「ID\"」接頭辞を削除した後に、grok フィルタによって抽出された userフィールドから取得されます。値は、他のフィールドの有無に基づいて導出されます。userが存在する場合: USER_UNCATEGORIZED。source_ipとdestination_ipが存在する場合: NETWORK_CONNECTION。principal_ipまたはprincipal_hostnameが存在する場合: STATUS_UPDATE。それ以外の場合: GENERIC_EVENT(「BIGIP_APM」にハードコードされています)。「F5」にハードコードされます。 resultフィールドが「failed」の場合、値は「BLOCK」に設定されます。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。