Arista-Switch-Protokolle erfassen

Unterstützt in:

Dieser Parser extrahiert Felder aus Arista-Switch-Protokollen und unterstützt sowohl JSON- als auch syslog-Formate. Dabei werden Grok-Muster verwendet, um verschiedene Protokollnachrichtentypen zu parsen, extrahierte Felder dem UDM zuzuordnen und Ereignisse anhand der extrahierten Details mit Metadaten wie Ereignistyp, Schweregrad und Informationen zum Haupt-/Zielobjekt anzureichern.

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.
  • Arista EOS 4.23.x und höher muss installiert und zugänglich sein.
  • Sie benötigen erhöhte Zugriffsrechte auf den Arista EOS-Switch.

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: ARISTA_SWITCH
                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 in einem Arista-Switch konfigurieren

  1. Melden Sie sich am Arista-Switch an.
  2. Rufen Sie den Modus Konfiguration auf:

    Arista# config terminal
    
  3. Geben Sie dem Switch die folgende Konfiguration, um Protokolle an den Bindplane-Agenten zu senden.

    Arista(config)# logging host <bindplane-server-ip> <port-number> protocol [tcp/udp]
    Arista(config)# logging trap information
    Arista(config)# copy running-config startup-config
    
    * Replace `<bindplane-server-ip>` with Bindplane agent IP address and `<port-number>` with the port configured to listen.
    
  4. Geben Sie eine zusätzliche Konfiguration für die Protokolle zur Befehlsausführung ein:

    Arista (config)# aaa accounting commands all console start-stop logging
    Arista (config)# aaa accounting commands all default start-stop logging
    Arista (config)# aaa accounting exec console start-stop logging
    Arista (config)# aaa accounting exec default start-stop logging
    Arista (config)# copy running-config startup-config
    
  5. Geben Sie eine zusätzliche Konfiguration für Anmeldeprotokolle ein:

    Arista (config)# aaa authentication policy on-success log
    Arista (config)# aaa authentication policy on-failure log
    Arista (config)# copy running-config startup-config
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
appname target.application Direkt aus dem Feld appname zugeordnet.
description metadata.description Direkt aus dem Feld description zugeordnet, das mithilfe von Grok-Mustern, die auf dem Feld product_event_type basieren, aus dem Feld message extrahiert wird.
dst_ip target.ip, target.asset.ip Direkt aus dem Feld dst_ip zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
dst_mac target.mac Direkt aus dem Feld dst_mac zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
dst_port target.port Direkt aus dem Feld dst_port zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
facility additional.fields[facility].string_value Direkt aus dem Feld facility zugeordnet.
hostname principal.hostname, principal.asset.hostname Direkt aus dem Feld hostname zugeordnet.
inner_msg metadata.description Direkt aus dem Feld inner_msg zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
ip_protocol network.ip_protocol Direkt aus dem Feld ip_protocol zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird. Wenn der Wert „tcp“ ist, wird er in „TCP“ umgewandelt. Wenn der Ereignistyp „NO_IGMP_QUERIER“ ist, wird er auf „IGMP“ gesetzt.
pid principal.process.pid Direkt aus dem Feld pid zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
prin_ip principal.ip, principal.asset.ip Direkt aus dem Feld prin_ip zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
product_event_type metadata.product_event_type Direkt aus dem Feld product_event_type zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
proto network.application_protocol Wenn das Feld proto „sshd“ lautet, wird das UDM-Feld auf „SSH“ gesetzt.
severity security_result.severity, security_result.severity_details Der Wert für security_result.severity wird anhand der folgenden Zuordnungen aus dem Feld severity abgeleitet: „DEFAULT“, „DEBUG“, „INFO“, „NOTICE“ -> „INFORMATIONAL“; „WARNING“, „ERROR“, „ERR“, „WARN“ -> „MEDIUM“; „CRITICAL“, „ALERT“, „EMERGENCY“ -> „HIGH“. Der Rohwert von severity wird security_result.severity_details zugeordnet.
session_id network.session_id Direkt aus dem Feld session_id zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
source_ip principal.ip, principal.asset.ip Direkt aus dem Feld source_ip zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
source_port principal.port Direkt aus dem Feld source_port zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
src_ip principal.ip, principal.asset.ip Direkt aus dem Feld src_ip zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
table_name target.resource.name Direkt aus dem Feld table_name zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird. Wenn dieses Feld ausgefüllt ist, wird target.resource.resource_type auf „TABELLE“ gesetzt.
target_host target.hostname, target.asset.hostname Direkt aus dem Feld target_host zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
target_ip target.ip, target.asset.ip Direkt aus dem Feld target_ip zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
target_package target.process.command_line Direkt aus dem Feld target_package zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
target_port target.port Direkt aus dem Feld target_port zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
timestamp metadata.event_timestamp Wird direkt aus dem Feld timestamp zugeordnet, nachdem es in ein Zeitstempelobjekt geparst wurde.
user principal.user.userid Direkt aus dem Feld user zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
user_name target.user.userid Direkt aus dem Feld user_name zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird.
vrf additional.fields[vrf].string_value Direkt aus dem Feld vrf zugeordnet, das mithilfe von Grok-Mustern aus dem Feld message extrahiert wird. Abgeleitet aus einer Kombination der Felder has_principal, has_target, user, message, product_event_type und description mithilfe komplexer bedingter Logik, wie im Parsercode beschrieben. Der Standardwert ist „GENERIC_EVENT“. Hartcodiert auf „ARISTA_SWITCH“. Hartcodiert auf „Arista Switch“. Hartcodiert auf „Arista“. Legen Sie „BLOCK“ fest, wenn das Feld description „connection rejected“ enthält.
dpid additional.fields[DPID].string_value Direkt aus dem Feld dpid zugeordnet.
intf additional.fields[intf].string_value Direkt aus dem Feld intf zugeordnet.

Änderungen

2024-06-07

Optimierung:

  • Es wurde ein Grok-Muster hinzugefügt, um das neue Muster von SYSLOG-Format-Protokollen zu parsen.
  • „principal_mac“ wurde in „principal.mac“ geändert.
  • „principal_port“ wurde in „principal.port“ geändert.

2024-03-17

Optimierung:

  • Es wurde ein Grok-Muster zum Parsen von SYSLOG-Format-Protokollen hinzugefügt.
  • „user“ wurde „principal.user.userid“ zugeordnet.
  • „proto“ wurde in „network.application_protocol“ geändert.
  • „prin_ip“ wurde auf „principal.ip“ zugeordnet.

2022-08-03

  • Neu erstellter Parser.

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