Dell-Switch-Logs erfassen

Parserversion: 11.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Dell-Switch-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

Dieser Parser extrahiert Dell-Switch-Logs, normalisiert Zeitstempel und verwendet Grok-Muster, um die Logeinträge in Schlüssel/Wert-Paare zu strukturieren. Anschließend werden diese extrahierten Felder dem Unified Data Model (UDM) zugeordnet. Dabei werden verschiedene Logformate verarbeitet und die Daten mit Kontextinformationen wie Asset-Details und Sicherheitsschweregrad angereichert.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Netzwerkverbindung zwischen dem Bindplane-Agent und dem Dell-Switch
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Eine aktive Verbindung und Administratoranmeldedaten für einen Dell-Switch

Google SecOps-Anmeldedaten für den Bindplane-Agenten abrufen

Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agenten bei Google SecOps zu authentifizieren:

  • Neue Bereitstellungen: Verwenden Sie die Chronicle API (Option 1).
  • Legacy-Bereitstellungen: Verwenden Sie die Authentifizierungsdatei für die Datenaufnahme (Option 2) weiter, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
  1. Melden Sie sich in der Google Cloud Console an und wählen Sie das Google Cloud -Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
  2. Rufen Sie IAM und Verwaltung > Dienstkonten auf.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B. bindplane-ingest.
    • Dienstkontobeschreibung: Geben Sie eine Beschreibung ein, z. B. Bindplane agent log ingestion.
  5. Klicken Sie auf Erstellen und fortfahren.
  6. Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
  7. Klicken Sie auf Weiter und dann auf Fertig.
  8. Klicken Sie auf das von Ihnen erstellte Dienstkonto und rufen Sie den Tab Schlüssel auf.
  9. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  10. Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  11. Speichern Sie die Schlüsseldatei als ingestion-auth.json im Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.json unter Linux oder C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json unter Windows) oder aktualisieren Sie creds_file_path in config.yaml, damit der Pfad mit dem Pfad übereinstimmt, in dem Sie die Datei speichern.
  12. Rufen Sie IAM & Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Exporter-Konfiguration.

Option 2: Authentifizierungsdatei für die Datenaufnahme herunterladen (Legacy)

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Datenaufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.

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 Kundennummer aus dem Bereich Organization Details (Organisationsdetails).

BindPlane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.

Windows-Installation

  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
    
  3. Warte, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

    Der Dienst sollte als RUNNING (WIRD AUSGEFÜHRT) angezeigt werden.

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
    
  3. Warte, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sudo systemctl status observiq-otel-collector
    

    Der Dienst sollte als active (running) angezeigt werden.

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agenten.

Bindplane-Agent so konfigurieren, dass Syslog-Daten aufgenommen und an Google SecOps gesendet werden

Konfigurationsdatei suchen

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Konfigurationsdatei bearbeiten

  • Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/dell_switch:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: DELL_SWITCH
        raw_log_field: body
    
    service:
      pipelines:
        logs/dell_switch_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/dell_switch
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • listen_address: IP-Adresse und Port, auf die gewartet werden soll:
      • 0.0.0.0, um auf allen Schnittstellen zu lauschen (empfohlen)
      • Port 514 ist der Standard-Syslog-Port (erfordert Root unter Linux; verwenden Sie 1514 für Nicht-Root).
  • Exporter-Konfiguration:

    • creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Kundennummer, die aus der Google SecOps-Konsole kopiert wurde
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz (z. B. us, europe oder asia-southeast1). Der Exporteur stellt diesem Wert das Präfix chronicle.googleapis.com voran. Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • project: Ersetzen Sie <PROJECT_NUMBER> durch die Projektnummer aus IAM & Verwaltung > Einstellungen.
    • endpoint: Behalten Sie die Einstellung chronicle.googleapis.com bei.

Legacy-Ingestion-API-Exporter

  • Wenn Sie die Authentifizierungsdatei für die Datenaufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie creds_file_path auf den Pfad zur Datei für die Authentifizierung bei der Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch Ihren regionalen Endpunkt (z. B. europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/dell_switch:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: DELL_SWITCH
        raw_log_field: body
    

Konfigurationsdatei speichern

  • Speichern Sie die Datei nach der Bearbeitung:
    • Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
    • Windows: Klicken Sie auf Datei > Speichern.

Starten Sie den Bindplane-Agent neu, um die Änderungen zu übernehmen.

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

    sudo systemctl restart observiq-otel-collector
    
    1. Prüfen Sie, ob der Dienst ausgeführt wird:

      sudo systemctl status observiq-otel-collector
      
    2. Logs auf Fehler prüfen:

      sudo journalctl -u observiq-otel-collector -f
      
  • Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agenten unter Windows neu zu starten:

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Dienstkonsole:

      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Rechtsklicken Sie und wählen Sie Neu starten aus.
      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Logs auf Fehler prüfen:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Syslog-Export von einem Dell-Switch konfigurieren

  1. Stellen Sie über SSH oder den Konsolenport eine Verbindung zum Dell-Switch her.
  2. Melden Sie sich mit Administratoranmeldedaten an.
  3. Verwenden Sie den folgenden Befehl, um die IP-Adresse oder den Hostnamen des Syslog-Servers anzugeben (ersetzen Sie <syslog-server-ip>, <udp|tcp> und <syslog-port-number> durch die tatsächlichen Details):

    logging host <syslog-server-ip> transport <udp|tcp> port <syslog-port-number>
    
  4. Optional: Definieren Sie den Mindestschweregrad für Nachrichten, die an den Syslog-Server gesendet werden sollen. So protokollieren Sie beispielsweise Informationsnachrichten und höher:

    logging level informational
    
  5. Speichern Sie die laufende Konfiguration in der Startkonfiguration, damit die Änderungen auch nach einem Neustart erhalten bleiben:

    copy running-config startup-config
    
  6. Speichern Sie die Konfiguration:

    write memory
    

Unterstützte Dell Switch-Beispiellogs

  • SYSLOG

    {
      "priority": 165,
      "version": 1,
      "timestamp": "2023-10-12T12:37:17.249566+00:00",
      "hostname": "switch-lon-01",
      "app_name": "dn_alm",
      "proc_id": "940",
      "message": "Node.1-Unit.1:PRI [event], Dell EMC (OS10) %ALM_AUTH_EVENT: Authentication event was raised MESSAGE=pam_unix(sshd:session): session opened for user service_account by (uid=0)"
    }
    
  • JSON

    {
      "appname": "SNOOP",
      "facility": 23,
      "hostname": "access-switch-a1",
      "message": "snooping.c(2177) 70820228 %% DBG Report from intf Gi6/0/11 ignored -- no router ports on vlan 193",
      "priority": 191,
      "proc_id": "snoopTask"
    }
    
  • KV-/Ereignisformat

    Events: 
      Eventid        = {38812} 
      Occurrencetime = {3 Sept 2024 00:06:06} 
      Eventseverity  = {Minor} 
      Jobid          = {30506} 
      Computer       = {backup-server-01} 
      Program        = {DatabaseAgent} 
      Description    = {Block Change Tracking is found DISABLED on Oracle DB [PROD_DB]. Incremental backups may run slow.}
    
  • SYSLOG prüfen

    {
        "priority": 110,
        "version": 1,
        "timestamp": "2023-12-12T00:58:26.893679+00:00",
        "hostname": "core-switch-palf",
        "app_name": ".clish",
        "proc_id": "29156",
        "message": "Node.1-Unit.1:PRI [audit], User sec_admin on /dev/pts/0 from 10.0.0.50 used cmd: 'terminal length 0' - completed"
    }
    
  • SNMP-Trap / TRAPMGR-Format

    {
      "priority": 189,
      "version": 1,
      "timestamp": "2023-12-28T23:37:27.394Z",
      "hostname": "dist-switch-01",
      "app_name": "TRAPMGR",
      "proc_id": "trapTask",
      "extensions": {
        "origin_ip": "192.168.1.1",
        "software": "N3000_Series",
        "swVersion": "6.3.2.3"
      },
      "message": "traputil.c(721) 1056839 %% Gi1/0/5 is transitioned from the Learning state to the Forwarding state"
    }
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
acct principal.user.userid Wird als userid verwendet, wenn das Feld user nicht vorhanden ist.
addr principal.asset.ip, principal.ip Wird als IP-Adresse geparst und für die IP-Adresse des Hauptkontos und die Asset-IP-Adresse verwendet, wenn es sich um eine gültige IP-Adresse handelt, die sich vom Hostnamen unterscheidet.
application principal.application Direkt zugeordnet.
asset principal.asset.attribute.labels.value Direkt dem Asset-Label-Wert zugeordnet, wobei der Schlüssel als „Asset Name“ hartcodiert ist. Wenn das Asset-Feld leer ist und die Nachricht „Dell“ enthält, wird das Asset auf „Dell“ gesetzt.
auid principal.resource.attribute.labels.value Direkt einem Label mit dem Schlüssel auid in principal.resource.attribute.labels zugeordnet.
datetime metadata.event_timestamp Aus verschiedenen Formaten im Nachrichtenfeld geparst und in einen Zeitstempel konvertiert.
dest_ip target.asset.ip, target.ip Der Ziel-IP und der Ziel-Asset-IP zugeordnet.
enterpriseId principal.resource.attribute.labels.value Wird einem Label mit dem Schlüssel enterpriseId in principal.resource.attribute.labels zugeordnet.
exe sec_result.detection_fields.value Einem Erkennungsfeld mit dem Schlüssel exe zugeordnet.
File target.file.full_path Direkt zugeordnet.
grantors principal.resource.attribute.labels.value Wird einem Label mit dem Schlüssel grantors in principal.resource.attribute.labels zugeordnet.
host principal.hostname, principal.asset.hostname, metadata.event_type Wird als Prinzipal-Hostname und Asset-Hostname verwendet. Wenn host vorhanden ist, wird metadata.event_type auf STATUS_UPDATE gesetzt. Wenn „hostname“ vorhanden, aber „host“ nicht vorhanden ist, wird „hostname“ als „host“ verwendet.
hostname principal.asset.ip, principal.ip, host Wenn es sich um eine gültige IP-Adresse handelt, wird sie für die Hauptkonto-IP und die Asset-IP verwendet. Wenn host leer ist, wird es als host verwendet.
ID principal.resource.attribute.labels.value Wird einem Label mit dem Schlüssel ID in principal.resource.attribute.labels zugeordnet.
ip principal.asset.ip, principal.ip Der Haupt-IP-Adresse und der Asset-IP-Adresse zugeordnet.
is_synced sec_result.detection_fields.value Zugeordnet zu einem Erkennungsfeld mit dem Schlüssel is_synced.
local target.asset.ip, target.ip, target.port Wird geparst, um die lokale IP-Adresse und den lokalen Port zu extrahieren, und der Ziel-IP-Adresse, der Ziel-Asset-IP-Adresse und dem Zielport zugeordnet.
local_ip target.asset.ip, target.ip Wird aus dem Feld local extrahiert und der Ziel-IP und der Ziel-Asset-IP zugeordnet.
local_port target.port Wird aus dem Feld local extrahiert und dem Zielport zugeordnet.
mac principal.mac Wenn es sich um eine gültige MAC-Adresse handelt, wird sie der primären MAC-Adresse zugeordnet.
msg metadata.description Wird als Ereignisbeschreibung verwendet, sofern vorhanden. Wird auch für zusätzliche Felder geparst.
msg1 metadata.description Wird als Ereignisbeschreibung verwendet, wenn msg2 nicht vorhanden ist.
msg2 sec_result.description, metadata.event_type, extensions.auth.type Wird als Beschreibung des Sicherheitsergebnisses verwendet. Wenn sie „opened for user“ enthält, wird der Ereignistyp auf USER_LOGIN und der Authentifizierungstyp auf MACHINE gesetzt. Wenn „closed for user“ enthalten ist, wird der Ereignistyp auf USER_LOGOUT und der Autorisierungstyp auf MACHINE festgelegt.
op metadata.product_event_type Wird als Produktereignistyp verwendet, sofern vorhanden.
pid principal.process.pid Direkt zugeordnet.
port principal.port Direkt zugeordnet.
prod_event_type metadata.product_event_type Wird als Produktereignistyp verwendet, falls vorhanden.
res sec_result.summary Direkt zugeordnet.
sec_description sec_result.description, target.url, target.ip, target.asset.ip, sec_result.action_details Wird nach Ziel-URL, IP-Adresse und Aktionsdetails geparst und als Beschreibung des Sicherheitsergebnisses verwendet.
Server_ID target.resource.product_object_id Direkt zugeordnet.
server principal.asset.ip, principal.ip, principal.port Wird geparst, um die Server-IP und den Port zu extrahieren, die der Haupt-IP, der Haupt-Asset-IP und dem Hauptport zugeordnet sind.
server_ip principal.asset.ip, principal.ip Wird aus dem Feld server extrahiert und der Hauptkonto-IP und der Hauptkonto-Asset-IP zugeordnet.
server_port principal.port Wird aus dem Feld server extrahiert und dem Hauptport zugeordnet.
ses network.session_id Direkt zugeordnet.
severity sec_result.severity, metadata.product_event_type Wird verwendet, um den Schweregrad des Sicherheitsergebnisses und den Produktereignistyp anhand bestimmter Werte zu bestimmen.
software principal.asset.software Direkt zugeordnet.
softwareName software.name Direkt zugeordnet.
Status sec_result.summary Wird als Zusammenfassung der Sicherheitsergebnisse verwendet, wenn res nicht vorhanden ist.
subj principal.resource.attribute.labels.value Einem Label mit dem Schlüssel subj in principal.resource.attribute.labels zugeordnet.
swVersion software.version Direkt zugeordnet.
target_host target.hostname, target.asset.hostname Direkt dem Ziel-Hostname und dem Ziel-Asset-Hostname zugeordnet.
target_ip target.asset.ip, target.ip Direkt der Ziel-IP und der Ziel-Asset-IP zugeordnet.
target_url target.url Direkt zugeordnet.
target_user_id target.user.userid Direkt zugeordnet.
terminal principal.resource.attribute.labels.value Wird einem Label mit dem Schlüssel terminal in principal.resource.attribute.labels zugeordnet.
tzknown sec_result.detection_fields.value Einem Erkennungsfeld mit dem Schlüssel tzknown zugeordnet.
uid principal.resource.attribute.labels.value Einem Label mit dem Schlüssel uid in principal.resource.attribute.labels zugeordnet.
user principal.user.userid, metadata.event_type Wird als Hauptnutzer-ID verwendet. Wenn user vorhanden ist, wird metadata.event_type auf USER_UNCATEGORIZED gesetzt.
username target.user.userid Direkt der Zielnutzer-ID zugeordnet.
– metadata.vendor_name Hartcodiert auf „Dell“.
– metadata.product_name Fest codiert auf „Dell Switch“.
– extensions.auth.type Auf MACHINE für bestimmte An- und Abmeldeereignisse festgelegt.
– metadata.event_type Wird durch eine komplexe Logik bestimmt, die auf verschiedenen Feldern und Bedingungen basiert. Standardmäßig auf GENERIC_EVENT festgelegt, sofern nicht anders angegeben. Kann USER_LOGIN, USER_LOGOUT, USER_UNCATEGORIZED, NETWORK_CONNECTION, NETWORK_UNCATEGORIZED, STATUS_UPDATE oder GENERIC_EVENT sein.
reason_code event.idm.read_only_udm.security_result.detection_fields Aus Änderungsprotokoll zugeordnet
Eventid metadata.product_log_id Aus Änderungsprotokoll zugeordnet
Eventseverity security_result.severity Aus Änderungsprotokoll zugeordnet
Computer principal.hostname Aus Änderungsprotokoll zugeordnet
Program principal.application Aus Änderungsprotokoll zugeordnet
Description security_result.description Aus Änderungsprotokoll zugeordnet
tzknown", "is_synced" and "exe security_result.detection_fields Aus Änderungsprotokoll zugeordnet
res security_result.summary Aus Änderungsprotokoll zugeordnet
status security_result.summary Aus Änderungsprotokoll zugeordnet
uid", "enterpriseId", "auid", "terminal", "subj", "grantors", and "ID principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
sec_description security_result.description Aus Änderungsprotokoll zugeordnet
action_details security_result.action_details Aus Änderungsprotokoll zugeordnet
softwareName principal.asset.software.name Aus Änderungsprotokoll zugeordnet
swVersion principal.asset.software.version Aus Änderungsprotokoll zugeordnet
port principal_port Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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