收集 F5 BIG-IP APM 日志
本文档介绍了如何使用 Google Security Operations 转发器收集 F5 BIG-IP Access Policy Manager (APM) 日志。
如需了解详情,请参阅将数据注入 Google Security Operations。
注入标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 F5_BIGIP_APM
注入标签的解析器。
配置 F5 BIG-IP APM
- 使用管理员凭据登录 BIG-IP 配置实用程序门户。
- 依次选择主菜单 > 系统 > 日志 > 配置 > 远程日志记录。
在属性部分中,执行以下操作:
- 在远程 IP 字段中,输入 Google Security Operations 转发器的 IP 地址。
- 在远程端口字段中,输入一个高端口号。
点击添加。
点击更新。
对于来自 APM 的日志,仅支持 Berkeley Software Distribution (BSD) syslog 格式。
根据 APM 中的签名,收集器仅处理 APM 日志。 F5 BIG-IP APM 事件收集器还支持来自 LTM 11.6 到 12.1.1 设备的线程化日志。
如果您使用的是 iRule,请使用建议的 iRule 格式。Google Security Operations 仅支持以下 iRule 格式:
# log_header_requests ################################################################################### ################################################# # Purpose: logs header information to Local Traffic log # # # # Update-Log Date By Description # Created 02/07/2020 E01961 Initial implementation # # ################################################################################### ################################################ when HTTP_REQUEST { set LogString "Client [IP::client_addr]:[TCP::client_port] -> [HTTP::host] [HTTP::uri]" log local5. "=================" log local5. "$LogString (request)" foreach aHeader [HTTP::header names] { log local5. "$aHeader: [HTTP::header value $aHeader]" } # set UserID [URI::query "?[HTTP::payload]" "UserID"] # log local0. "User $UserID attempted login from [IP::client_addr] and referer: [HTTP::header "Referer"]" # log local0. "=============================================" } when HTTP_RESPONSE { log local5. "==================" log local5. "$LogString (response) - status: [HTTP::status]" foreach aHeader [HTTP::header names] { log local5. "$aHeader: [HTTP::header value $aHeader]" } # log local0. "============================================="
配置 F5 BIG-IP DNS
如需配置 F5 BIG-IP DNS,请执行以下任务:
创建远程日志记录服务器池
- 在主标签页上,依次选择 DNS > 交付 > 负载均衡 > 池或本地流量 > 池。
- 在随即显示的池列表窗口中,点击创建。
- 在随即显示的新池窗口中,于名称字段中为池提供一个唯一名称。
- 在新成员部分,添加您要纳入池中的每个远程日志记录服务器的 IP 地址:
- 在地址字段中,输入 Google Security Operations 转发器 IP 地址,或从节点列表中选择一个节点地址。
- 在服务端口字段中,输入服务编号或从列表中选择服务名称。确保您已配置正确的远程日志记录端口。
- 点击添加,然后点击完成。
创建远程高速日志目标位置
- 在主标签页中,依次选择系统 > 日志 > 配置 > 日志目的地。
- 在随即显示的日志目标位置窗口中,点击创建。
- 在名称字段中,为此目的地提供一个唯一且可识别的名称。
- 在类型列表中,选择远程高速日志。
- 在池名称列表中,选择您希望 BIG-IP 系统向其发送日志消息的远程日志服务器池。
- 在协议列表中,选择高速日志记录池成员使用的协议。
- 点击 Finished。
创建格式化的远程高速日志目标位置
- 在主标签页上,依次选择系统 > 日志 > 配置 > 日志目的地。
- 在随即显示的日志目标位置窗口中,点击创建。
- 在名称字段中,为此目的地提供一个唯一且可识别的名称。
- 在类型列表中,选择格式化日志记录目标,即远程 syslog。 现在,BIG-IP 系统已配置为向日志服务器发送格式化的文本字符串。
- 在类型列表中,选择日志的格式。
- 在转发到标签页上,选择高速日志目标位置列表,然后选择指向远程 syslog 服务器池的目标位置,您希望 BIG-IP 系统将日志消息发送到该服务器池。
- 点击 Finished。
创建发布商
- 在主标签页中,依次选择系统 > 日志 > 配置 > 日志发布者。
- 在随即显示的日志发布者窗口中,点击创建。
- 在名称字段中,为发布商提供一个可唯一标识的名称。
- 在日志发布者列表中,从可用列表中选择之前创建的目标位置。
- 如需将目的地移至所选列表,请点击 << 移动。
- 如果您使用的是格式化目标位置,请选择与您的日志服务器匹配的新建目标位置,例如远程 syslog、Splunk 或 ArcSight。
- 点击 Finished。
创建自定义 DNS 日志记录配置文件
- 在主标签页中,依次选择 DNS > 传送 > 配置文件 > 其他 DNS 日志记录或本地流量 > 配置文件 > 其他 > DNS 日志记录。
- 在随即显示的 DNS 日志记录配置文件列表窗口中,点击创建。
- 在名称字段中,为配置文件提供一个唯一名称。
- 在日志发布者列表中,选择 BIG-IP 系统将 DNS 日志条目发送到的目标位置。
- 如果您希望 BIG-IP 系统:
- 如需记录所有 DNS 查询,请在 Log queries(记录查询)设置中,确保已选中启用复选框。
- 如需记录所有 DNS 响应,请在记录响应设置中选中已启用的复选框。
- 如需在日志消息中包含客户端发送的查询 ID,请在包含查询 ID 设置中选中已启用的复选框。
- 点击 Finished。
向监听器添加 DNS 日志记录配置文件
- 在主标签页中,依次选择 DNS > 传送 > 监听器 > DNS 监听器。
- 在服务部分中,从 DNS 配置文件列表中选择您之前配置的 DNS 配置文件。
- 点击更新。
配置 Google Security Operations 转发器以注入 F5 BIG-IP APM 日志
- 依次前往 SIEM 设置 > 转发器。
- 点击添加新转发器。
- 在 Forwarder Name(转发器名称)字段中,输入转发器的唯一名称。
- 点击提交。系统会添加转发器,并显示添加收集器配置窗口。
- 在收集器名称字段中,输入一个名称。
- 选择 F5 BIGIP Access Policy Manager 作为日志类型。
- 选择 Syslog 作为收集器类型。
- 配置以下必需的输入参数:
- 协议:指定协议。
- 地址:指定收集器所在的 syslog 数据目标 IP 地址或主机名。
- 端口:指定收集器所在的并监听 syslog 数据的目标端口。
- 点击提交。
如需详细了解 Google Security Operations 转发器,请参阅通过 Google Security Operations 界面管理转发器配置。
如果您在创建转发器时遇到问题,请与 Google Security Operations 支持团队联系。
字段映射参考
此 F5 BIG-IP APM 解析器从 syslog 消息中提取字段,并根据应用来源(tmsh、tmm、apmd、httpd 或其他)对这些字段进行分类。然后,它会将这些提取的字段映射到 UDM,处理各种日志格式,并使用严重程度、位置和用户信息等元数据来丰富数据。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
应用 | principal.application | 该值取自 grok 过滤器提取的 application 字段。 |
bytes_in | network.received_bytes | 该值取自 grok 过滤器提取的 bytes_in 字段,并转换为无符号整数。 |
bytes_out | network.sent_bytes | 该值取自 grok 过滤器提取的 bytes_out 字段,并转换为无符号整数。 |
cmd_data | principal.process.command_line | 该值取自 kv 过滤器提取的 cmd_data 字段。 |
destination_ip | target.ip | 该值取自 grok 过滤器提取的 destination_ip 字段。 |
destination_port | target.port | 该值取自 grok 过滤器提取的 destination_port 字段,并转换为整数。 |
文件夹 | principal.process.file.full_path | 该值取自 kv 过滤器提取的 folder 字段。 |
geoCountry | principal.location.country_or_region | 该值取自 grok 过滤器提取的 geoCountry 字段。 |
geoState | principal.location.state | 该值取自 grok 过滤器提取的 geoState 字段。 |
inner_msg | security_result.description | 如果没有其他具体说明,则该值取自 grok 过滤器提取的 inner_msg 字段。 |
ip_protocol | network.ip_protocol | 该值取自 grok 过滤器提取的 ip_protocol 字段。 |
principal_hostname | principal.hostname | 该值取自 grok 过滤器提取的 principal_hostname 字段。 |
principal_ip | principal.ip | 该值取自 grok 过滤器提取的 principal_ip 字段。 |
process_id | principal.process.pid | 该值取自 grok 过滤器提取的 process_id 字段。 |
角色 | user_role.name | 该值取自 grok 过滤器提取的 role 字段。如果 role 字段包含“admin”(不区分大小写),则该值设置为“ADMINISTRATOR”。 |
和程度上减少 | security_result.severity_details | 此处存储来自 syslog 消息的原始值。该值是使用条件逻辑从 severity 字段派生的:CRITICAL -> CRITICAL ERR -> ERROR ALERT、EMERGENCY -> HIGH INFO、NOTICE -> INFORMATIONAL DEBUG -> LOW WARN -> MEDIUM |
source_ip | principal.ip | 该值取自 grok 过滤器提取的 source_ip 字段。 |
source_port | principal.port | 该值取自 grok 过滤器提取的 source_port 字段,并转换为整数。 |
状态 | security_result.summary | 该值取自 kv 过滤器提取的 status 字段。 |
时间戳 | metadata.event_timestamp, timestamp | 该值取自 grok 过滤器提取的 timestamp 字段,并解析为时间戳对象。顶级 event 对象中的 timestamp 字段也会获得此值。 |
用户 | principal.user.userid | 该值取自 grok 过滤器提取的 user 字段,并移除了“id”或“ID”前缀。该值根据是否存在其他字段派生得出:如果存在 user :USER_UNCATEGORIZED 如果存在 source_ip 和 destination_ip :NETWORK_CONNECTION 如果存在 principal_ip 或 principal_hostname :STATUS_UPDATE 否则:GENERIC_EVENT 硬编码为“BIGIP_APM”。硬编码为“F5”。如果 result 字段为“failed”,则值设置为“BLOCK”。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。