收集 FortiWeb WAF 記錄
本文說明如何使用 Google Security Operations 轉送器,收集 FortiWeb 網頁應用程式防火牆 (WAF) 記錄。
詳情請參閱「將資料擷取至 Google Security Operations 總覽」。
擷取標籤會識別剖析器,該剖析器會將原始記錄資料正規化為具結構性的 UDM 格式。本文件中的資訊適用於具有 FORTINET_FORTIWEB
攝入標籤的剖析器。
設定 FortiWeb WAF 記錄
如要設定 FortiWeb WAF,將記錄傳送至 Google Security Operations 轉送器,請按照下列步驟操作:
建立系統記錄政策
- 登入 Fortinet FortiWeb 控制台。
- 在 Fortinet FortiWeb 控制台中,依序選取「Log & report」(記錄和報告) >「Log policy」(記錄政策) >「Syslog policy」(系統記錄政策)。
- 按一下 [Create new] (建立新意圖)。
在隨即顯示的「New syslog policy」(新增系統記錄政策) 視窗中,執行下列操作:
- 在「政策名稱」欄位中,指定要在設定中使用的政策名稱。
- 在「IP 位址」欄位中,指定遠端系統記錄伺服器的 IP 位址或主機名稱。
- 在「Port」(通訊埠) 欄位中,指定系統記錄伺服器的通訊埠。
- 如果已勾選「啟用 CSV 格式」核取方塊,請取消勾選。
按一下 [確定]。
啟用系統記錄類型和記錄層級
- 在 Fortinet FortiWeb 控制台中,依序選取「Log & report」(記錄和報告) >「Log config」(記錄設定) >「Global log settings」(全域記錄設定)。
在隨即顯示的「Global log settings」(全域記錄設定) 視窗中,選取「Syslog」核取方塊,然後執行下列操作:
- 在「Syslog policy」(系統記錄政策) 清單中,選取先前建立的系統記錄政策。
- 在「記錄層級」清單中,選擇要收集的記錄最低嚴重性等級。
- 在「Facility」(設施) 清單中,選取記錄設施。
按一下 [套用]。
建立觸發條件
- 在 Fortinet FortiWeb 主控台中,依序選取「Log & report」(記錄和報告) >「Log policy」(記錄政策) >「Trigger policy」(觸發政策)。
- 按一下 [Create new] (建立新意圖)。
在隨即顯示的「New trigger policy」(新增觸發條件政策) 視窗中,執行下列操作:
- 在「政策名稱」欄位中,指定要在設定中使用的政策名稱。
- 在「Syslog policy」(系統記錄政策) 清單中,選取先前建立的系統記錄政策。
按一下 [確定]。
使用新建立的觸發條件更新系統記錄政策,確保所有必要事件都會記錄到 Google Security Operations 系統記錄轉送器。
設定 Google Security Operations 轉送器,以便擷取 FortiWeb WAF 記錄
- 依序前往「SIEM 設定」>「轉送器」。
- 按一下「新增轉寄者」。
- 在「轉送器名稱」欄位中,輸入轉送器的專屬名稱。
- 按一下「提交」。轉送器新增完成後,系統會顯示「新增收集器設定」視窗。
- 在「收集器名稱」欄位中輸入名稱。
- 選取「Fortinet Web Application Firewall」做為「記錄類型」。
- 選取「Syslog」做為「收集器類型」。
- 設定下列必要輸入參數:
- 通訊協定:指定收集器用來監聽系統記錄資料的連線通訊協定。
- 地址:指定收集器所在位置的目標 IP 位址或主機名稱,並監聽系統記錄資料。
- 連接埠:指定收集器所在並監聽系統記錄檔資料的目標連接埠。
- 按一下「提交」。
如要進一步瞭解 Google Security Operations 轉送器,請參閱「透過 Google Security Operations 使用者介面管理轉送器設定」。
如果在建立轉寄者時遇到問題,請與 Google Security Operations 支援團隊聯絡。
欄位對應參考資料
這個剖析器會處理 FORTINET FORTIWEB 的記錄 (採用鍵值 (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 為「惡意」,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 結合並剖析,產生 Epoch 秒數。 |
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 |
系統會將這個值剖析為 Epoch 紀元時間起算的毫秒數,然後轉換為秒。 |
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 結合並剖析,產生 Epoch 秒數。 |
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」。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。