Nokia-Router-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie mit einem Bindplane-Agent Logs von Nokia-Routern für Google Security Operations erfassen. Der Parser extrahiert zuerst Felder wie Zeitstempel, IP-Adressen, Hostnamen und Ereignisdetails mithilfe von Grok-Mustern. Anschließend werden diese extrahierten Felder den entsprechenden Feldern im Google SecOps UDM-Schema zugeordnet. Dabei werden Daten transformiert und mit zusätzlichem Kontext angereichert, der auf bestimmten Ereignistypen und ‑bedingungen basiert.

Hinweise

  • Prüfen Sie, ob Sie eine Google SecOps-Instanz haben.
  • Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit systemd verwenden.
  • Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
  • Prüfen Sie, ob Sie privilegierten Zugriff auf den Nokia-Router haben.

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > „Profil“ auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Fenstereinbau

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

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

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

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

Zusätzliche Installationsressourcen

BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

  1. Greifen Sie auf die Konfigurationsdatei zu:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor (z. B. nano, vi oder Notepad).
  2. Bearbeiten Sie die Datei config.yamlso:

    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. Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.

  4. Ersetzen Sie <customer_id> durch die tatsächliche Kunden-ID.

  5. Aktualisieren Sie /path/to/ingestion-authentication-file.json auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:

    sudo systemctl restart bindplane-agent
    
  • Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Syslog auf Nokia Service Router konfigurieren

  1. Konfigurationsmodus aufrufen:

    config# log
    
  2. Syslog-Ziel definieren:

    config>log# syslog 1
    
  3. Syslog-Parameter konfigurieren:

    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"
    
    • Ersetzen Sie <syslog-server-ip> durch die IP-Adresse des Bindplane-Agents und <port-number> durch den entsprechenden Port (z. B. 514 für UDP).
  4. Syslog-Ziel auf eine Logdatei anwenden:

    config>log# log-id 1
    config>log>log-id# to syslog 1
    
  5. Aktivieren Sie die Protokolldatei:

    config>log>log-id# no shutdown
    
  6. Konfiguration speichern:

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

Beispiel für eine vollständige Konfiguration:

```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-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
%{SYSLOGTIMESTAMP:date_time} metadata.event_timestamp Aus dem Rohlog extrahiert und in einen Zeitstempel konvertiert.
%{IP:src_ip} principal.ip Aus dem Rohlog extrahiert.
%{HOSTNAME:host_name} principal.hostname Aus dem Rohlog extrahiert.
%{INT:sequence_id} metadata.product_log_id Aus dem Rohlog extrahiert.
%{DATA:router_name} metadata.product_name Aus dem Rohlog extrahiert.
%{DATA:application} target.application Aus dem Rohlog extrahiert.
%{WORD:severity} security_result.severity Wird anhand der folgenden Logik aus dem Schweregrad des Rohlogs abgeleitet:
 – CLEARED, INFO –> INFORMATIONAL
 – MINOR –> ERROR
 – WARNING –> LOW
 – MAJOR –> HIGH
 – CRITICAL –> CRITICAL
%{DATA:event_name} metadata.product_event_type Aus dem Rohlog extrahiert.
%{INT:event_id} additional.fields.value.string_value Aus dem Rohlog extrahiert und mit dem Schlüssel Event Id in additional fields platziert.
%{GREEDYDATA:message1} Wird verwendet, um verschiedene Felder basierend auf dem event_name zu extrahieren. Die Logik für bestimmte Felder finden Sie unten.
Group %{NOTSPACE:group_id} target.group.product_object_id Extrahierte Informationen aus message1, wenn event_name mit BGP-Ereignissen zusammenhängt.
%{WORD} %{IP:dest_ip} target.ip Extrahierte Informationen aus message1, wenn event_name mit BGP-Ereignissen zusammenhängt.
%{GREEDYDATA:desc} security_result.description Extrahierte Daten aus message1 für verschiedene event_name-Szenarien.
SAP %{DATA:sap_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name sapStatusChanged ist, und mit dem Schlüssel SAP Id in additional fields platziert.
in service %{INT:service_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name sapStatusChanged ist, und mit dem Schlüssel Service Id in additional fields platziert.
\\(customer %{INT:customer_id}\\) additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name sapStatusChanged ist, und mit dem Schlüssel Customer Id in additional fields platziert.
admin=%{WORD:admin_status} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name sapStatusChanged ist, und mit dem Schlüssel Admin Status in additional fields platziert.
oper=%{WORD:operation_status} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name sapStatusChanged ist, und mit dem Schlüssel Operation Status in additional fields platziert.
flags=%{WORD:flag} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name sapStatusChanged ist, und mit dem Schlüssel Flag in additional fields platziert.
with MI:SCI %{DATA:mi_sci} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name tmnxMkaSessionEstablished ist, und mit dem Schlüssel MI:SCI in additional fields platziert.
on port %{DATA:port_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name tmnxMkaSessionEstablished ist, und mit dem Schlüssel Port Id in additional fields platziert.
sub-port %{INT:sub_port_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name tmnxMkaSessionEstablished ist, und mit dem Schlüssel Sub-port Id in additional fields platziert.
CA %{INT:ca} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name tmnxMkaSessionEstablished ist, und mit dem Schlüssel CA in additional fields platziert.
EAPOL-destination %{MAC:dest_mac} target.mac Wird aus message1 extrahiert, wenn event_name tmnxMkaSessionEstablished ist.
local port-id %{DATA:local_port_id} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel local_port_id in target.resource.attribute.labels platziert.
dest-mac-type %{NOTSPACE:mac_type} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel mac_type in target.resource.attribute.labels platziert.
remote system name %{HOSTNAME:dest_host} target.hostname Aus message1 für bestimmte event_name-Werte extrahiert.
remote chassis-id %{DATA:dest_mac} target.mac Aus message1 für bestimmte event_name-Werte extrahiert.
remote port-id %{DATA:port_id} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel port_id in target.resource.attribute.labels platziert.
remote-index %{INT:remote_index} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel remote_index in target.resource.attribute.labels platziert.
remote management address %{IP:dest_ip} target.ip Aus message1 für bestimmte event_name-Werte extrahiert.
advRtr:%{HOSTNAME:dest_host}%{GREEDYDATA}, ip@:%{IP:dest_ip}/%{INT:dest_port} target.hostname, target.ip, target.port Aus message1 für bestimmte event_name-Werte extrahiert.
SID:%{INT:sid} network.session_id Aus message1 für bestimmte event_name-Werte extrahiert.
level:%{DATA:level} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel level in target.resource.attribute.labels platziert.
mtid:%{INT:mtid} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel mtid in target.resource.attribute.labels platziert.
type:%{WORD:type} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel type in target.resource.attribute.labels platziert.
flags:%{WORD:flag} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel flag in target.resource.attribute.labels platziert.
, algo:%{INT:algo} target.resource.attribute.labels.value Aus message1 für bestimmte event_name-Werte extrahiert und mit dem Schlüssel algo in target.resource.attribute.labels platziert.
Description:%{GREEDYDATA:desc}. security_result.description Wird aus message1 extrahiert, wenn event_name mafEntryMatch ist.
SrcIP principal.ip Wird aus dem Feld kv_data extrahiert, wenn event_name gleich mafEntryMatch ist.
SrcIP: %{INT:src_port} principal.port Wird aus dem Feld kv_data extrahiert, wenn event_name gleich mafEntryMatch ist.
DstIP target.ip Wird aus dem Feld kv_data extrahiert, wenn event_name gleich mafEntryMatch ist.
DstIP: %{INT:dest_port} target.port Wird aus dem Feld kv_data extrahiert, wenn event_name gleich mafEntryMatch ist.
Protocol network.ip_protocol Wird aus dem Feld kv_data extrahiert, wenn event_name gleich mafEntryMatch ist.
metadata.vendor_name Legen Sie NOKIA_ROUTER fest.
metadata.event_type Wird anhand des Vorhandenseins und der Kombination der extrahierten Felder bestimmt:
 – src_ip, dest_ip und network vorhanden –> NETWORK_CONNECTION
 – principal vorhanden –> STATUS_UPDATE
 – Andernfalls –> GENERIC_EVENT
%{GREEDYDATA:description} metadata.description Wird aus message1 extrahiert, wenn event_name tmnxMkaSessionEstablished ist.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten