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 のプロフェッショナルから回答を得ることができます。