收集 Barracuda WAF 日志

支持的语言:

本文档介绍了如何使用 Bindplane 收集 Barracuda Web 应用防火墙 (WAF) 日志。解析器会从 JSON 和 Syslog 格式的日志中提取字段,对其进行标准化处理,然后将其映射到统一数据模型 (UDM)。它可处理各种日志类型(流量、Web 防火墙),并根据字段值执行条件转换,包括 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. /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 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 协议)。
    • 验证服务器证书:选择
    • 客户端证书:选择
    • 日志时间戳和主机名:选择
    • 点击添加

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.severity 对于 WF 日志类型:已转换为大写。如果为 EMERGENCYALERCRITICAL,则将 security_result.severity 设置为 CRITICAL。如果为 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 解析)。硬编码为 BARRACUDA_WAF

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。