收集 F5 AFM 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 将 F5 Advanced Firewall Management 日志注入到 Google Security Operations。解析器会将 SYSLOG 和 CSV 或 CSV 格式的日志转换为统一数据模型 (UDM)。它首先尝试使用特定于 SYSLOG 格式的 grok 模式解析日志消息,如果解析失败,则将其作为 CSV 文件进行处理,提取字段并将其映射到 UDM 结构。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows 2016 或更高版本,或者具有
systemd
的 Linux 主机 - 如果在代理后运行,防火墙端口处于开放状态
- 对 F5 BIG-IP 和 F5 Advanced Firewall Management 的特权访问权限
获取 Google SecOps 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件。将该文件安全地保存在将要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
按照以下说明在 Windows 或 Linux 操作系统上安装 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:5145" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/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: 'F5_AFM' 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
启用 F5 BIG-IP Advanced Firewall Manager
- 登录 BIG-IP 设备管理控制台。
- 依次前往系统 > 许可。
- 验证高级防火墙管理器是否已获得许可并已启用。
- 如需启用高级防火墙管理器,请依次前往系统 > 资源 > 配置。
- 选中“配置”列中的复选框,然后从列表中选择标称。
- 点击提交。
在 F5 AFM 中配置日志记录池
- 依次前往 Local Traffic > Pools。
- 点击创建。
- 提供以下配置详细信息:
- 名称:输入日志记录池的名称(例如 logging_pool)。
- 健康状况监控器:在可用列表中,选择 TCP,然后点击 <<。
- 在资源标签页中,从节点名称列表中选择您之前创建的日志记录池。
- 在地址字段中,输入 Bindplane 代理 IP 地址。
- 在 Service Port 字段中,输入
5145
或您在 Bindplane 代理中定义的其他端口。 - 点击添加。
- 点击完成。
在 F5 AFM 中配置格式化日志目的地
- 依次前往系统 > 日志 > 配置 > 日志目的地。
- 点击创建。
- 提供以下配置详细信息:
- 名称:输入日志记录格式目标的名称(例如
Logging_Format_Destination
)。 - 说明:输入说明。
- 类型:选择远程 Syslog。
- Syslog 格式:选择 Syslog。
- 高速日志记录目的地:选择高速日志记录目的地(例如
Logging_HSL_Destination
)。
- 名称:输入日志记录格式目标的名称(例如
- 点击 Finished。
在 F5 AFM 中配置日志发布器
- 依次前往系统 > 日志 > 配置 > 日志发布者。
- 点击创建。
- 提供以下配置详细信息:
- 名称:输入发布者的名称(例如
Log_Publisher
)。 - 说明:输入说明。
- 目标:选择您在在 F5 AFM 中配置日志记录池步骤中创建的日志目标名称,然后点击 << 将项目添加到已选择列表中。
- 名称:输入发布者的名称(例如
在 F5 AFM 中配置日志记录配置文件
- 依次前往安全性 > 事件日志 > 日志记录配置文件。
- 点击创建。
- 提供以下配置详细信息:
- 名称:输入日志配置文件的名称(例如 Logging_Profile)。
- 网络防火墙:选中已启用复选框。
- 发布商:选择您之前配置的日志发布商(例如
Log_Publisher
)。 - 日志规则匹配:选中接受、丢弃和拒绝复选框。
- 记录 IP 错误:选中已启用复选框。
- 记录 TCP 错误:选中已启用复选框。
- 记录 TCP 事件:选中已启用复选框。
- 存储格式:选择字段列表。
- 分隔符:输入
,
(英文逗号)作为事件的分隔符。 - 存储选项:在可用项列表中选择所有选项,然后点击 <<。
- 在 IP 情报标签页中,选择您配置的日志发布者(例如
Log_Publisher
)。
- 点击 Finished。
在 F5 AFM 中配置虚拟服务器配置文件关联
- 依次前往 Local Traffic > Virtual Servers。
- 选择要修改的虚拟服务器。
- 前往“安全性”标签页 >“政策”。
- 在日志记录配置文件列表中,选择已启用。
- 在配置文件字段中,选择 Logging_Profile,然后点击 <<。
- 点击更新。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
acl_policy_name | security_result.detection_fields.acl_policy_name | 如果日志格式为 SYSLOG,则为 column22 的值;否则为 column13 的值 |
acl_policy_type | security_result.detection_fields.acl_policy_type | 如果日志格式为 SYSLOG,则为 column21 的值;否则为 column18 的值 |
acl_rule_name | security_result.rule_name | 如果日志格式为 SYSLOG,则为 column23 的值;否则为 column11 的值 |
acl_rule_uuid | security_result.rule_id | 来自 grok 模式的 acl_rule_uuid 字段的值 |
操作 | security_result.action | 如果 column25 的值为 Drop 、Reject 或 Block ,则为 BLOCK;否则,如果 column25 的值为 Accept 、Accept decisively 、Established 或 Allow ,则为 ALLOW |
attackID | security_result.detection_fields.attackID | 如果日志格式为不含 src_ip 的 CSV,则 column12 的值为 |
bigip_hostname | intermediary.hostname | 如果日志格式为 SYSLOG,则为 column2 的值;否则为 column3 的值 |
bigip_ip | intermediary.ip | 如果日志格式为 SYSLOG,则为 column2 的值;否则为 column1 的值 |
context_name | additional.fields.context_name.string_value | 如果日志格式为 SYSLOG,则为 column4 的值;否则,如果有 src_ip,则为 column10 的值;否则为 column5 的值 |
context_type | additional.fields.context_type.string_value | 如果日志格式为 SYSLOG,则为 column3 的值;否则,如果有 src_ip,则为 column4 的值;否则,为 column4 的值 |
dest_fqdn | additional.fields.dest_fqdn.string_value | 如果日志格式为 SYSLOG,则为 column7 的值;否则为 column13 的值 |
dest_geo | additional.fields.dest_geo.string_value | 列 14 的值 |
dest_ip | target.asset.ip、target.ip | 如果日志格式为 SYSLOG,则为 column8 的值;否则,如果存在 src_ip,则为 column6 的值;否则,为 column6 的值 |
dest_port | target.port | 如果日志格式为 SYSLOG,则为 column10 的值;否则,如果有 src_ip,则为 column8 的值;否则,为 column8 的值 |
drop_reason | security_result.summary | 如果日志格式为 SYSLOG,则为 column26 的值;否则为 column19 的值 |
eventId | additional.fields.eventId.string_value | 在 Grok 模式中捕获的值 |
flow_id | additional.fields.flow_id.string_value | 如果日志格式为 SYSLOG,则为 column29 的值;否则为 column17 的值 |
loglevel | security_result.severity | 如果来自 Grok 模式的 loglevel 字段的值为 warning 、debug 或 notice ,则为“中等”;否则,如果值为 info 或 informational ,则为“信息”;否则,如果值为 err 或 error ,则为“高”;否则,如果值为 alert 、crit 或 emer ,则为“严重” |
packetsReceived | network.received_packets | 如果日志格式为不含 src_ip 的 CSV,则为 column15 的值 |
原始事件 | target.application | 来自 Grok 模式的进程字段的值 |
protocol_number_src | network.ip_protocol | 如果日志格式为 SYSLOG,则为 column12 的值;否则为从 ip_protocol_out 变量中提取的值 |
route_domain | additional.fields.route_domain.string_value | 如果日志格式为 SYSLOG,则为 column13 的值;否则为 column9 的值 |
source_fqdn | additional.fields.source_fqdn.string_value | 如果日志格式为 SYSLOG,则为 column5 的值;否则为 column7 的值 |
src_geo | additional.fields.src_geo.string_value | column8 的值 |
src_ip | principal.asset.ip、principal.ip | 如果日志格式为 SYSLOG,则为 column6 的值;如果日志格式为不含 src_ip 的 CSV,则为 column9 的值;否则为 column5 的值 |
src_port | principal.port | 如果日志格式为 SYSLOG,则为 column9 的值;如果日志格式为不含 src_ip 的 CSV,则为 column7 的值;否则为 column7 的值 |
ts | metadata.event_timestamp | 来自 Grok 模式的 ts 字段的值 |
vlan | additional.fields.vlan.string_value | 如果日志格式为 SYSLOG,则为 column11 的值;否则为 column21 的值 |
metadata.event_type | 如果 src_ip 和 dest_ip 存在,则为 NETWORK_CONNECTION;否则,如果仅 src_ip 存在,则为 STATUS_UPDATE;否则为 GENERIC_EVENT | |
metadata.log_type | F5_AFM | |
metadata.product_name | 高级防火墙管理 | |
metadata.vendor_name | F5 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。