收集 WatchGuard Fireware 日志

支持的平台:

概览

此解析器会提取 JSON 或键值对 (KV) 格式的 WatchGuard Fireware 日志,并将其转换为 UDM。它会以不同的方式处理“流量”和“事件”日志,使用 grok 和 kv 过滤器提取字段并将其映射到 UDM,并针对各种 msg_id 值和事件名称使用特定逻辑来处理网络协议、用户操作、安全结果和其他相关详细信息。它还会处理第二组 syslog 条目,提取类似信息并将其映射到 UDM 格式。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有对 Watchguard 的超级用户访问权限。
  • 确保您使用的是 Windows 2012 SP2 或更高版本,或者使用了 systemd 的 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口处于打开状态。

获取 Google SecOps 提取身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 BindPlane Agent

  1. 对于 Windows 安装,请运行以下脚本:msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. 对于 Linux 安装,请运行以下脚本:sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 如需了解其他安装选项,请参阅此安装指南

配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps

  1. 访问安装了 BindPlane 的机器。
  2. 按如下方式修改 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
    
  3. 使用以下命令重启 BindPlane Agent 以应用更改:sudo systemctl bindplane restart

将 Syslog 服务器配置添加到 Watchguard

  1. 登录 Watchguard 界面。
  2. 依次选择系统 > 日志记录
  3. 点击 Syslog 服务器标签页。
  4. 选中将日志消息发送到这些 syslog 服务器复选框。
  5. 点击 Add(添加)。
  6. Syslog 服务器对话框中,为输入参数指定值:

    • IP 地址:输入服务器 IP 地址。
    • 端口:更改默认的 syslog 服务器端口 (514),为您的服务器输入其他端口。
    • 日志格式:从下拉菜单中选择 Syslog
    • 可选:说明:为服务器输入说明(例如“Google SecOps 导出”)。
    • 可选:时间戳:选中复选框,即可在日志消息详情中包含 Firebox 上发生事件的日期和时间。
    • 可选:设备的序列号:选中此复选框可在日志消息详情中添加 Firebox 的序列号。
    • Syslog 设施:对于每种类型的日志消息,请从下拉菜单中选择优先级(例如,对于高优先级的 syslog 消息,例如警报,请选择 Local0)。
    • 可选:恢复默认设置:用于恢复默认设置。
  7. 点击保存

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.secondstimestamp.seconds 系统会解析原始日志中的 time 值,并将其用于填充 metadata.event_timestamp.secondstimestamp.seconds
time1 metadata.event_timestamp.secondstimestamp.seconds 系统会解析原始日志中的 time1 值,并将其用于填充 metadata.event_timestamp.secondstimestamp.seconds
tls_profile about.labels.value 将原始日志中的 tls_profile 值分配给 about.labels.value,其中 about.labels.key 为“tls_profile”。
tls_version 未映射 未映射到所提供 UDM 示例中的 IDM 对象。
user_name principal.user.useridprincipal.user.user_display_name 原始日志中的 user_name 值会分配给 principal.user.useridprincipal.user.user_display_name,具体取决于上下文。
user_type 未映射 未映射到所提供 UDM 示例中的 IDM 对象。
(不适用) intermediary.resource.type 始终设置为“ACCESS_POLICY”。
(不适用) metadata.event_type 由基于 msg_idlog_typeevent_name 和其他字段的解析器逻辑确定。可以是 NETWORK_CONNECTIONSERVICE_MODIFICATIONNETWORK_SMTPNETWORK_DNSNETWORK_HTTPUSER_LOGINUSER_LOGOUTUSER_RESOURCE_UPDATE_CONTENTRESOURCE_PERMISSIONS_CHANGERESOURCE_CREATIONGENERIC_EVENTSTATUS_UPDATEUSER_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_idevent_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”相关事件的日志。