收集 Barracuda WAF 日志

支持的平台:

本文档介绍了如何使用 Bindplane 收集 Barracuda Web 应用防火墙 (WAF) 日志。解析器会从 JSON 和 Syslog 格式的日志中提取字段,对其进行标准化,然后将其映射到统一数据模型 (UDM)。它可处理各种日志类型(流量、网站防火墙),并根据字段值执行条件转换,包括 IP 地址/主机名解析、方向映射和严重程度标准化。

准备工作

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

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

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。

获取 Google SecOps 客户 ID

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

安装 Bindplane 代理

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

  • 如需了解其他安装选项,请参阅此安装指南

配置 Bindplane 代理以提取 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    1. 找到 config.yaml 文件。通常,在 Linux 上,该目录位于 /etc/bindplane-agent/ 目录中;在 Windows 上,该目录位于安装目录中。
    2. 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: SYSLOG
                namespace: barracuda_waf
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 根据基础架构中的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. 获取 Google SecOps 提取身份验证文件部分,将 /path/to/ingestion-authentication-file.json 更新为身份验证文件的保存路径。

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart bindplane-agent
    
  • 如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

配置 Barracuda WAF

  1. 使用管理员凭据登录 Barracuda WAF 控制台。
  2. 依次点击“高级”标签页 > 导出日志
  3. 导出日志部分,点击添加导出日志服务器
  4. 请提供以下值:
    • 名称:为 Google SecOps 转发器输入名称。
    • 日志服务器类型:选择 Syslog
    • IP 地址或主机名:输入 Bindplane IP 地址。
    • 端口:输入 Bindplane 端口。
    • 连接类型:选择 TCP 连接类型(建议使用 TCP。不过,也可以使用 UDP 或 SSL 协议)。
    • 验证服务器证书:选择
    • 客户端证书:选择
    • 日志时间戳和主机名:选择 Yes(是)。
    • 点击添加

UDM 映射表

日志字段 UDM 映射 逻辑
action security_result.action 如果 actionDENY,请设置为 BLOCK。否则,请设置为 ALLOW(专门针对 WF 日志类型)。也用于通用防火墙事件。
appProtocol network.application_protocol 如果 appProtocolTLSv 匹配,则设置为 HTTPS。否则,请使用 appProtocol 的值。
attackDetails security_result.description WF 日志类型的原始日志中提取。
attackType security_result.summary security_result.summary 的一部分,与 ruleType 结合使用。
bytesReceived network.received_bytes 已转换为无符号整数并映射到 TR 日志类型。
bytesSent network.sent_bytes 已转换为无符号整数并映射到 TR 日志类型。
hostName target.hostname 如果 hostName 不是 IP 地址,请使用其值。否则,它会合并到 target.ip
httpMethod loginId principal.user.userid 如果不等于 emptyToken,则会映射到 TR 日志类型。
logType metadata.product_event_type 如果为 TR,请将 metadata.product_event_type 设置为 Barracuda Access Log。如果为 WF,则设置为 Barracuda Web Firewall Log
message metadata.description desc 不为空时使用。
referrer network.http.referral_url 如果不等于 emptyToken,则会映射到 TR 日志类型。
responseCode network.http.response_code 已转换为整数并映射到 TR 日志类型。
rule security_result.rule_name 已映射到 WF 日志类型。
ruleType security_result.summary security_result.summary 的一部分,与 attackType 结合使用。
sec_desc security_result.rule_name 用于通用防火墙事件。
server target.ip 已合并到 target.ip
serv target.ip 已合并到 target.ip
severity security_result.severityis_alertis_significant 对于 WF 日志类型:转换为大写。如果为 EMERGENCYALERCRITICAL,请将 security_result.severity 设置为 CRITICALis_alert 设置为 true 并将 is_significant 设置为 true。如果为 ERROR,则设置为 HIGH。如果为 WARNING,则设置为 MEDIUM。如果为 NOTICE,则设置为 LOW。否则,请将其设置为 INFORMATIONAL
src principal.ip 也适用于通用防火墙事件和某些状态更新。
srcPort principal.port 转换为整数。
target targetPort target.port 转换为整数。
time metadata.event_timestamp.secondsmetadata.event_timestamp.nanostimestamp.secondstimestamp.nanos tz 结合使用并进行解析,以创建事件时间戳。系统会提取秒数和纳秒数,并将其填充到相应字段中。
url urlParams target.url 如果 TR 日志类型不等于 emptyToken,则附加到 url
userAgent userName target.user.useridtarget.user.user_display_name 用于通用防火墙事件。如果 TR 日志类型不等于 emptyToken,则映射到 target.user.user_display_name。已硬编码为 Barracuda。如果同时存在 srctarget,请将其设置为 NETWORK_HTTP。如果仅存在 src,则设置为 STATUS_UPDATE。默认情况下设置为 GENERIC_EVENT,或在 CEF 解析等其他场景中设置为 GENERIC_EVENT。已硬编码为 BARRACUDA_WAF

变化

2023-07-19

bug 修复

  • 使用 Grok 模式解析未解析的原始日志。
  • 将“server”映射到“target.ip”。

2022-09-09

  • 创建了默认解析器,并将自定义解析器迁移到了默认解析器。
  • 以下字段已映射:
  • “duser”已映射到“target.user.user_display_name”。
  • “suser”已映射到“.principal.user.user_display_name”。
  • “suid”已映射到“principal.user.userid”。
  • “src”已映射到“principal.ip”。
  • “dst”映射到“target.ip”。
  • “shost”已映射到“principal.hostname”。
  • “severity”已映射到“security_result.severity”。
  • “action”已映射到“security_result.action”。
  • “user_name”已映射到“target.user.userid”。
  • “domain_name”已映射到“target.domain.name”。
  • “mac_address”已映射到“principal.mac”。
  • “direction”已映射到“network.direction”。
  • “ip_protocol”已映射到“network.ip_protocol”。
  • “summary”映射到“security_result.summary”。

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。