FortiWeb WAF ログを収集する
このドキュメントでは、Google Security Operations フォワーダーを使用して FortiWeb ウェブ アプリケーション ファイアウォール(WAF)のログを収集する方法について説明します。
詳細については、Google Security Operations へのデータの取り込みの概要をご覧ください。
取り込みラベルによって、未加工のログデータを構造化 UDM 形式に正規化するパーサーが識別されます。このドキュメントの情報は、取り込みラベル FORTINET_FORTIWEB
が付加されたパーサーに適用されます。
FortiWeb WAF ログを構成する
Google Security Operations フォワーダーにログを送信するように FortiWeb WAF を構成するには、次の操作を行います。
Syslog ポリシーを作成する
- Fortinet FortiWeb コンソールにログインします。
- Fortinet FortiWeb コンソールで、[ログとレポート] > [ログポリシー] > [Syslog ポリシー] を選択します。
- [新規作成] をクリックします。
表示された [新しい Syslog ポリシー] ウィンドウで、次の操作を行います。
- [ポリシー名] フィールドに、構成で使用するポリシーの名前を指定します。
- [IP address] フィールドに、リモート syslog サーバーの IP アドレスまたはホスト名を指定します。
- [Port] フィールドに、syslog サーバーのポートを指定します。
- [CSV 形式を有効にする] チェックボックスがオンになっている場合はオフにします。
[OK] をクリックします。
syslog タイプとログレベルを有効にする
- Fortinet FortiWeb コンソールで、[ログとレポート] > [ログ構成] > [グローバル ログ設定] を選択します。
表示された [グローバル ログ設定] ウィンドウで、[Syslog] チェックボックスをオンにして、次の操作を行います。
- [Syslog ポリシー] リストで、前に作成した syslog ポリシーを選択します。
- [ログレベル] リストで、収集するログの最小重大度レベルを選択します。
- [施設] リストで、ログ施設を選択します。
[適用] をクリックします。
トリガーを作成する
- Fortinet FortiWeb コンソールで、[ログとレポート] > [ログポリシー] > [トリガー ポリシー] を選択します。
- [新規作成] をクリックします。
表示された [新しいトリガー ポリシー] ウィンドウで、次の操作を行います。
- [ポリシー名] フィールドに、構成で使用するポリシーの名前を指定します。
- [Syslog ポリシー] リストで、前に作成した syslog ポリシーを選択します。
[OK] をクリックします。
新しく作成したトリガーを使用して Syslog ポリシーを更新し、必要なすべてのイベントが Google Security Operations Syslog フォワーダーにログに記録されるようにします。
FortiWeb WAF ログを取り込むように Google Security Operations フォワーダーを構成する
- [SIEM 設定] > [転送元] に移動します。
- [新しいフォワーダーの追加] をクリックします。
- [フォワーダー名] フィールドに、フォワーダーの一意の名前を入力します。
- [送信] をクリックします。フォワーダーが追加され、[コレクタの構成を追加する] ウィンドウが表示されます。
- [コレクタ名] フィールドに名前を入力します。
- [Log type] として [Fortinet Web Application Firewall] を選択します。
- [Collector type] として [Syslog] を選択します。
- 次の必須入力パラメータを構成します。
- プロトコル: コレクタが syslog データをリッスンするために使用する接続プロトコルを指定します。
- アドレス: コレクタが存在し、syslog データをリッスンするターゲット IP アドレスまたはホスト名を指定します。
- ポート: コレクタが存在し、Syslog データをリッスンするターゲット ポートを指定します。
- [送信] をクリックします。
Google Security Operations フォワーダーの詳細については、Google Security Operations UI でフォワーダー構成を管理するをご覧ください。
フォワーダーの作成時に問題が発生した場合は、Google Security Operations サポートにお問い合わせください。
フィールド マッピング リファレンス
このパーサーは、FORTINET FORTIWEB からのログを Key-Value(KV)形式で処理し、UDM に変換します。CEF 形式と CEF 以外の形式の両方のログを処理し、フィールドを抽出して値を正規化し、ログ形式に基づいて適切な UDM フィールドにマッピングします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
action |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
action |
security_result.action_details |
action が「許可」または「承認」の場合、security_result.action_details は「ALLOW」に設定されます。action が「Denied」、「deny」、「block」、「Block」の場合、security_result.action_details は「BLOCK」に設定されます。 |
app |
network.application_protocol |
値は大文字に変換された後、直接マッピングされます。値が HTTPS、HTTP、DNS、DHCP、SMB のいずれかの場合のみ。 |
app_name |
additional.fields[].key |
キーが「appName」に設定されている。 |
app_name |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
backend_service |
additional.fields[].key |
キーが「backend_service」に設定されている。 |
backend_service |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
cat |
security_result.category_details |
値が直接マッピングされます。 |
client_level |
security_result.category |
client_level が「Malicious」の場合、security_result.category は「NETWORK_MALICIOUS」に設定されます。 |
cn1 |
additional.fields[].value.string_value |
threatWeight フィールドにマッピングされます。 |
cn1Label |
additional.fields[].key |
キーが cn1Label 値に設定されている。 |
cn2 |
additional.fields[].value.string_value |
長さフィールドにマッピングされます。 |
cn2Label |
additional.fields[].key |
キーが cn2Label 値に設定されている。 |
cn3 |
additional.fields[].value.string_value |
signatureID フィールドにマッピングされます。 |
cn3Label |
additional.fields[].key |
キーが cn3Label 値に設定されている。 |
cs1 |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
cs1Label |
additional.fields[].key |
キーが cs1Label 値に設定されている。 |
cs1 |
principal.user.product_object_id |
cs1Label が「userID」と一致する場合、値は直接マッピングされます(大文字と小文字は区別されません)。 |
cs2 |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
cs2Label |
additional.fields[].key |
キーが cs2Label 値に設定されている。 |
cs2 |
principal.user.userid |
cs2Label が「userName」(大文字と小文字は区別されません)と一致し、suid が空の場合、値は直接マッピングされます。 |
cs3 |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
cs3Label |
additional.fields[].key |
キーが cs3Label 値に設定されている。 |
cs3 |
metadata.severity |
cs3Label が「level」で、cs3 が空でない場合、値は直接マッピングされます。 |
cs4 |
additional.fields[].value.string_value |
subType フィールドにマッピングされます。 |
cs4Label |
additional.fields[].key |
キーが cs4Label 値に設定されています。 |
cs5 |
additional.fields[].value.string_value |
threatLevel フィールドにマッピングされました。 |
cs5Label |
additional.fields[].key |
キーが cs5Label 値に設定されている。 |
cs6 |
additional.fields[].value.string_value |
owaspTop10 フィールドにマッピングされます。 |
cs6Label |
additional.fields[].key |
キーが cs6Label 値に設定されている。 |
date |
metadata.event_timestamp.seconds |
time と組み合わせて解析され、エポック秒が生成されます。 |
dev_id |
principal.resource.id |
値が直接マッピングされます。 |
devname |
principal.resource.name |
値が直接マッピングされます。 |
device_event_class_id |
metadata.product_event_type |
CEF 解析で使用されます。 |
device_product |
metadata.product_name |
CEF の解析で使用されます。 |
device_vendor |
metadata.vendor_name |
CEF の解析で使用されます。 |
device_version |
metadata.product_version |
CEF 解析で使用されます。 |
dhost |
target.hostname |
値が直接マッピングされます。 |
dpt |
target.port |
値は直接マッピングされ、整数に変換されます。 |
dst |
target.ip |
値が直接マッピングされます。 |
dst_port |
target.port |
値は直接マッピングされ、整数に変換されます。 |
dstepid |
target.process.pid |
値が直接マッピングされます。 |
dsteuid |
target.user.userid |
値が直接マッピングされます。 |
event_name |
metadata.product_event_type |
CEF の解析で使用されます。 |
http_agent |
network.http.parsed_user_agent |
値はユーザー エージェント文字列として解析されます。 |
http_method |
network.http.method |
値が直接マッピングされます。 |
http_refer |
network.http.referral_url |
値が直接マッピングされます。 |
http_session_id |
network.session_id |
値が直接マッピングされます。 |
http_url |
target.url |
値が直接マッピングされます。 |
http_version |
metadata.product_version |
値が直接マッピングされます。 |
length |
additional.fields[].key |
キーが「length」に設定されている。 |
length |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
log_type |
metadata.log_type |
「FORTINET_FORTIWEB」にハードコードされています。 |
main_type |
additional.fields[].key |
キーが「mainType」に設定されている。 |
main_type |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
message |
さまざまなフィールド | grok フィルタと kv フィルタを使用して解析され、さまざまなフィールドが抽出されます。 |
ml_allow_method |
additional.fields[].key |
キーが「ml_allow_method」に設定されている。 |
ml_allow_method |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_arg_dbid |
additional.fields[].key |
キーが「ml_arg_dbid」に設定されている。 |
ml_arg_dbid |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_domain_index |
additional.fields[].key |
キーは「ml_domain_index」に設定されています。 |
ml_domain_index |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_log_arglen |
additional.fields[].key |
キーは「ml_log_arglen」に設定されています。 |
ml_log_arglen |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_log_hmm_probability |
additional.fields[].key |
キーは「ml_log_hmm_probability」に設定されています。 |
ml_log_hmm_probability |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_log_sample_arglen_mean |
additional.fields[].key |
キーは「ml_log_sample_arglen_mean」に設定されています。 |
ml_log_sample_arglen_mean |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_log_sample_prob_mean |
additional.fields[].key |
キーは「ml_log_sample_prob_mean」に設定されています。 |
ml_log_sample_prob_mean |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_svm_accuracy |
additional.fields[].key |
キーは「ml_svm_accuracy」に設定されています。 |
ml_svm_accuracy |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_svm_log_main_types |
additional.fields[].key |
キーは「ml_svm_log_main_types」に設定されています。 |
ml_svm_log_main_types |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_svm_log_match_types |
additional.fields[].key |
キーは「ml_svm_log_match_types」に設定されています。 |
ml_svm_log_match_types |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
ml_url_dbid |
additional.fields[].key |
キーは「ml_url_dbid」に設定されています。 |
ml_url_dbid |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
monitor_status |
additional.fields[].key |
キーが「monitor_status」に設定されている。 |
monitor_status |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
msg |
metadata.description |
値が直接マッピングされます。 |
owasp_top10 |
additional.fields[].key |
キーは「owaspTop10」に設定されています。 |
owasp_top10 |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
principal_app |
principal.application |
値が直接マッピングされます。 |
principal_host |
principal.hostname |
値が直接マッピングされます。 |
proto |
network.ip_protocol |
値は大文字に変換された後に直接マッピングされます。 |
request |
target.url |
値が直接マッピングされます。 |
requestMethod |
network.http.method |
値が直接マッピングされます。 |
rt |
metadata.event_timestamp.seconds |
エポックからのミリ秒として解析され、秒に変換されます。 |
security_result.severity |
security_result.severity |
severity_level から派生しました。未加工のログ値に基づいて、さまざまな UDM 重大度値にマッピングされます。一致するものが見つからない場合、デフォルトは UNKNOWN_SEVERITY です。 |
server_pool_name |
additional.fields[].key |
キーは「server_pool_name」に設定されています。 |
server_pool_name |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
service |
network.application_protocol |
値は大文字に変換された後に直接マッピングされます。 |
service |
target.application |
HTTPS、HTTP、DNS、DHCP、SMB のいずれでない場合、値は大文字に変換された後に直接マッピングされます。 |
severity |
security_result.severity |
severity が空で、cs3Label が「level」の場合、cs3 の値が使用されます。その後、UDM の重大度値(LOW、HIGH など)にマッピングされます。 |
signature_id |
security_result.rule_id |
値が直接マッピングされます。 |
signature_subclass |
security_result.detection_fields[].key |
キーが「signature_subclass」に設定されている。 |
signature_subclass |
security_result.detection_fields[].value |
値が直接マッピングされます。 |
src |
principal.ip |
値が直接マッピングされます。 |
src_country |
principal.location.country_or_region |
値が直接マッピングされます。 |
src_ip |
principal.ip |
値が直接マッピングされます。 |
src_port |
principal.port |
値は直接マッピングされ、整数に変換されます。 |
srccountry |
principal.location.country_or_region |
値が直接マッピングされます。 |
sub_type |
additional.fields[].key |
キーが「subType」に設定されている。 |
sub_type |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
subtype |
target.resource.resource_subtype |
値が直接マッピングされます。 |
suid |
principal.user.userid |
値が直接マッピングされます。 |
threat_level |
additional.fields[].key |
キーが「threatLevel」に設定されている。 |
threat_level |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
threat_weight |
security_result.detection_fields[].key |
キーは「threat_weight」に設定されています。 |
threat_weight |
security_result.detection_fields[].value |
値が直接マッピングされます。 |
time |
metadata.event_timestamp.seconds |
date と組み合わせて解析され、エポック秒が生成されます。 |
user_id |
principal.user.product_object_id |
値が直接マッピングされます。 |
user_name |
additional.fields[].key |
キーが「userName」に設定されている。 |
user_name |
additional.fields[].value.string_value |
値が直接マッピングされます。 |
user_name |
principal.user.userid |
値が直接マッピングされます。 |
なし | metadata.event_type |
principal.ip と target.ip の両方が存在する場合は、「NETWORK_CONNECTION」に設定します。principal.ip と principal.user が存在する場合は、「USER_UNCATEGORIZED」に設定します。principal.ip のみが存在する場合は「STATUS_UPDATE」に設定します。それ以外の場合は、「GENERIC_EVENT」に設定します。 |
なし | metadata.log_type |
「FORTINET_FORTIWEB」にハードコードされています。 |
なし | metadata.product_name |
ログ形式に基づいて「FORTINET FORTIWEB」または「FortiWEB Cloud」にハードコードされています。 |
なし | metadata.vendor_name |
ログ形式に基づいて「FORTINET」または「Fortinet」にハードコードされています。 |
なし | principal.resource.resource_type |
dev_id が存在する場合は「DEVICE」にハードコードされます。 |
変更点
2024-01-09
- CEF 形式のログのサポートを追加しました。
- 新しい形式の CEF ログに一致する Grok パターンを追加しました。
- 「principal_hostnamne」を「principal.hostname」にマッピングしました。
- 「principal.app」を「principal.application」にマッピングしました。
2023-05-18
- 新しく作成されたパーサー。