收集 FortiWeb WAF 日志
本文档介绍了如何使用 Google Security Operations 转发器收集 FortiWeb Web 应用防火墙 (WAF) 日志。
如需了解详情,请参阅 Google Security Operations 数据注入概览。
注入标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 FORTINET_FORTIWEB
注入标签的解析器。
配置 FortiWeb WAF 日志
如需将 FortiWeb WAF 配置为将日志发送到 Google Security Operations 转发器,请执行以下操作:
创建 syslog 政策
- 登录 Fortinet FortiWeb 控制台。
- 在 Fortinet FortiWeb 控制台中,依次选择 Log & report(日志和报告)> Log policy(日志政策)> Syslog policy(Syslog 政策)。
- 点击新建 (Create new)。
在随即显示的新 syslog 政策窗口中,执行以下操作:
- 在政策名称字段中,指定要在配置中使用的政策的名称。
- 在 IP 地址字段中,指定远程 syslog 服务器的 IP 地址或主机名。
- 在端口字段中,指定 syslog 服务器的端口。
- 如果启用 CSV 格式复选框处于选中状态,请清除该复选框。
点击确定。
启用 syslog 类型和日志级别
- 在 Fortinet FortiWeb 控制台中,依次选择 Log & report > Log config > Global log settings。
在随即显示的全局日志设置窗口中,选中 Syslog 复选框,然后执行以下操作:
- 在 Syslog 政策列表中,选择您之前创建的 syslog 政策。
- 在日志级别列表中,选择要收集的日志的最低严重性级别。
- 在设施列表中,选择日志设施。
点击应用。
创建触发器
- 在 Fortinet FortiWeb 控制台中,依次选择 Log & report > Log policy > Trigger policy。
- 点击新建 (Create new)。
在显示的新触发器政策窗口中,执行以下操作:
- 在政策名称字段中,指定要在配置中使用的政策的名称。
- 在 Syslog 政策列表中,选择您之前创建的 syslog 政策。
点击确定。
使用新创建的触发器更新 syslog 政策,以确保所有必需的事件都记录到 Google Security Operations syslog 转发器中。
配置 Google Security Operations 转发器以注入 FortiWeb WAF 日志
- 依次前往 SIEM 设置 > 转发器。
- 点击添加新转发器。
- 在 Forwarder Name(转发器名称)字段中,输入转发器的唯一名称。
- 点击提交。系统会添加转发器,并显示添加收集器配置窗口。
- 在收集器名称字段中,输入一个名称。
- 选择 Fortinet Web 应用防火墙作为日志类型。
- 选择 Syslog 作为收集器类型。
- 配置以下必需的输入参数:
- 协议:指定收集器用于监听 syslog 数据的连接协议。
- 地址:指定收集器所在并监听 syslog 数据的目标 IP 地址或主机名。
- 端口:指定收集器所在的目标端口,并监听 syslog 数据。
- 点击提交。
如需详细了解 Google Security Operations 转发器,请参阅通过 Google Security Operations 界面管理转发器配置。
如果您在创建转发器时遇到问题,请与 Google Security Operations 支持团队联系。
字段映射参考
此解析器以键值 (KV) 格式处理来自 FORTINET FORTIWEB 的日志,并将其转换为 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 结合使用,并解析以生成纪元秒数。 |
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”。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。