收集 FortiWeb WAF 日志
本文档介绍了如何使用 Google 安全运营转发器收集 FortiWeb Web 应用防火墙 (WAF) 日志。
如需了解详情,请参阅将数据提取到 Google 安全运营中心概览。
注入标签标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 FORTINET_FORTIWEB
注入标签的解析器。
配置 FortiWeb WAF 日志
如需配置 FortiWeb WAF 将日志发送到 Google Security Operations 转发器,请执行以下操作:
创建 syslog 政策
- 登录 Fortinet FortiWeb 控制台。
- 在 Fortinet FortiWeb 控制台中,依次选择日志和报告 > 日志政策 > Syslog 政策。
- 点击新建 (Create new)。
在随即显示的新建 Syslog 政策窗口中,执行以下操作:
- 在政策名称字段中,为您要在配置中使用的政策指定名称。
- 在 IP 地址字段中,指定远程 syslog 服务器的 IP 地址或主机名。
- 在 Port 字段中,指定 syslog 服务器的端口。
- 清除 Enable CSV format 复选框(如果已选中)。
点击确定。
启用 syslog 类型和日志级别
- 在 Fortinet FortiWeb 控制台中,依次选择日志和报告 > 日志配置 > 全局日志设置。
在随即显示的全局日志设置窗口中,选中 Syslog 复选框,然后执行以下操作:
- 在 Syslog 政策列表中,选择您之前创建的 Syslog 政策。
- 在日志级别列表中,选择要收集的日志的最低严重级别。
- 在 Facility 列表中,选择日志设施。
点击应用。
创建触发器
- 在 Fortinet FortiWeb 控制台中,依次选择日志和报告 > 日志政策 > 触发器政策。
- 点击新建 (Create new)。
在随即显示的新建触发器政策窗口中,执行以下操作:
- 在政策名称字段中,为您要在配置中使用的政策指定名称。
- 在 Syslog 政策列表中,选择您之前创建的 Syslog 政策。
点击确定。
使用新创建的触发器更新您的 syslog 政策,以确保所有必需事件都记录到 Google Security Operations syslog 转发器。
配置 Google Security Operations 转发器以提取 FortiWeb WAF 日志
- 依次前往 SIEM 设置 > 转发器。
- 点击添加新转发器。
- 在转发器名称字段中,为转发器输入一个唯一的名称。
- 点击提交。系统会添加转发器,并显示添加收集器配置窗口。
- 在收集器名称字段中,输入名称。
- 选择 Fortinet Web Application Firewall(Fortinet Web 应用防火墙)作为日志类型。
- 选择 Syslog 作为收集器类型。
- 配置以下必需的输入参数:
- 协议:指定收集器用于监听 syslog 数据的连接协议。
- 地址:指定收集器所在并监听 syslog 数据的目标 IP 地址或主机名。
- 端口:指定收集器所在的目标端口,以及收集器监听 syslog 数据的端口。
- 点击提交。
如需详细了解 Google Security Operations 转发器,请参阅通过 Google Security Operations 界面管理转发器配置。
如果您在创建转发器时遇到问题,请与 Google 安全运营支持团队联系。
字段映射参考文档
此解析器以键值 (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 会设为“允许”。如果 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 严重程度值(低、高等)。 |
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 格式日志的支持。
- 添加了 Grok 模式,以匹配新格式的 CEF 日志。
- 将“principal_hostnamne”映射到“principal.hostname”。
- 将“principal.app”映射到“principal.application”。
2023-05-18
- 新创建的解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。