收集 WatchGuard Fireware 日志
支持的平台:
Google SecOps
SIEM
概览
此解析器会提取 JSON 或键值对 (KV) 格式的 WatchGuard Fireware 日志,并将其转换为 UDM。它会以不同的方式处理“流量”和“事件”日志,使用 grok 和 kv 过滤器提取字段并将其映射到 UDM,并针对各种 msg_id
值和事件名称使用特定逻辑来处理网络协议、用户操作、安全结果和其他相关详细信息。它还会处理第二组 syslog 条目,提取类似信息并将其映射到 UDM 格式。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 Watchguard 的超级用户访问权限。
- 确保您使用的是 Windows 2012 SP2 或更高版本,或者使用了 systemd 的 Linux 主机。
- 如果在代理后面运行,请确保防火墙端口处于打开状态。
获取 Google SecOps 提取身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载提取身份验证文件。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 BindPlane Agent
- 对于 Windows 安装,请运行以下脚本:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
。 - 对于 Linux 安装,请运行以下脚本:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
。 - 如需了解其他安装选项,请参阅此安装指南。
配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps
- 访问安装了 BindPlane 的机器。
按如下方式修改
config.yaml
文件:receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: testNamespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
使用以下命令重启 BindPlane Agent 以应用更改:
sudo systemctl bindplane restart
将 Syslog 服务器配置添加到 Watchguard
- 登录 Watchguard 界面。
- 依次选择系统 > 日志记录。
- 点击 Syslog 服务器标签页。
- 选中将日志消息发送到这些 syslog 服务器复选框。
- 点击 Add(添加)。
在 Syslog 服务器对话框中,为输入参数指定值:
- IP 地址:输入服务器 IP 地址。
- 端口:更改默认的 syslog 服务器端口 (514),为您的服务器输入其他端口。
- 日志格式:从下拉菜单中选择 Syslog。
- 可选:说明:为服务器输入说明(例如“Google SecOps 导出”)。
- 可选:时间戳:选中复选框,即可在日志消息详情中包含 Firebox 上发生事件的日期和时间。
- 可选:设备的序列号:选中此复选框可在日志消息详情中添加 Firebox 的序列号。
- Syslog 设施:对于每种类型的日志消息,请从下拉菜单中选择优先级(例如,对于高优先级的 syslog 消息,例如警报,请选择 Local0)。
- 可选:恢复默认设置:用于恢复默认设置。
点击保存。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
action |
security_result.action_details |
将原始日志中的 action 值分配给 security_result.action_details 。 |
action |
target.labels.value |
原始日志中的 action 值会分配给 target.labels.value ,其中 target.labels.key 为“对资源执行的操作”。 |
arg |
target.file.full_path |
将原始日志中的 arg 值分配给 target.file.full_path 。 |
app_cat_id |
about.labels.value |
将原始日志中的 app_cat_id 值分配给 about.labels.value ,其中 about.labels.key 为“app_cat_id”。 |
app_cat_name |
target.application |
与 app_name 结合使用,用于构成 target.application 的值(例如“Google - Web 服务”)。 |
app_id |
about.labels.value |
将原始日志中的 app_id 值分配给 about.labels.value ,其中 about.labels.key 为“app_id”。 |
app_name |
target.application |
与 app_cat_name 结合使用,用于构成 target.application 的值(例如“Google - Web 服务”)。 |
cats |
security_result.category_details |
将原始日志中的 cats 值分配给 security_result.category_details 。 |
cert_issuer |
network.tls.server.certificate.issuer |
将原始日志中的 cert_issuer 值分配给 network.tls.server.certificate.issuer 。 |
cert_subject |
network.tls.server.certificate.subject |
将原始日志中的 cert_subject 值分配给 network.tls.server.certificate.subject 。 |
cn |
network.tls.server.certificate.subject |
将原始日志中的 cn 值分配给 network.tls.server.certificate.subject 。 |
conn_action |
security_result.action_details |
将原始日志中的 conn_action 值分配给 security_result.action_details 。 |
content_type |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
description |
metadata.description |
从原始日志派生的 description 值会分配给 metadata.description 。 |
dhcp_type |
network.dhcp.type |
原始日志中的 dhcp_type 值会映射到 network.dhcp.type 中的相应 DHCP 类型(例如"REQUEST", "ACK")。 |
dst_host |
target.hostname |
将原始日志中的 dst_host 值分配给 target.hostname 。 |
dst_ip |
target.ip |
将原始日志中的 dst_ip 值分配给 target.ip 。 |
dst_mac |
target.mac |
将原始日志中的 dst_mac 值分配给 target.mac 。 |
dst_port |
target.port |
将原始日志中的 dst_port 值分配给 target.port 。 |
dst_user |
target.user.user_display_name |
将原始日志中的 dst_user 值分配给 target.user.user_display_name 。 |
dstname |
target.administrative_domain |
将原始日志中的 dstname 值分配给 target.administrative_domain 。 |
duration |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
elapsed_time |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
endpoint |
intermediary.labels.value |
将原始日志中的 endpoint 值分配给 intermediary.labels.value ,其中 intermediary.labels.key 为“Gateway-Endpoint”。 |
event_name |
principal.application |
将原始日志中的 event_name 值分配给 principal.application 。 |
firewall_id |
intermediary.asset_id |
原始日志中的 firewall_id 值会附加“防火墙 ID:”并分配给 intermediary.asset_id 。 |
firewall_name |
principal.asset_id |
原始日志中的 firewall_name 值会附加前缀“Firewall:”,并分配给 principal.asset_id 。 |
firewallname |
intermediary.hostname |
将原始日志中的 firewallname 值分配给 intermediary.hostname 。 |
firewallname |
principal.hostname |
将原始日志中的 firewallname 值分配给 principal.hostname 。 |
fqdn_dst_match |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
geo |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
geo_dst |
target.location.country_or_region |
将原始日志中的 geo_dst 值分配给 target.location.country_or_region 。 |
geo_src |
principal.location.country_or_region |
将原始日志中的 geo_src 值分配给 principal.location.country_or_region 。 |
host |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
ike_policy |
security_result.rule_id |
将原始日志中的 ike_policy 值分配给 security_result.rule_id 。 |
ike_policy_version |
security_result.rule_version |
将原始日志中的 ike_policy_version 值分配给 security_result.rule_version 。 |
intermediary_host |
intermediary.hostname |
将原始日志中的 intermediary_host 值分配给 intermediary.hostname 。 |
ipaddress |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
ipsec_policy |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
ipsec_policy_version |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
keyword |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
line |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
log_message |
metadata.description |
如果没有其他更具体的说明,系统会将原始日志中的 log_message 值分配给 metadata.description 。 |
log_reason |
security_result.summary |
将原始日志中的 log_reason 值分配给 security_result.summary 。 |
log_type |
metadata.log_type |
原始日志中的 log_type 值会分配给 metadata.log_type 。始终设置为“WATCHGUARD”。 |
msg |
security_result.summary |
将原始日志中的 msg 值分配给 security_result.summary 。 |
msg_id |
metadata.product_event_type |
将原始日志中的 msg_id 值分配给 metadata.product_event_type 。 |
new_action |
security_result.action_details |
与 conn_action 搭配使用,用于构成 security_result.action_details 的值(例如 “ProxyReplace: IP protocol - HTTPS-Client.DPI-Off”)。 |
op |
network.http.method |
将原始日志中的 op 值分配给 network.http.method 。 |
path |
target.url |
将原始日志中的 path 值分配给 target.url 。 |
pid |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
policy_name |
intermediary.resource.name |
将原始日志中的 policy_name 值分配给 intermediary.resource.name 。 |
policy_name |
security_result.rule_name |
将原始日志中的 policy_name 值分配给 security_result.rule_name 。 |
policyname_label.value |
security_result.rule_labels.value |
将原始日志中的 policy_name 值分配给 security_result.rule_labels.value ,其中 security_result.rule_labels.key 为“PolicyName”。 |
prin_host |
principal.hostname |
将原始日志中的 prin_host 值分配给 principal.hostname 。 |
proc_id |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
protocol |
network.ip_protocol |
将原始日志中的 protocol 值转换为大写,然后将其赋给 network.ip_protocol 。对映射到“ICMP”的“EXTERNAL ICMP”进行特殊处理。 |
proxy_act |
security_result.rule_id |
将原始日志中的 proxy_act 值分配给 security_result.rule_id 。 |
proxy_act |
security_result.rule_name |
将原始日志中的 proxy_act 值分配给 security_result.rule_name 。 |
query_name |
network.dns.questions.name |
将原始日志中的 query_name 值分配给 network.dns.questions.name 。 |
query_type |
network.dns.questions.type |
原始日志中的 query_type 值会分配给 network.dns.questions.type 。对数字查询类型的特殊处理,以及映射到标准 DNS 查询类型。 |
rc |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
reason |
security_result.summary |
将原始日志中的 reason 值分配给 security_result.summary 。 |
record_type |
network.dns.answers.type |
原始日志中的 record_type 值会映射到 network.dns.answers.type 中的相应 DNS 记录类型。 |
redirect_action |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
reputation |
additional.fields.value.string_value |
将原始日志中的 reputation 值分配给 additional.fields.value.string_value ,其中 additional.fields.key 为“reputation”。 |
response |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
response_code |
network.dns.response_code |
原始日志中的 response_code 值会映射到 network.dns.response_code 中的相应 DNS 响应代码。 |
route_type |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
rule_name |
security_result.rule_name |
将原始日志中的 rule_name 值分配给 security_result.rule_name 。 |
rcvd_bytes |
network.received_bytes |
将原始日志中的 rcvd_bytes 值分配给 network.received_bytes 。 |
sent_bytes |
network.sent_bytes |
将原始日志中的 sent_bytes 值分配给 network.sent_bytes 。 |
server_ssl |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
severity |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
sig_vers |
network.tls.server.certificate.version |
将原始日志中的 sig_vers 值分配给 network.tls.server.certificate.version 。 |
signature_cat |
additional.fields.value.string_value |
将原始日志中的 signature_cat 值分配给 additional.fields.value.string_value ,其中 additional.fields.key 为“signature_cat”。 |
signature_id |
additional.fields.value.string_value |
将原始日志中的 signature_id 值分配给 additional.fields.value.string_value ,其中 additional.fields.key 为“signature_id”。 |
signature_name |
additional.fields.value.string_value |
将原始日志中的 signature_name 值分配给 additional.fields.value.string_value ,其中 additional.fields.key 为“signature_name”。 |
sni |
network.tls.client.server_name |
将原始日志中的 sni 值分配给 network.tls.client.server_name 。 |
src_ctid |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
src_host |
principal.hostname |
将原始日志中的 src_host 值分配给 principal.hostname 。 |
src_ip |
principal.ip |
将原始日志中的 src_ip 值分配给 principal.ip 。 |
src_ip_nat |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
src_mac |
principal.mac |
将原始日志中的 src_mac 值分配给 principal.mac 。 |
src_port |
principal.port |
将原始日志中的 src_port 值分配给 principal.port 。 |
src_user |
principal.user.user_display_name |
将原始日志中的 src_user 值分配给 principal.user.user_display_name 。 |
src_user_name |
principal.user.user_display_name |
将原始日志中的 src_user_name 值分配给 principal.user.user_display_name 。 |
src_vpn_ip |
principal.ip |
将原始日志中的 src_vpn_ip 值分配给 principal.ip 。 |
srv_ip |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
srv_port |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
ssl_offload |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
tcp_info |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
time |
metadata.event_timestamp.seconds ,timestamp.seconds |
系统会解析原始日志中的 time 值,并将其用于填充 metadata.event_timestamp.seconds 和 timestamp.seconds 。 |
time1 |
metadata.event_timestamp.seconds ,timestamp.seconds |
系统会解析原始日志中的 time1 值,并将其用于填充 metadata.event_timestamp.seconds 和 timestamp.seconds 。 |
tls_profile |
about.labels.value |
将原始日志中的 tls_profile 值分配给 about.labels.value ,其中 about.labels.key 为“tls_profile”。 |
tls_version |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
user_name |
principal.user.userid ,principal.user.user_display_name |
原始日志中的 user_name 值会分配给 principal.user.userid 或 principal.user.user_display_name ,具体取决于上下文。 |
user_type |
未映射 | 未映射到所提供 UDM 示例中的 IDM 对象。 |
(不适用) | intermediary.resource.type |
始终设置为“ACCESS_POLICY”。 |
(不适用) | metadata.event_type |
由基于 msg_id 、log_type 、event_name 和其他字段的解析器逻辑确定。可以是 NETWORK_CONNECTION 、SERVICE_MODIFICATION 、NETWORK_SMTP 、NETWORK_DNS 、NETWORK_HTTP 、USER_LOGIN 、USER_LOGOUT 、USER_RESOURCE_UPDATE_CONTENT 、RESOURCE_PERMISSIONS_CHANGE 、RESOURCE_CREATION 、GENERIC_EVENT 、STATUS_UPDATE 或 USER_UNCATEGORIZED 。 |
(不适用) | metadata.product_name |
始终设置为“Fireware”。 |
(不适用) | metadata.vendor_name |
始终设置为“Watchguard”。 |
(不适用) | security_result.action |
由基于 disposition 的解析器逻辑决定。可以是“ALLOW”或“BLOCK”。 |
(不适用) | extensions.auth.type |
对于用户登录/退出事件,请将其设置为“AUTHTYPE_UNSPECIFIED”;对于与 VPN 相关的网络事件,请将其设置为“VPN”。 |
(不适用) | network.application_protocol |
由基于 msg_id 和 event_name 的解析器逻辑决定。可以是“DNS”“DHCP”“HTTP”或“HTTPS”。 |
(不适用) | network.dns.questions.type |
对于“A”记录查询,将其设置为 1。 |
(不适用) | target.labels.key |
将 action 映射到 target.labels.value 时,设置为“对资源执行操作”。 |
(不适用) | intermediary.labels.key |
将 prin_host 映射到 intermediary.labels.value 时,将其设置为“防火墙成员名称”。 |
(不适用) | intermediary.labels.key |
将 endpoint 映射到 intermediary.labels.value 时,设置为“网关-端点”。 |
(不适用) | principal.labels.key |
将 gateway 映射到 principal.labels.value 时设置为“网关”。 |
(不适用) | target.labels.key |
将 gateway 映射到 target.labels.value 时设置为“网关”。 |
(不适用) | principal.labels.key |
将 status 映射到 principal.labels.value 时设置为“state”。 |
(不适用) | target.labels.key |
将 status 映射到 target.labels.value 时,设置为“网关状态”。 |
(不适用) | additional.fields.key |
从原始日志映射出相应值时,将其设置为“signature_name”“signature_cat”“signature_id”或“reputation”。 |
更改
2023-12-03
- 修改了 Grok 模式,以解析新字段。
- 修改了一些 Grok 模式,以解析“identified_log”的新模式。
- 添加了新的 Grok 模式,用于解析“msg_id”值为“1600-0066”的“identified_log”。
2023-11-27
- 将“msg_id”等于“3000-0150”的日志的“signature_name”映射到“additional.fields”。
- 将“signature_id”“signature_cat”映射到“additional.fields”。
2023-11-24
- 修改了一些 Grok 模式,以解析新字段。
- 将“firewallname”映射到“event.idm.read_only_udm.intermediary.hostname”。
- 将“firewall_id”映射到“event.idm.read_only_udm.intermediary.asset_id”。
- 将“prin_host”映射到“event.idm.read_only_udm.intermediary.labels”
2023-11-10
- 移除了多余的代码。
- 将“signature_name”映射到“additional.fields”。
2023-09-28
- bug 修复:
- 修改了“日期”过滤条件,以支持以下格式:“yyyy-MM-dd HH:mm:ss”“MMM d HH:mm:ss”“MMM dd HH:mm:ss”“ISO8601”“yyyy-MM-ddTHH:mm:ss”。
2023-05-25
- bug 修复:
- 将“通过网关从目标主机收到 DPD 消息”事件的“src_vpn_ip”字段的映射从“principal.ip”更改为“target.ip”。
2023-05-04
- 增强功能 - 添加了 Grok 模式,用于处理事件为“dnsmasq”“dhcpd”“iked”“admd”的未解析日志。
2023-01-20
- 增强功能 - 添加了 grok 来处理未解析的日志。
- 将“dst_port”映射到 target.port。
- 将“src_port”映射到 principal.port。
- 将“rcvd_bytes”映射到 network.received_bytes。
- 将“geo_src”映射到 principal.location.country_or_region。
- 将“geo_dst”映射到 target.location.country_or_region。
- 将“prin_host”映射到“principal.hostname”。
- 添加了针对“dhcp_type”“intermediary_host”“protocol”的条件检查
- 如果“msg_id”等于“1600-0066”
- 添加了与“1600-0066”相等的“msg_id”Grok 模式。
- 将“description”映射到“metadeta.description”。
- 如果“msg_id”等于“2DFF-0000”
- 将“proxy_act”映射到“security_result.rule_name”。
2022-12-17
- 增强功能 - 将包含 Member1 的日志的防火墙名称映射到“principal.asset_id”。
- 将“event_type”从“SERVICE_MODIFICATION”更改为“NETWORK_CONNECTION”。
- 如果“src_user”是电子邮件地址,则将其映射到“principal.user.email_addresses”;否则,将其映射到“principal.user.user_display_name”。
2022-12-16
- 增强功能 -
- 添加了 Grok 来处理 event_name 为“firewall”的未解析日志。
- 减少了 GENERIC_EVENT 类型。
2022-11-16
- 增强功能 - 将“reason”字段映射到“security_result.action_details”。
- 添加了 Grok 来处理 event_name 为“firewall”的未解析日志。
- 添加了额外的条件块,以解析 event_name 为“loggerd”“sigd”“sessiond”“admd”“iked”的日志。
2022-11-07
- bug 修复:
- 将 http 标头中指定的映射路径从“target.file.full_path”改为“target.url”。
2022-06-17
- 增强功能 - 解析了包含与“防火墙”“http-proxy”“https-proxy”相关事件的日志。