收集 ADVA Fiber Service Platform 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 将 ADVA Fiber Service Platform (ADVA FSP) 日志注入到 Google Security Operations。解析器从交换机和路由器 syslog 消息中提取字段,并将它们转换为键值对。然后,它会将这些提取的字段及其值映射到 Chronicle UDM 架构中的相应字段,从而丰富数据以供安全分析。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 搭载
systemd的 Windows 2012 SP2 或更高版本或 Linux 主机 - 如果在代理后面运行,请确保防火墙端口根据 Bindplane 代理要求处于开放状态
- 对 ADVA FSP 设备管理控制台的特权访问权限
获取 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文件。以下是两种可用的接收器选项;请选择与设备发送日志的方式相符的选项:- 选项 A - UDP 日志接收器(简单 UDP)
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com log_type: 'ADVA_FSP' raw_log_field: body ingestion_labels: service: pipelines: logs/adva-fsp: receivers: - udplog exporters: - chronicle/chronicle_w_labels- 选项 B - Syslog 接收器(建议用于严格的 Syslog 框架)
receivers: syslog: tcp: listen_address: "0.0.0.0:514" protocol: rfc5424 # or rfc3164 if your device uses BSD syslog exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com log_type: 'ADVA_FSP' raw_log_field: body ingestion_labels: source: 'adva-fsp' env: 'production' service: pipelines: logs/adva-fsp: receivers: - syslog 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在 ADVA FSP 上配置 Syslog 转发
- 登录 ADVA FSP 管理控制台。
- 依次前往节点 > 常规 > 控制。
- 在远程事件接收者 (SysLog) 部分,点击添加。
- 提供以下配置详细信息:
- IPv4/v6 地址:输入 Bindplane 代理 IP 地址。
- 端口:输入 Bindplane 代理端口号(例如
514)。 - 协议:根据实际的 Bindplane 代理配置,选择 UDP 或 TCP。
- 消息扩展服务:可选:点击添加用户标签,在消息中添加其他标识符。
- 点击保存以激活配置。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| ACCESSORDER | additional.fields.value.string_value | 该值取自原始日志中的 ACCESSORDER 字段。 |
| ADDRESS | principal.ip | 该值取自原始日志中的 ADDRESS 字段,并解析为 IP 地址。 |
| ADMINSTATE | additional.fields.value.string_value | 该值取自原始日志中的 ADMINSTATE 字段。 |
| AISCLIENTMDLEVEL | additional.fields.value.string_value | 该值取自原始日志中的 AISCLIENTMDLEVEL 字段。 |
| AISGENENABLED | additional.fields.value.string_value | 该值取自原始日志中的 AISGENENABLED 字段。 |
| AISPRIORITY | additional.fields.value.string_value | 该值取自原始日志中的 AISPRIORITY 字段。 |
| AISTXPERIOD | additional.fields.value.string_value | 该值取自原始日志中的 AISTXPERIOD 字段。 |
| AISTRIGGERTYPES | additional.fields.value.string_value | 该值取自原始日志中的 AISTRIGGERTYPES 字段。 |
| BUFFERSIZE | additional.fields.value.string_value | 该值取自原始日志中的 BUFFERSIZE 字段。 |
| CCIENABLED | additional.fields.value.string_value | 该值取自原始日志中的 CCIENABLED 字段。 |
| CCMINTERFACESTATUSTLVCONTROL | additional.fields.value.string_value | 该值取自原始日志中的 CCMINTERFACESTATUSTLVCONTROL 字段。 |
| CCMLTMPRIORITY | additional.fields.value.string_value | 该值取自原始日志中的 CCMLTMPRIORITY 字段。 |
| CFMTAGETHERTYPE | additional.fields.value.string_value | 该值取自原始日志中的 CFMTAGETHERTYPE 字段。 |
| CIR | additional.fields.value.string_value | 该值取自原始日志中的 CIR 字段。 |
| COS | additional.fields.value.string_value | 该值取自原始日志中的 COS 字段。 |
| CT | metadata.description | 该值取自原始日志中的 CT 字段。 |
| DESTBMAC | target.mac | 该值取自原始日志中的 DESTBMAC 字段,并解析为 MAC 地址。 |
| DHCPCIDENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPCIDENABLED 字段。 |
| DHCPENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPENABLED 字段。 |
| DHCPHOSTNAME | network.dhcp.client_hostname | 该值取自原始日志中的 DHCPHOSTNAME 字段。 |
| DHCPHOSTNAMEENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPHOSTNAMEENABLED 字段。 |
| DHCPHOSTNAMETYPE | additional.fields.value.string_value | 该值取自原始日志中的 DHCPHOSTNAMETYPE 字段。 |
| DHCPLOGSERVERENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPLOGSERVERENABLED 字段。 |
| DHCPNTPSERVERENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPNTPSERVERENABLED 字段。 |
| DHCPV6CIDENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPV6CIDENABLED 字段。 |
| DHCPV6ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 DHCPV6ENABLED 字段。 |
| DHCPV6ROLE | additional.fields.value.string_value | 该值取自原始日志中的 DHCPV6ROLE 字段。 |
| DHCPVENDORINFOTYPE | additional.fields.value.string_value | 该值取自原始日志中的 DHCPVENDORINFOTYPE 字段。 |
| DIR | additional.fields.value.string_value | 该值取自原始日志中的 DIR 字段。 |
| 方向 | network.direction | 如果原始日志中的 DIRECTION 字段为“UP”(不区分大小写),则该值设置为“OUTBOUND”;如果该字段为“DOWN”,则该值设置为“INBOUND”;否则,该值留空。 |
| ENCAPSULATIONTYPE | additional.fields.value.string_value | 该值取自原始日志中的 ENCAPSULATIONTYPE 字段。 |
| GUARANTEEDA2NBW | additional.fields.value.string_value | 该值取自原始日志中的 GUARANTEEDA2NBW 字段。 |
| HCOSMGMTENABLED | additional.fields.value.string_value | 该值取自原始日志中的 HCOSMGMTENABLED 字段。 |
| INT | additional.fields.value.string_value | 该值取自原始日志中的 INT 字段。 |
| IPMODE | additional.fields.value.string_value | 该值取自原始日志中的 IPMODE 字段。 |
| IPV6ADDR | principal.ip | 该值取自原始日志中的 IPV6ADDR 字段,并解析为 IP 地址。 |
| IPV6ADDRPREFIXLENGTH | additional.fields.value.string_value | 该值取自原始日志中的 IPV6ADDRPREFIXLENGTH 字段。 |
| IPV6MTU | additional.fields.value.string_value | 该值取自原始日志中的 IPV6MTU 字段。 |
| ITAG | additional.fields.value.string_value | 该值取自原始日志中的 ITAG 字段。 |
| ITAGENABLED | additional.fields.value.string_value | 该值取自原始日志中的 ITAGENABLED 字段。 |
| LBMTXDESTTYPE | additional.fields.value.string_value | 该值取自原始日志中的 LBMTXDESTTYPE 字段。 |
| LBMTXNUMMSGS | additional.fields.value.string_value | 该值取自原始日志中的 LBMTXNUMMSGS 字段。 |
| LBMTXVLANDROPENABLE | additional.fields.value.string_value | 该值取自原始日志中的 LBMTXVLANDROPENABLE 字段。 |
| LBMTXVLANPRIORITY | additional.fields.value.string_value | 该值取自原始日志中的 LBMTXVLANPRIORITY 字段。 |
| LLRESPONDERENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LLRESPONDERENABLED 字段。 |
| LLVIDLIST | additional.fields.value.string_value | 该值取自原始日志中的 LLVIDLIST 字段。 |
| LMDUALENDEDCOUNTALLPRIOS | additional.fields.value.string_value | 该值取自原始日志中的 LMDUALENDEDCOUNTALLPRIOS 字段。 |
| LMINPROFILEONLY | additional.fields.value.string_value | 该值取自原始日志中的 LMINPROFILEONLY 字段。 |
| LMRXCOUNTALLPRIOS | additional.fields.value.string_value | 该值取自原始日志中的 LMRXCOUNTALLPRIOS 字段。 |
| LMTXCOUNTALLPRIOS | additional.fields.value.string_value | 该值取自原始日志中的 LMTXCOUNTALLPRIOS 字段。 |
| LOC | additional.fields.value.string_value | 该值取自原始日志中的 LOC 字段。 |
| LOCN | additional.fields.value.string_value | 该值取自原始日志中的 LOCN 字段。 |
| LOGINTIMEOUT | additional.fields.value.string_value | 该值取自原始日志中的 LOGINTIMEOUT 字段。 |
| LOOPBACKBLOCKINGENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKBLOCKINGENABLED 字段。 |
| LOOPBACKCONFIG | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKCONFIG 字段。 |
| LOOPBACKDESTMAC | target.mac | 该值取自原始日志中的 LOOPBACKDESTMAC 字段,并解析为 MAC 地址。 |
| LOOPBACKDESTMACCONTROL | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKDESTMACCONTROL 字段。 |
| LOOPBACKINNERVLAN1 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKINNERVLAN1 字段。 |
| LOOPBACKINNERVLAN1ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKINNERVLAN1ENABLED 字段。 |
| LOOPBACKINNERVLAN2 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKINNERVLAN2 字段。 |
| LOOPBACKINNERVLAN2ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKINNERVLAN2ENABLED 字段。 |
| LOOPBACKINNERVLAN3 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKINNERVLAN3 字段。 |
| LOOPBACKINNERVLAN3ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKINNERVLAN3ENABLED 字段。 |
| LOOPBACKOUTERITAG1 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERITAG1 字段。 |
| LOOPBACKOUTERITAG1ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERITAG1ENABLED 字段。 |
| LOOPBACKOUTERITAG2 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERITAG2 字段。 |
| LOOPBACKOUTERITAG2ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERITAG2ENABLED 字段。 |
| LOOPBACKOUTERITAG3 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERITAG3 字段。 |
| LOOPBACKOUTERITAG3ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERITAG3ENABLED 字段。 |
| LOOPBACKOUTERVLAN1 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERVLAN1 字段。 |
| LOOPBACKOUTERVLAN1ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERVLAN1ENABLED 字段。 |
| LOOPBACKOUTERVLAN2 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERVLAN2 字段。 |
| LOOPBACKOUTERVLAN2ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERVLAN2ENABLED 字段。 |
| LOOPBACKOUTERVLAN3 | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERVLAN3 字段。 |
| LOOPBACKOUTERVLAN3ENABLED | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKOUTERVLAN3ENABLED 字段。 |
| LOOPBACKSOURCEMAC | principal.mac | 该值取自原始日志中的 LOOPBACKSOURCEMAC 字段,并解析为 MAC 地址。 |
| LOOPBACKSWAPSADA | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKSWAPSADA 字段。 |
| LOOPBACKTIMER | additional.fields.value.string_value | 该值取自原始日志中的 LOOPBACKTIMER 字段。 |
| LOWESTPRIODEFECT | additional.fields.value.string_value | 该值取自原始日志中的 LOWESTPRIODEFECT 字段。 |
| LTMTXDESTTYPE | additional.fields.value.string_value | 该值取自原始日志中的 LTMTXDESTTYPE 字段。 |
| LTMTXEGRESSID | metadata.product_log_id | 该值取自原始日志中的 LTMTXEGRESSID 字段。 |
| LTMTXFLAGS | additional.fields.value.string_value | 该值取自原始日志中的 LTMTXFLAGS 字段。 |
| LTMTXTTL | additional.fields.value.string_value | 该值取自原始日志中的 LTMTXTTL 字段。 |
| MT | additional.fields.value.string_value | 该值取自原始日志中的 MT 字段。 |
| MAXIMUMA2NBW | additional.fields.value.string_value | 该值取自原始日志中的 MAXIMUMA2NBW 字段。 |
| MVAL | additional.fields.value.string_value | 该值取自原始日志中的 MVAL 字段。 |
| 名称 | additional.fields.value.string_value | 该值取自原始日志中的 NAME 字段。 |
| NC | additional.fields.value.string_value | 该值取自原始日志中的 NC 字段。 |
| PORTEID | additional.fields.value.string_value | 该值取自原始日志中的 PORTEID 字段。 |
| PORTLLENABLED | additional.fields.value.string_value | 该值取自原始日志中的 PORTLLENABLED 字段。 |
| PRIMARYSERVER | target.ip | 该值取自原始日志中的 PRIMARYSERVER 字段,并解析为 IP 地址。 |
| PRIMARYVID | additional.fields.value.string_value | 该值取自原始日志中的 PRIMARYVID 字段。 |
| QUEUEPROFILEID | additional.fields.value.string_value | 该值取自原始日志中的 QUEUEPROFILEID 字段。 |
| RXSHAPEREID | additional.fields.value.string_value | 该值取自原始日志中的 RXSHAPEREID 字段。 |
| SATRESPONDENABLED | additional.fields.value.string_value | 该值取自原始日志中的 SATRESPONDENABLED 字段。 |
| SE | additional.fields.value.string_value | 该值取自原始日志中的 SE 字段。 |
| SHAREDVIM | additional.fields.value.string_value | 该值取自原始日志中的 SHAREDVIM 字段。 |
| SVLANENABLED | additional.fields.value.string_value | 该值取自原始日志中的 SVLANENABLED 字段。 |
| SVLANID | additional.fields.value.string_value | 该值取自原始日志中的 SVLANID 字段。 |
| SYSLOCATION | principal.location.country_or_region | 该值取自原始日志中的 SYSLOCATION 字段。 |
| THVAL | additional.fields.value.string_value | 该值取自原始日志中的 THVAL 字段。 |
| 类型 | additional.fields.value.string_value | 该值取自原始日志中的 TYPE 字段。 |
| USERACCESSTYPE | additional.fields.value.string_value | 该值取自原始日志中的 USERACCESSTYPE 字段。 |
| USERAUTHKEY | additional.fields.value.string_value | 该值取自原始日志中的 USERAUTHKEY 字段。 |
| USERAUTHKEYLOCAL | additional.fields.value.string_value | 该值取自原始日志中的 USERAUTHKEYLOCAL 字段。 |
| USERAUTHPROTOCOL | additional.fields.value.string_value | 该值取自原始日志中的 USERAUTHPROTOCOL 字段。 |
| USERENGINEID | additional.fields.value.string_value | 该值取自原始日志中的 USERENGINEID 字段。 |
| USERKEYSLOCAL | additional.fields.value.string_value | 该值取自原始日志中的 USERKEYSLOCAL 字段。 |
| 用户名 | principal.user.userid | 该值取自原始日志中的 USERNAME 字段。 |
| USERPRIVKEY | additional.fields.value.string_value | 该值取自原始日志中的 USERPRIVKEY 字段。 |
| USERPRIVKEYLOCAL | additional.fields.value.string_value | 该值取自原始日志中的 USERPRIVKEYLOCAL 字段。 |
| USERPRIVPROTOCOL | additional.fields.value.string_value | 该值取自原始日志中的 USERPRIVPROTOCOL 字段。 |
| USERSECURITYLEVEL | additional.fields.value.string_value | 该值取自原始日志中的 USERSECURITYLEVEL 字段。 |
| USERSECURITYNAME | principal.user.user_display_name | 该值取自原始日志中的 USERSECURITYNAME 字段。 |
| 应用 | principal.application | 该值取自 grok 解析器提取的应用字段。 |
| 说明 | security_result.description | 该值取自 grok 解析器提取的说明字段。 |
| metadata.description | 如果原始日志中的 CT 字段为“备用 NTP 服务器失败”,则该值设置为“备用 NTP 服务器失败”。 | |
| metadata.event_timestamp.seconds | 该值取自 grok 解析器提取的时间戳字段,并转换为纪元秒数。 | |
| metadata.event_type | 该值根据以下逻辑设置: - NETWORK_DHCP(如果 network_dhcp_present 为 true,并且 principal_present 或 target_present 为 true)。 - 如果 target_present 和 principal_present 均为 true,则为 NETWORK_CONNECTION。 - 如果 user_present 为 true,则为 USER_RESOURCE_ACCESS。 - 如果 principal_present 为 true,则为 STATUS_UPDATE。否则为 - GENERIC_EVENT。 |
|
| metadata.product_log_id | 该值取自原始日志中的 LTMTXEGRESSID 字段。 | |
| metadata.product_name | 该值设置为“ADVA_FSP”。 | |
| metadata.vendor_name | 该值设置为“ADVA_FSP”。 | |
| network.application_protocol | 如果 network_dhcp_present 为 true,并且 principal_present 或 target_present 为 true,则该值设置为“DHCP”。 | |
| principal.hostname | 该值取自 grok 解析器提取的 principal_hostname 字段,并移除了下划线。 | |
| principal.ip | 该值取自原始日志中的 IPADDR 字段,并解析为 IP 地址。 | |
| timestamp.seconds | 该值取自 grok 解析器提取的时间戳字段,并转换为纪元秒数。 |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。