收集 Nokia 路由器日志

支持的平台:

本文档介绍了如何使用 Bindplane 代理将 Nokia 路由器日志收集到 Google 安全运营团队。解析器首先使用 Grok 模式提取时间戳、IP 地址、主机名和事件详情等字段。然后,它会将这些提取的字段映射到 Google SecOps UDM 架构中的相应字段,执行数据转换,并根据特定事件类型和条件使用其他上下文丰富数据。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您使用的是 Windows 2016 或更高版本,或者使用了带有 systemd 的 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口处于打开状态。
  • 确保您拥有对 Nokia 路由器的特权访问权限。

获取 Google SecOps 提取身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次选择 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 Bindplane 代理

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

  • 如需了解其他安装选项,请参阅此安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    1. 找到 config.yaml 文件。通常,在 Linux 上,该目录位于 /etc/bindplane-agent/ 目录中;在 Windows 上,该目录位于安装目录中。
    2. 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    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: NOKIA_ROUTER
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 根据基础架构中的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. 获取 Google SecOps 提取身份验证文件部分中,将 /path/to/ingestion-authentication-file.json 更新为身份验证文件的保存路径。

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart bindplane-agent
    
  • 如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

在 Nokia 服务路由器上配置 Syslog

  1. 进入配置模式:

    config# log
    
  2. 定义 Syslog 目的地:

    config>log# syslog 1
    
  3. 配置 Syslog 参数:

    config>log>syslog# address <syslog-server-ip>
    config>log>syslog# port <port-number>
    config>log>syslog# facility local0
    config>log>syslog# level info
    config>log>syslog# log-prefix "Nokia-SR"
    config>log>syslog# description "Google SecOps syslog server"
    
    • <syslog-server-ip> 替换为 Bindplane 代理的 IP 地址,并将 <port-number> 替换为相应的端口(例如,对于 UDP,为 514)。
  4. 将 Syslog 目标应用于日志文件:

    config>log# log-id 1
    config>log>log-id# to syslog 1
    
  5. 启用日志文件:

    config>log>log-id# no shutdown
    
  6. 保存配置:

    config>log>log-id# exit
    config>log# save
    

完整配置示例:

```bash
config# log
config>log# syslog 1
config>log>syslog# address 192.168.1.100
config>log>syslog# port 514
config>log>syslog# facility local0
config>log>syslog# level info
config>log>syslog# log-prefix "Nokia-SR"
config>log>syslog# description "Google SecOps syslog server"
config>log>syslog# exit
config>log# log-id 1
config>log>log-id# to syslog 1
config>log>log-id# no shutdown
config>log>log-id# exit
config>log# save
```

UDM 映射表

日志字段 UDM 映射 逻辑
%{SYSLOGTIMESTAMP:date_time} metadata.event_timestamp 从原始日志中提取并转换为时间戳。
%{IP:src_ip} principal.ip 从原始日志中提取。
%{HOSTNAME:host_name} principal.hostname 从原始日志中提取。
%{INT:sequence_id} metadata.product_log_id 从原始日志中提取。
%{DATA:router_name} metadata.product_name 从原始日志中提取。
%{DATA:application} target.application 从原始日志中提取。
%{WORD:severity} security_result.severity 根据以下逻辑从原始日志严重级别映射而来:
- CLEARED、INFO -> INFORMATIONAL
- MINOR -> ERROR
- WARNING -> LOW
- MAJOR -> HIGH
- CRITICAL -> CRITICAL
%{DATA:event_name} metadata.product_event_type 从原始日志中提取。
%{INT:event_id} additional.fields.value.string_value 从原始日志中提取,并放置在 additional fields 中,键为 Event Id
%{GREEDYDATA:message1} 用于根据 event_name 提取各种字段。请参阅下文,了解特定字段的逻辑。
Group %{NOTSPACE:group_id} target.group.product_object_id event_name 与 BGP 事件相关时,从 message1 中提取。
%{WORD} %{IP:dest_ip} target.ip event_name 与 BGP 事件相关时,从 message1 中提取。
%{GREEDYDATA:desc} security_result.description message1 中提取,适用于各种 event_name 场景。
SAP %{DATA:sap_id} additional.fields.value.string_value event_namesapStatusChanged 时从 message1 中提取,并放置在 additional fields 中,键为 SAP Id
in service %{INT:service_id} additional.fields.value.string_value event_namesapStatusChanged 时从 message1 中提取,并放置在 additional fields 中,键为 Service Id
\\(customer %{INT:customer_id}\\) additional.fields.value.string_value event_namesapStatusChanged 时从 message1 中提取,并放置在 additional fields 中,键为 Customer Id
admin=%{WORD:admin_status} additional.fields.value.string_value event_namesapStatusChanged 时从 message1 中提取,并放置在 additional fields 中,键为 Admin Status
oper=%{WORD:operation_status} additional.fields.value.string_value event_namesapStatusChanged 时从 message1 中提取,并放置在 additional fields 中,键为 Operation Status
flags=%{WORD:flag} additional.fields.value.string_value event_namesapStatusChanged 时从 message1 中提取,并放置在 additional fields 中,键为 Flag
with MI:SCI %{DATA:mi_sci} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时从 message1 中提取,并放置在 additional fields 中,键为 MI:SCI
on port %{DATA:port_id} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时从 message1 中提取,并放置在 additional fields 中,键为 Port Id
sub-port %{INT:sub_port_id} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时从 message1 中提取,并放置在 additional fields 中,键为 Sub-port Id
CA %{INT:ca} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时从 message1 中提取,并放置在 additional fields 中,键为 CA
EAPOL-destination %{MAC:dest_mac} target.mac event_nametmnxMkaSessionEstablished 时,从 message1 中提取。
local port-id %{DATA:local_port_id} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 local_port_idtarget.resource.attribute.labels 中。
dest-mac-type %{NOTSPACE:mac_type} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 mac_typetarget.resource.attribute.labels 中。
remote system name %{HOSTNAME:dest_host} target.hostname 针对特定 event_name 值从 message1 中提取。
remote chassis-id %{DATA:dest_mac} target.mac 针对特定 event_name 值从 message1 中提取。
remote port-id %{DATA:port_id} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 port_idtarget.resource.attribute.labels 中。
remote-index %{INT:remote_index} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 remote_indextarget.resource.attribute.labels 中。
remote management address %{IP:dest_ip} target.ip 针对特定 event_name 值从 message1 中提取。
advRtr:%{HOSTNAME:dest_host}%{GREEDYDATA}, ip@:%{IP:dest_ip}/%{INT:dest_port} target.hostnametarget.iptarget.port 针对特定 event_name 值从 message1 中提取。
SID:%{INT:sid} network.session_id 针对特定 event_name 值从 message1 中提取。
level:%{DATA:level} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 leveltarget.resource.attribute.labels 中。
mtid:%{INT:mtid} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 mtidtarget.resource.attribute.labels 中。
type:%{WORD:type} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 typetarget.resource.attribute.labels 中。
flags:%{WORD:flag} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 flagtarget.resource.attribute.labels 中。
, algo:%{INT:algo} target.resource.attribute.labels.value message1 中提取特定 event_name 值,并放置在键为 algotarget.resource.attribute.labels 中。
Description:%{GREEDYDATA:desc}. security_result.description event_namemafEntryMatch 时,从 message1 中提取。
SrcIP principal.ip event_namemafEntryMatch 时,从 kv_data 字段中提取。
SrcIP: %{INT:src_port} principal.port event_namemafEntryMatch 时,从 kv_data 字段中提取。
DstIP target.ip event_namemafEntryMatch 时,从 kv_data 字段中提取。
DstIP: %{INT:dest_port} target.port event_namemafEntryMatch 时,从 kv_data 字段中提取。
Protocol network.ip_protocol event_namemafEntryMatch 时,从 kv_data 字段中提取。
不适用 metadata.vendor_name 设置为 NOKIA_ROUTER
不适用 metadata.event_type 根据提取的字段的存在情况和组合进行确定:
- src_ipdest_ipnetwork 存在 -> NETWORK_CONNECTION
- principal 存在 -> STATUS_UPDATE
- 否则 -> GENERIC_EVENT
%{GREEDYDATA:description} metadata.description event_nametmnxMkaSessionEstablished 时,从 message1 中提取。

变化

2023-11-27

  • 新创建的解析器。

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。