Nokia-Router-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Nokia-Router-Logs mithilfe eines Bindplane-Agents in Google Security Operations erfassen. Der Parser extrahiert zuerst Felder wie Zeitstempel, IP-Adressen, Hostnamen und Ereignisdetails mithilfe von Grok-Mustern. Diese extrahierten Felder werden dann den entsprechenden Feldern im UDM-Schema von Google SecOps zugeordnet. Dabei werden Datentransformationen durchgeführt und die Daten basierend auf bestimmten Ereignistypen und Bedingungen um zusätzlichen Kontext ergänzt.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie müssen Windows 2016 oder höher oder einen Linux-Host mit systemd verwenden.
  • Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
  • Sie benötigen erhöhte Zugriffsrechte für den Nokia-Router.

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. Lade die Datei zur Authentifizierung der Datenaufnahme 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 Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

Bindplane-Agent installieren

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder die 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
    

Weitere Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

    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 Kundennummer.

  5. Aktualisieren Sie /path/to/ingestion-authentication-file.json im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.

Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden

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

    sudo systemctl restart bindplane-agent
    
  • Sie können den Bindplane-Agenten unter Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Syslog auf Nokia-Servicerouter 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 Protokolldatei 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. Speichern Sie die Konfiguration:

    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 Rohprotokoll extrahiert und in einen Zeitstempel umgewandelt.
%{IP:src_ip} principal.ip Aus dem Rohprotokoll extrahiert.
%{HOSTNAME:host_name} principal.hostname Aus dem Rohprotokoll extrahiert.
%{INT:sequence_id} metadata.product_log_id Aus dem Rohprotokoll extrahiert.
%{DATA:router_name} metadata.product_name Aus dem Rohprotokoll extrahiert.
%{DATA:application} target.application Aus dem Rohprotokoll extrahiert.
%{WORD:severity} security_result.severity Die Schwere des Rohlogs wird anhand der folgenden Logik zugeordnet:
 – BEHOBEN, INFO –> INFORMATIONSMELDE
 – GERING –> FEHLER
 – WARNUNG –> NIEDRIG
 – SCHWER –> HOCH
 – KRITISCH –> KRITISCH
%{DATA:event_name} metadata.product_event_type Aus dem Rohprotokoll extrahiert.
%{INT:event_id} additional.fields.value.string_value Aus dem Rohprotokoll extrahiert und mit dem Schlüssel Event Id in additional fields platziert.
%{GREEDYDATA:message1} Wird zum Extrahieren verschiedener Felder basierend auf der event_name verwendet. Unten finden Sie die Logik für bestimmte Felder.
Group %{NOTSPACE:group_id} target.group.product_object_id Aus message1 extrahiert, wenn event_name mit BGP-Ereignissen zusammenhängt.
%{WORD} %{IP:dest_ip} target.ip Aus message1 extrahiert, wenn event_name mit BGP-Ereignissen zusammenhängt.
%{GREEDYDATA:desc} security_result.description Aus message1 für verschiedene event_name-Szenarien extrahiert.
SAP %{DATA:sap_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = sapStatusChanged, und in additional fields mit dem Schlüssel SAP Id platziert.
in service %{INT:service_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = sapStatusChanged, und in additional fields mit dem Schlüssel Service Id platziert.
\\(customer %{INT:customer_id}\\) additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = sapStatusChanged, und in additional fields mit dem Schlüssel Customer Id platziert.
admin=%{WORD:admin_status} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = sapStatusChanged, und in additional fields mit dem Schlüssel Admin Status platziert.
oper=%{WORD:operation_status} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = sapStatusChanged, und in additional fields mit dem Schlüssel Operation Status platziert.
flags=%{WORD:flag} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = sapStatusChanged, und in additional fields mit dem Schlüssel Flag platziert.
with MI:SCI %{DATA:mi_sci} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = tmnxMkaSessionEstablished, und in additional fields mit dem Schlüssel MI:SCI platziert.
on port %{DATA:port_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = tmnxMkaSessionEstablished, und in additional fields mit dem Schlüssel Port Id platziert.
sub-port %{INT:sub_port_id} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = tmnxMkaSessionEstablished, und in additional fields mit dem Schlüssel Sub-port Id platziert.
CA %{INT:ca} additional.fields.value.string_value Wird aus message1 extrahiert, wenn event_name = tmnxMkaSessionEstablished, und in additional fields mit dem Schlüssel CA 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 eingefügt.
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 eingefügt.
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 eingefügt.
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 eingefügt.
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 eingefügt.
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 eingefügt.
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 eingefügt.
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 eingefügt.
, 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 eingefügt.
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 mafEntryMatch ist.
SrcIP: %{INT:src_port} principal.port Wird aus dem Feld kv_data extrahiert, wenn event_name mafEntryMatch ist.
DstIP target.ip Wird aus dem Feld kv_data extrahiert, wenn event_name mafEntryMatch ist.
DstIP: %{INT:dest_port} target.port Wird aus dem Feld kv_data extrahiert, wenn event_name mafEntryMatch ist.
Protocol network.ip_protocol Wird aus dem Feld kv_data extrahiert, wenn event_name mafEntryMatch ist.
metadata.vendor_name Legen Sie NOKIA_ROUTER fest.
metadata.event_type Wird anhand der Anwesenheit und Kombination der extrahierten Felder ermittelt:
 – 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.

Änderungen

2023-11-27

  • Neu erstellter Parser.

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