收集 Nokia 路由器日志

支持的语言:

本文档介绍了如何使用 Bindplane 代理将 Nokia 路由器日志收集到 Google Security Operations。解析器首先使用 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. /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 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 Agent 的 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 从原始日志中提取,并放置在键为 Event Idadditional fields 中。
%{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 中提取,并放置在键为 SAP Idadditional fields 中。
in service %{INT:service_id} additional.fields.value.string_value event_namesapStatusChanged 时,从 message1 中提取,并放置在键为 Service Idadditional fields 中。
\\(customer %{INT:customer_id}\\) additional.fields.value.string_value event_namesapStatusChanged 时,从 message1 中提取,并放置在键为 Customer Idadditional fields 中。
admin=%{WORD:admin_status} additional.fields.value.string_value event_namesapStatusChanged 时,从 message1 中提取,并放置在键为 Admin Statusadditional fields 中。
oper=%{WORD:operation_status} additional.fields.value.string_value event_namesapStatusChanged 时,从 message1 中提取,并放置在键为 Operation Statusadditional fields 中。
flags=%{WORD:flag} additional.fields.value.string_value event_namesapStatusChanged 时,从 message1 中提取,并放置在键为 Flagadditional fields 中。
with MI:SCI %{DATA:mi_sci} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时,从 message1 中提取,并放置在键为 MI:SCIadditional fields 中。
on port %{DATA:port_id} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时,从 message1 中提取,并放置在键为 Port Idadditional fields 中。
sub-port %{INT:sub_port_id} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时,从 message1 中提取,并放置在键为 Sub-port Idadditional fields 中。
CA %{INT:ca} additional.fields.value.string_value event_nametmnxMkaSessionEstablished 时,从 message1 中提取,并放置在键为 CAadditional fields 中。
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 message1 中提取,用于特定 event_name 值。
remote chassis-id %{DATA:dest_mac} target.mac message1 中提取,用于特定 event_name 值。
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 message1 中提取,用于特定 event_name 值。
advRtr:%{HOSTNAME:dest_host}%{GREEDYDATA}, ip@:%{IP:dest_ip}/%{INT:dest_port} target.hostnametarget.iptarget.port message1 中提取,用于特定 event_name 值。
SID:%{INT:sid} network.session_id message1 中提取,用于特定 event_name 值。
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)的存在情况和组合情况确定:
- 存在
- src_ipdest_ipnetwork -> NETWORK_CONNECTION
- 存在
- principal -> STATUS_UPDATE
- 其他情况 -> GENERIC_EVENT
%{GREEDYDATA:description} metadata.description event_nametmnxMkaSessionEstablished 时,从 message1 中提取。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。