收集 F5 AFM 日志
解析器版本:23.0
本文档介绍了如何使用 Bindplane 代理将 F5 Advanced Firewall Management (AFM) 日志注入到 Google Security Operations。
F5 BIG-IP AFM 是一种网络防火墙模块,可针对防火墙规则操作(接受、丢弃、拒绝)、IP 情报事件和 TCP 错误生成 syslog 消息。解析器从 CSV 格式或 syslog 格式的日志中提取字段,并将其映射到统一数据模型 (UDM)。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - Bindplane 代理与 F5 BIG-IP 设备之间的网络连接
- 如果在代理后面运行,请确保防火墙端口已根据 Bindplane 代理要求打开
- 对 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等待安装完成。
运行以下命令,验证安装是否成功:
sc query observiq-otel-collector该服务应显示为 正在运行。
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令,验证安装是否成功:
sudo systemctl status observiq-otel-collector该服务应显示为有效(正在运行)。
其他安装资源
如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps
找到配置文件
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: tcplog: listen_address: "0.0.0.0:5145" exporters: chronicle/f5_afm: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: F5_AFM raw_log_field: body service: pipelines: logs/f5_afm_to_chronicle: receivers: - tcplog exporters: - chronicle/f5_afm
配置参数
替换以下占位符:
接收器配置:
listen_address:要监听的 IP 地址和端口:0.0.0.0侦听所有接口(推荐)- 端口
5145用于 F5 AFM 高速日志记录(请根据您的 F5 配置进行调整)
导出器配置:
creds_file_path:提取身份验证文件的完整路径:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:从 Google SecOps 控制台复制的客户 IDendpoint:区域端点网址:- 美国:
malachiteingestion-pa.googleapis.com - 欧洲:
europe-malachiteingestion-pa.googleapis.com - 亚洲:
asia-southeast1-malachiteingestion-pa.googleapis.com - 如需查看完整列表,请参阅区域级端点
- 美国:
保存配置文件
- 修改后,保存文件:
- Linux:依次按
Ctrl+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
- Linux:依次按
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请选择以下选项之一:
以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击并选择重新启动。
验证服务是否正在运行:
sc query observiq-otel-collector检查日志是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- 按
启用 F5 BIG-IP Advanced Firewall Manager
- 登录 BIG-IP 设备管理控制台。
- 依次前往系统 > 许可。
- 验证高级防火墙管理器是否已获得许可并已启用。
- 如需启用高级防火墙管理器,请依次前往系统 > 资源 > 配置。
- 选中“配置”列中的复选框,然后从列表中选择标称。
- 点击提交。
在 F5 AFM 中配置日志记录池
- 前往本地流量> 池。
- 点击创建。
- 提供以下配置详细信息:
- 名称:输入日志记录池的名称(例如 logging_pool)。
- 健康状况监控器:在可用列表中,选择 TCP,然后点击 <<。
- 在资源标签页中,从节点名称列表中选择您之前创建的日志记录池。
- 在地址字段中,输入 Bindplane 代理 IP 地址。
- 在 Service Port 字段中,输入
5145或您在 Bindplane 代理中定义的其他端口。 - 点击 Add(添加)。
- 点击完成。
在 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 中配置虚拟服务器配置文件关联
- 前往本地流量> 虚拟服务器。
- 选择要修改的虚拟服务器。
- 前往“安全性”标签页 >“政策”。
- 从日志配置文件列表中,选择已启用。
- 在配置文件字段中,选择 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 | |
partition |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
level |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
tty |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
attempts |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
start |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
end |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
prin_ip |
event.idm.read_only_udm.principal.ip和event.idm.read_only_udm.principal.asset.ip之间 |
从变更日志映射 |
internal_tag |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
src_zone |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
dest_zone |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
translated_dest_ip |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
translated_dest_port |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
translated_source_ip |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
translated_source_port |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
syslog_reporter_host |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
sa_translation_pool |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
sa_translation_type |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
translated_route_domain |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
send_to_vs |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
src_zone |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
dest_zone |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
acl_policy_name |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
acl_policy_type |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
chronicle_log_type |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
chronicle_namespace |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
flow_id |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
vlan |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
route_domain |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
partition_name |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
source_ipint_categories |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
src_geo |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
source_fqdn |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
dest_ipint_categories |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
dst_geo |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
dest_fqdn |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
acl_rule_name |
event.idm.read_only_udm.security_result.rule_name |
从变更日志映射 |
acl_rule_id |
event.idm.read_only_udm.security_result.rule_id |
从变更日志映射 |
action |
event.idm.read_only_udm.security_result.action |
从变更日志映射 |
bigip_mgmt_ip |
event.idm.read_only_udm.intermediary.ip |
从变更日志映射 |
context_name |
event.idm.read_only_udm.target.resource.name |
从变更日志映射 |
context_type |
event.idm.read_only_udm.target.resource.type |
从变更日志映射 |
date_time |
event.idm.read_only_udm.metadata.event_timestamp |
从变更日志映射 |
dest_ip |
event.idm.read_only_udm.target.ip和event.idm.read_only_udm.target.asset.ip之间 |
从变更日志映射 |
net.peer.ip |
event.idm.read_only_udm.target.ip和event.idm.read_only_udm.target.asset.ip之间 |
从变更日志映射 |
dest_port |
event.idm.read_only_udm.target.port |
从变更日志映射 |
net.peer.port |
event.idm.read_only_udm.target.port |
从变更日志映射 |
device_version |
event.idm.read_only_udm.metadata.product_version |
从变更日志映射 |
drop_reason |
event.idm.read_only_udm.security_result.summary |
从变更日志映射 |
hostname |
event.idm.read_only_udm.principal.hostname和event.idm.read_only_udm.principal.asset.hostname之间 |
从变更日志映射 |
ip_protocol |
event.idm.read_only_udm.network.ip_protocol |
从变更日志映射 |
source_ip |
event.idm.read_only_udm.principal.ip和event.idm.read_only_udm.principal.asset.ip之间 |
从变更日志映射 |
net.host.ip |
event.idm.read_only_udm.principal.ip和event.idm.read_only_udm.principal.asset.ip之间 |
从变更日志映射 |
source_port |
event.idm.read_only_udm.principal.port |
从变更日志映射 |
net.host.port |
event.idm.read_only_udm.principal.port |
从变更日志映射 |
errdefs_msg_name |
event.idm.read_only_udm.metadata.product_event_type |
从变更日志映射 |
errdefs_msgno |
event.idm.read_only_udm.metadata.product_log_id |
从变更日志映射 |
source_user |
event.idm.read_only_udm.principal.user.userid |
从变更日志映射 |
source_user_group |
event.idm.read_only_udm.principal.user.group_identifiers |
从变更日志映射 |
severity |
event.idm.read_only_udm.security_result.severity_details |
从变更日志映射 |
dvchost |
event.idm.read_only_udm.intermediary.hostname和event.idm.read_only_udm.intermediary.asset.hostname之间 |
从变更日志映射 |
dvc |
event.idm.read_only_udm.intermediary.ip和event.idm.read_only_udm.intermediary.asset.ip之间 |
从变更日志映射 |
c6a2 |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
F5SrcZone |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
F5SrcFqdn |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
F5SrcUser |
event.idm.read_only_udm.principal.user.attribute.labels |
从变更日志映射 |
c6a3 |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
F5DstZone |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
F5DstVlan |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
F5DstFqdn |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
F5SendToVs |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
F5SrcIpiCategories |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
F5DstIpiCategories |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
module |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
tid |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
cpu |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
cmd_line |
event.idm.read_only_udm.target.process.command_line |
从变更日志映射 |
msg_data |
event.idm.read_only_udm.security_result.summary |
从变更日志映射 |
pid |
event.idm.read_only_udm.principal.process.pid |
从变更日志映射 |
user |
event.idm.read_only_udm.principal.user.userid |
从变更日志映射 |
folder_path |
event.idm.read_only_udm.principal.file.full_path |
从变更日志映射 |
status |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
cmd_data |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
target_ip |
event.idm.read_only_udm.target.ip和event.idm.read_only_udm.target.asset.ip之间 |
从变更日志映射 |
desc |
metadata.description |
从变更日志映射 |
prin_port |
principal.port |
从变更日志映射 |
target_port |
target.port |
从变更日志映射 |
ts2 |
metadata.event_timestamp |
从变更日志映射 |
tls_ver |
network.tls.version |
从变更日志映射 |
cipher |
network.tls.cipher |
从变更日志映射 |
prod_event_type |
metadata.product_event_type |
从变更日志映射 |
path |
target.url |
从变更日志映射 |
response_size |
network.sent_bytes |
从变更日志映射 |
received_size |
network.received_bytes |
从变更日志映射 |
usr |
principal.user.userid |
从变更日志映射 |
schema_version |
target.resource.attribute.labels |
从变更日志映射 |
severity_info |
security_result.severity_details |
从变更日志映射 |
target_pid |
target.process.pid |
从变更日志映射 |
additional1 |
additional.fields |
从变更日志映射 |
dvc |
intermediary.hostname |
从变更日志映射 |
metadata.event_type |
USER_UNCATEGORIZED |
从变更日志映射 |
prin_ip |
principal.ip |
从变更日志映射 |
F5FlowID |
additional.fields |
从变更日志映射 |
F5TranslatedVlan |
additional.fields |
从变更日志映射 |
F5SrcTranslationType |
additional.fields |
从变更日志映射 |
F5SrcTranslationPool |
additional.fields |
从变更日志映射 |
F5SrcGeo |
additional.fields |
从变更日志映射 |
F5DstGeo |
additional.fields |
从变更日志映射 |
F5RouteDomain |
additional.fields |
从变更日志映射 |
Column12 |
security_result.detection_fields |
从变更日志映射 |
Column14 |
security_result.action |
从变更日志映射 |