收集 Barracuda WAF 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 收集 Barracuda Web 应用防火墙 (WAF) 日志。解析器会从 JSON 和 Syslog 格式的日志中提取字段,对其进行标准化处理,然后将其映射到统一数据模型 (UDM)。它可处理各种日志类型(流量、Web 防火墙),并根据字段值执行条件转换,包括 IP 地址/主机名解析、方向性映射和严重程度归一化。
准备工作
- 确保您拥有 Google Security Operations 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者具有
systemd
的 Linux 主机。 - 如果通过代理运行,请确保防火墙端口处于开放状态。
- 确保您拥有对 Barracuda WAF 的特权访问权限。
获取 Google SecOps 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件。将文件安全地保存在将要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
- 如需了解其他安装选项,请参阅此安装指南。
配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps
访问配置文件:
- 找到
config.yaml
文件。通常,它位于 Linux 上的/etc/bindplane-agent/
目录中或 Windows 上的安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
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
根据基础架构的需要替换端口和 IP 地址。
将
<customer_id>
替换为实际的客户 ID。将
/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
- 使用管理员凭据登录 Barracuda WAF 控制台。
- 依次点击高级标签页> 导出日志。
- 在导出日志部分,点击添加导出日志服务器。
- 请提供以下值:
- 名称:输入 Google SecOps 转发器的名称。
- 日志服务器类型:选择 Syslog。
- IP 地址或主机名:输入
Bindplane
IP 地址。 - 端口:输入
Bindplane
端口。 - 连接类型:选择
TCP
连接类型(建议选择 TCP。不过,也可以使用 UDP 或 SSL 协议)。 - 验证服务器证书:选择否。
- 客户端证书:选择无。
- 日志时间戳和主机名:选择是。
- 点击添加。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
action |
security_result.action |
如果 action 为 DENY ,则设置为 BLOCK 。否则,请设置为 ALLOW (专门针对 WF 日志类型)。也用于一般防火墙事件。 |
appProtocol |
network.application_protocol |
如果 appProtocol 与 TLSv 匹配,则设置为 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 日志类型:已转换为大写。如果为 EMERGENCY 、ALER 或 CRITICAL ,则将 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.seconds 、metadata.event_timestamp.nanos 、timestamp.seconds 、timestamp.nanos |
与 tz 结合使用,并经过解析以创建事件时间戳。系统会提取秒数和纳秒数,并将其填充到相应的字段中。 |
url urlParams |
target.url |
如果对于 TR 日志类型,该值不等于 emptyToken ,则附加到 url 。 |
userAgent userName |
target.user.userid ,target.user.user_display_name |
用于一般防火墙事件。如果对于 TR 日志类型,该值不等于 emptyToken ,则映射到 target.user.user_display_name 。硬编码为 Barracuda 。如果同时存在 src 和 target ,则设置为 NETWORK_HTTP 。如果仅存在 src ,则设置为 STATUS_UPDATE 。设置为 GENERIC_EVENT 作为默认值,或用于其他场景(例如 CEF 解析)。硬编码为 BARRACUDA_WAF 。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。