F5 AFM のログを収集する
このドキュメントでは、Bindplane を使用して F5 Advanced Firewall Management ログを Google Security Operations に取り込む方法について説明します。パーサーは、SYSLOG と CSV のいずれかまたは CSV 形式のログを Unified Data Model(UDM)に変換します。まず、SYSLOG 形式に固有の grok パターンを使用してログメッセージの解析を試み、失敗した場合は CSV ファイルとして処理し、フィールドを抽出して UDM 構造にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または
systemd
を使用する Linux ホスト - プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- F5 BIG-IP と F5 Advanced Firewall Management への特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane Agent を構成する
- 構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:5145" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'F5_AFM' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際のお客様 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、サービス コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
F5 BIG-IP Advanced Firewall Manager を有効にする
- BIG-IP アプライアンスの管理コンソールにログインします。
- [システム > ライセンス] に移動します。
- Advanced Firewall Manager のライセンスが付与され、有効になっていることを確認します。
- 高度なファイアウォール マネージャーを有効にするには、[システム> リソース> プロビジョニング] に移動します。
- [プロビジョニング列] のチェックボックスをオンにして、リストから [名目] を選択します。
- [送信] をクリックします。
F5 AFM でロギング プールを構成する
- [Local Traffic> Pools] に移動します。
- [作成] をクリックします。
- 次の構成の詳細を指定します。
- 名前: ロギング プールの名前を入力します(例: logging_pool)。
- ヘルスモニター: [使用可能] リストで [TCP] を選択し、[<<] をクリックします。
- [リソース] タブで、[ノード名] リストから、前に作成した ロギング プールを選択します。
- [アドレス] フィールドに、Bindplane エージェントの IP アドレスを入力します。
- [サービスポート] フィールドに、Bindplane エージェントで定義した
5145
またはその他のポートを入力します。 - [追加] をクリックします。
- [完了] をクリックします。
F5 AFM でフォーマットされたログの宛先を構成する
- [システム> ログ> 設定> ログの宛先] に移動します。
- [作成] をクリックします。
- 次の構成の詳細を指定します。
- 名前: ロギング形式の宛先の名前を入力します(例:
Logging_Format_Destination
)。 - 説明: 説明を入力します。
- Type: [Remote Syslog] を選択します。
- Syslog 形式: [Syslog] を選択します。
- 高速ログの宛先: 高速ロギングの宛先(
Logging_HSL_Destination
など)を選択します。
- 名前: ロギング形式の宛先の名前を入力します(例:
- [Finished] をクリックします。
F5 AFM でログ パブリッシャーを構成する
- [システム> ログ> 設定> ログ パブリッシャー] に移動します。
- [作成] をクリックします。
- 次の構成の詳細を指定します。
- 名前: パブリッシャーの名前を入力します(例:
Log_Publisher
)。 - 説明: 説明を入力します。
- 送信先: F5 AFM でロギング プールを構成するの手順で作成したログの送信先名を選択し、[<<] をクリックして、[選択済み] リストに項目を追加します。
- 名前: パブリッシャーの名前を入力します(例:
F5 AFM でロギング プロファイルを構成する
- [セキュリティ> イベントログ> ロギング プロファイル] に移動します。
- [作成] をクリックします。
- 次の構成の詳細を指定します。
- 名前: ログ プロファイルの名前を入力します(例: Logging_Profile)。
- ネットワーク ファイアウォール: [有効] チェックボックスをオンにします。
- パブリッシャー: 以前に構成したログパブリッシャー(
Log_Publisher
など)を選択します。 - ログルールの照合: [許可、ドロップ、拒否] チェックボックスをオンにします。
- IP エラーをログに記録: [有効] チェックボックスをオンにします。
- TCP エラーをログに記録: [有効] チェックボックスをオンにします。
- TCP イベントをログに記録: [有効] チェックボックスをオンにします。
- ストレージ形式: [フィールド リスト] を選択します。
- 区切り文字: イベントの区切り文字として
,
(カンマ)を入力します。 - Storage Options: [Available Items] リストですべてのオプションを選択し、[<<] をクリックします。
- [IP インテリジェンス] タブで、構成したログ パブリッシャー(
Log_Publisher
など)を選択します。
- [Finished] をクリックします。
F5 AFM で仮想サーバー プロファイル関連付けを構成する
- [Local Traffic] > [Virtual Servers] に移動します。
- 変更する仮想サーバーを選択します。
- [セキュリティ] タブ > [ポリシー] に移動します。
- [ログ プロファイル] リストから [有効] を選択します。
- [Profile] フィールドで [Logging_Profile] を選択し、[<<] をクリックします。
- [更新] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
acl_policy_name | security_result.detection_fields.acl_policy_name | ログ形式が SYSLOG の場合は column22 の値、それ以外の場合は column13 の値 |
acl_policy_type | security_result.detection_fields.acl_policy_type | ログ形式が SYSLOG の場合は column21 の値、それ以外の場合は column18 の値 |
acl_rule_name | security_result.rule_name | ログ形式が SYSLOG の場合は column23 の値、それ以外の場合は column11 の値 |
acl_rule_uuid | security_result.rule_id | Grok パターンの acl_rule_uuid フィールドの値 |
アクション | security_result.action | column25 の値が Drop 、Reject 、Block のいずれかの場合、BLOCK。それ以外で、column25 の値が Accept 、Accept decisively 、Established 、Allow のいずれかの場合、ALLOW |
attackID | security_result.detection_fields.attackID | ログ形式が src_ip のない CSV の場合の column12 の値 |
bigip_hostname | intermediary.hostname | ログ形式が SYSLOG の場合は column2 の値、それ以外の場合は column3 の値 |
bigip_ip | intermediary.ip | ログ形式が SYSLOG の場合は column2 の値、それ以外の場合は column1 の値 |
context_name | additional.fields.context_name.string_value | ログ形式が SYSLOG の場合は column4 の値、src_ip がある場合は column10 の値、それ以外の場合は column5 の値 |
context_type | additional.fields.context_type.string_value | ログ形式が SYSLOG の場合は column3 の値、src_ip がある場合は column4 の値、それ以外の場合は column4 の値 |
dest_fqdn | additional.fields.dest_fqdn.string_value | ログ形式が SYSLOG の場合は column7 の値、それ以外の場合は column13 の値 |
dest_geo | additional.fields.dest_geo.string_value | column14 の値 |
dest_ip | target.asset.ip、target.ip | ログ形式が SYSLOG の場合は column8 の値、src_ip がある場合は column6 の値、それ以外の場合は column6 の値 |
dest_port | target.port | ログ形式が SYSLOG の場合は column10 の値、src_ip がある場合は column8 の値、それ以外の場合は column8 の値 |
drop_reason | security_result.summary | ログ形式が SYSLOG の場合は column26 の値、それ以外の場合は column19 の値 |
eventId | additional.fields.eventId.string_value | grok パターンでキャプチャされた値 |
flow_id | additional.fields.flow_id.string_value | ログ形式が SYSLOG の場合は column29 の値、それ以外の場合は column17 の値 |
loglevel | security_result.severity | grok パターンの loglevel フィールドの値が warning 、debug 、notice のいずれかの場合、MEDIUM。値が info または informational の場合、INFORMATIONAL。値が err または error の場合、HIGH。値が alert 、crit 、emer のいずれかの場合、CRITICAL |
packetsReceived | network.received_packets | ログ形式が src_ip のない CSV の場合の column15 の値 |
プロセス | target.application | Grok パターンのプロセス フィールドの値 |
protocol_number_src | network.ip_protocol | ログ形式が SYSLOG の場合は column12 の値、それ以外の場合は ip_protocol_out 変数から抽出された値 |
route_domain | additional.fields.route_domain.string_value | ログ形式が SYSLOG の場合は column13 の値、それ以外の場合は column9 の値 |
source_fqdn | additional.fields.source_fqdn.string_value | ログ形式が SYSLOG の場合は column5 の値、それ以外の場合は column7 の値 |
src_geo | additional.fields.src_geo.string_value | column8 の値 |
src_ip | principal.asset.ip、principal.ip | ログ形式が SYSLOG の場合は column6 の値、ログ形式が src_ip のない CSV の場合は column9 の値、それ以外の場合は column5 の値 |
src_port | principal.port | ログ形式が SYSLOG の場合は column9 の値、ログ形式が src_ip のない CSV の場合は column7 の値、それ以外の場合は column7 の値 |
ts | metadata.event_timestamp | Grok パターンの ts フィールドの値 |
vlan | additional.fields.vlan.string_value | ログ形式が SYSLOG の場合は column11 の値、それ以外の場合は column21 の値 |
metadata.event_type | src_ip と dest_ip が存在する場合は NETWORK_CONNECTION、src_ip のみ存在する場合は STATUS_UPDATE、それ以外の場合は GENERIC_EVENT | |
metadata.log_type | F5_AFM | |
metadata.product_name | 高度なファイアウォール管理 | |
metadata.vendor_name | F5 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。