F5 ASM ログを収集する
このドキュメントでは、Bindplane を使用して F5 Application Security Manager(ASM)ログを Google Security Operations に取り込む方法について説明します。パーサーは、さまざまな F5 ASM ログ形式(syslog、CSV、CEF、Splunk など)を処理し、統合データモデル(UDM)に正規化します。Grok パターンとキーバリュー抽出を使用してフィールドを解析し、違反の詳細に XML フィルタリングを使用し、イベントの分類と重大度のマッピングに条件付きロジックを使用し、抽出されたフィールドを UDM スキーマに統合します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または systemdを使用する Linux ホスト
- プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- F5 ASM への特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
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 エージェントを構成する
- 構成ファイルにアクセスします。
- config.yamlファイルを見つけます。通常、Linux では- /etc/bindplane-agent/ディレクトリに、Windows ではインストール ディレクトリにあります。
- テキスト エディタ(nano、vi、メモ帳など)を使用してファイルを開きます。
 
- config.yamlファイルを次のように編集します。- receivers: udplog: # Replace the port and IP address as required listen_address: `0.0.0.0:514` 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_ASM' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog 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 ASM で Syslog を構成する
- 次のコマンドを入力して、tmsh インスタンスにログインします。 - tmsh
- 次のコマンドを使用して syslog 構成を編集します。 - edit /sys syslog all-properties
- Syslog 構成が - viテキスト エディタで開き、次の例のようになります。- modify syslog { auth-priv-from notice auth-priv-to emerg cron-from warning cron-to emerg daemon-from notice daemon-to emerg description none include none iso-date disabled kern-from notice kern-to emerg mail-from notice mail-to emerg messages-from notice messages-to warning remote-servers none user-log-from notice user-log-to emerg }
- include noneの行を次の syslog フィルタに置き換えます。- include ` filter f_audit{ match(AUDIT); }; destination d_syslog_server { udp(\`<bindplane-ip>\` port (<bindplane-port>)); }; log { source(s_syslog_pipe); filter(f_audit); destination(d_syslog_server); }; `
- <bindplane-ip>と- <bindplane-port>は、Bindplane エージェント用に構成された実際の IP アドレスとポート番号に置き換えます。
- 次のキーシーケンスを入力して - viを終了します。- :wq!
- 次のプロンプトで、 - yと入力して、ファイルへの変更を保存します。- Save changes? (y/n/e)
- 次のコマンドを入力して、構成を保存します。 - save /sys config
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック | 
|---|---|---|
| act | security_result.action | actがblockedの場合、BLOCK にマッピングされます。actがpassedまたはlegalの場合、ALLOW にマッピングされます。actにalertedが含まれている場合は、QUARANTINE にマッピングされます。それ以外の場合、Splunk 形式ではデフォルトで ALLOW になります。 | 
| app | network.application_protocol | 未加工ログに存在する場合は、HTTPS に直接マッピングされます。 | 
| attack_type | security_result.category_details、metadata.description | 他のフィールドと組み合わせて security_result.categoryを決定するために使用されます。他の説明がない場合は、イベントの説明になります。Splunk 形式のログの場合、violationsが空の場合にカテゴリと概要を特定するために使用されます。 | 
| client_ip | principal.ip、principal.asset.ip | プリンシパル IP に直接マッピングされます。 | 
| cn1 | network.http.response_code | HTTP レスポンス コードに直接マッピングされます。 | 
| cn2 | security_result.severity_details | セキュリティ結果の重大度の詳細に直接マッピングされます。 response_codeとともに使用して、イベントがアラートかどうかを判断します。 | 
| column1 | principal.ip、principal.asset.ip | 特定の CSV 形式のログのプリンシパル IP にマッピングされます。 | 
| column2 | target.port | 特定の CSV 形式のログのターゲット ポートにマッピングします。 | 
| column3 | target.ip、target.asset.ip | 特定の CSV 形式のログのターゲット IP にマッピングします。 | 
| column4 | security_result.severity | 特定の CSV 形式のログのセキュリティ結果の重大度にマッピングします。値 Information、Informational、0、4は INFORMATIONAL にマッピングされます。Warning、1、3は MEDIUM にマッピングされます。Error、2は ERROR にマッピングされます。Critical、CRITICAL、criticalは CRITICAL にマッピングされます。 | 
| column7 | security_result.detection_fields、network.http.response_code | XML データが含まれます。 request-violations内のviol_nameが抽出され、キーRequest Violation Name_indexを持つ検出フィールドとして追加されます。response_violations内のviol_nameが抽出され、キーResponse Violation Name_indexを持つ検出フィールドとして追加されます。response_violations内のresponse_codeはnetwork.http.response_codeにマッピングされます。 | 
| column8 | security_result.rule_name | 特定の CSV 形式のログのセキュリティ結果ルール名にマッピングします。 | 
| cs1 | security_result.rule_name | セキュリティ結果のルール名に直接マッピングされます。 | 
| cs2 | security_result.summary | セキュリティ結果の概要に直接マッピングされます。 | 
| cs5 | principal.ip、principal.asset.ip、additional.fields | cs5に JNDI LDAP URL が含まれている場合は、キーJNDI_LDAP_URLを持つ追加フィールドとして追加されます。それ以外の場合、カンマ区切りの IP が含まれていると、principal_ipと異なる IP が追加のプリンシパル IP として追加されます。 | 
| cs6 | principal.location.country_or_region | 主たる事業所の国または地域に直接マッピングされます。 | 
| data | network.session_id、network.sent_bytes、network.tls.version | 存在する場合は、JSON として解析して sessionid、bits(sent_bytesにマッピング)、versionを抽出します。 | 
| date_time | metadata.event_timestamp | 解析して適切な形式に変換した後、イベントのタイムスタンプに直接マッピングされます。 | 
| dest_ip | target.ip、target.asset.ip | ターゲット IP に直接マッピングされます。 | 
| dest_port | target.port | ターゲット ポートに直接マッピングされます。 | 
| dhost | target.hostname | ターゲット ホスト名に直接マッピングされます。 | 
| dpt | target.port | ターゲット ポートに直接マッピングされます。 | 
| dst | target.ip | ターゲット IP に直接マッピングされます。 | 
| dvc | intermediary.ip | 仲介 IP に直接マッピングされます。 | 
| dvchost | target.hostname、intermediary.hostname | ターゲット ホスト名と仲介ホスト名に直接マッピングされます。 | 
| errdefs_msgno | additional.fields | キー errdefs_msgnoの追加フィールドとして追加されます。 | 
| externalId | additional.fields | キー Support_Idの追加フィールドとして追加されます。 | 
| f5_host | target.hostname、intermediary.hostname | ターゲット ホスト名と仲介ホスト名に直接マッピングされます。 | 
| geo_info | principal.location.country_or_region、security_result.detection_fields | 主なロケーションの国または地域にマッピングされます。また、キー geo_infoを持つ検出フィールドとしても追加されました。 | 
| host | target.hostname | ターゲット ホスト名に直接マッピングされます。 | 
| ids | additional.fields | サポート ID のカンマ区切りのリストとして解析されます。各 ID は、キー supportidを持つリスト値の追加フィールドに追加されます。 | 
| ip_addr_intelli | security_result.detection_fields | キー ip_addr_intelliを持つ検出フィールドとして追加されます。 | 
| ip_client | principal.ip | プリンシパル IP に直接マッピングされます。 | 
| ip_route_domain | principal.ip、principal.asset.ip | IP 部分が抽出され、プリンシパル IP にマッピングされます。 | 
| irule | security_result.rule_name | セキュリティ結果のルール名に直接マッピングされます。 | 
| irule-version | security_result.rule_version | セキュリティ結果ルール バージョンに直接マッピングされます。 | 
| level | security_result.severity、security_result.severity_details | セキュリティ結果の重大度を判断するために使用されます。 errorまたはwarningは HIGH にマッピングされます。noticeは MEDIUM にマッピングされます。informationまたはinfoは LOW にマッピングされます。未加工の値もseverity_detailsにマッピングされます。 | 
| logtime | metadata.event_timestamp | 解析後にイベント タイムスタンプに直接マッピングされます。 | 
| management_ip_address、management_ip_address_2 | intermediary.ip | 仲介 IP に直接マッピングされます。 | 
| method | network.http.method | HTTP メソッドに直接マッピングされます。 | 
| msg | security_result.summary、metadata.description | 一部のログ形式のセキュリティ結果の概要に直接マッピングされます。他の説明がない場合は、イベントの説明になります。 | 
| policy_name | security_result.about.resource.name、security_result.rule_name | セキュリティ結果のリソース名またはルール名に直接マッピングされます。 | 
| process | target.application | ターゲット アプリケーションに直接マッピングされます。 | 
| process_id | principal.process.pid | プリンシパル プロセス ID に直接マッピングされます。 | 
| protocol | network.application_protocol、network.ip_protocol、app_protocol | ログ形式に応じて、アプリケーション プロトコルまたは IP プロトコルに直接マッピングされます。 | 
| proxy_id | security_result.rule_id | セキュリティ結果のルール ID に直接マッピングされます。 | 
| query_string | additional.fields | キー query_stringの追加フィールドとして追加されます。 | 
| referrer | network.http.referral_url | HTTP 参照 URL に直接マッピングされます。 | 
| req_method | network.http.method | HTTP メソッドに直接マッピングされます。 | 
| req_status | security_result.action、security_result.action_details、security_result.detection_fields | blockedの場合は、security_result.actionを BLOCK にマッピングします。passedまたはlegalの場合、ALLOW にマッピングされます。alertedが含まれている場合は、QUARANTINE にマッピングされます。未加工の値もaction_detailsにマッピングされ、キーreq_statusを持つ検出フィールドとして追加されます。 | 
| request | target.url | ターゲット URL に直接マッピングされます。 | 
| requestMethod | network.http.method | HTTP メソッドに直接マッピングされます。 | 
| resp | security_result.detection_fields | キー respを持つ検出フィールドとして追加されます。 | 
| resp_code | network.http.response_code | HTTP レスポンス コードに直接マッピングされます。 | 
| response | security_result.summary | セキュリティ結果の概要に直接マッピングされます。 | 
| response_code | network.http.response_code | HTTP レスポンス コードに直接マッピングされます。 | 
| route_domain | additional.fields | キー route_domainの追加フィールドとして追加されます。 | 
| rt | metadata.event_timestamp | 解析後にイベント タイムスタンプに直接マッピングされます。 | 
| sev | security_result.severity、security_result.severity_details | セキュリティ結果の重大度を判断するために使用されます。 ERRORは ERROR にマッピングされます。未加工の値もseverity_detailsにマッピングされます。 | 
| severity | security_result.severity、security_result.severity_details | セキュリティ結果の重大度を判断するために使用されます。 Informationalは LOW に、Errorまたはwarningは HIGH に、criticalは CRITICAL に、noticeは MEDIUM に、informationまたはinfoは LOW にマッピングされます。未加工の値もseverity_detailsにマッピングされます。 | 
| sig_ids | security_result.rule_id | セキュリティ結果のルール ID に直接マッピングされます。 | 
| sig_names | security_result.rule_name | セキュリティ結果のルール名に直接マッピングされます。 | 
| snat_ip | principal.nat_ip | プリンシパル NAT IP に直接マッピングされます。 | 
| snat_port | principal.nat_port | プリンシパル NAT ポートに直接マッピングされます。 | 
| src | principal.ip、principal.asset.ip | プリンシパル IP に直接マッピングされます。 | 
| spt | principal.port | プリンシパル ポートに直接マッピングされます。 | 
| sub_violates | security_result.about.resource.attribute.labels | キー Sub Violationsのラベルとしてセキュリティ結果リソース属性に追加されます。 | 
| sub_violations | security_result.about.resource.attribute.labels | キー Sub Violationsのラベルとしてセキュリティ結果リソース属性に追加されます。 | 
| summary | security_result.summary | セキュリティ結果の概要に直接マッピングされます。 | 
| support_id | metadata.product_log_id | support_id -が接頭辞として付加され、プロダクトログ ID にマッピングされます。 | 
| suid | network.session_id | ネットワーク セッション ID に直接マッピングされます。 | 
| suser | principal.user.userid | プリンシパル ユーザー ID に直接マッピングされます。 | 
| timestamp | metadata.event_timestamp | 解析して適切な形式に変換した後、イベントのタイムスタンプに直接マッピングされます。 | 
| unit_host | principal.hostname、principal.asset.hostname | プリンシパル ホスト名に直接マッピングされます。 | 
| uri | principal.url | プリンシパル URL に直接マッピングされます。 | 
| user_id | principal.user.userid | プリンシパル ユーザー ID に直接マッピングされます。 | 
| user_name | principal.user.user_display_name | プリンシパル ユーザーの表示名に直接マッピングされます。 | 
| username | principal.user.userid | プリンシパル ユーザー ID に直接マッピングされます。 | 
| useragent | network.http.user_agent、network.http.parsed_user_agent | HTTP ユーザー エージェントに直接マッピングされます。解析され、解析されたユーザー エージェントにマッピングされます。 | 
| virtualserver | network.tls.client.server_name | TLS クライアント サーバー名に直接マッピングされます。 | 
| violate_details | security_result.detection_fields、network.http.response_code | XML データが含まれます。 request-violations内のviol_nameが抽出され、キーRequest Violation Name_indexを持つ検出フィールドとして追加されます。response_violations内のviol_nameが抽出され、キーResponse Violation Name_indexを持つ検出フィールドとして追加されます。response_violations内のresponse_codeはnetwork.http.response_codeにマッピングされます。 | 
| violate_rate | security_result.detection_fields | キー violate_rateを持つ検出フィールドとして追加されます。 | 
| violation_rating | security_result.about.resource.attribute.labels | キー Violations Ratingのラベルとしてセキュリティ結果リソース属性に追加されます。 | 
| violations | security_result.description | セキュリティ結果の説明に直接マッピングされます。Splunk 形式のログの場合、概要が存在するかどうかを判断するために使用されます。 | 
| virus_name | security_result.threat_name | セキュリティ結果の脅威名に直接マッピングされます。 | 
| vs_name | network.tls.client.server_name | TLS クライアント サーバー名に直接マッピングされます。 | 
| websocket_direction | network.direction | clientToServerの場合は、INBOUND にマッピングされます。ServerToclientの場合は、OUTBOUND にマッピングされます。 | 
| websocket_message_type | security_result.detection_fields | キー WebsocketMessageTypeを持つ検出フィールドとして追加されます。 | 
| x_fwd_hdr_val | principal.ip、principal.asset.ip | プリンシパル IP に直接マッピングされます。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。