Arista-Switch-Protokolle erfassen
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
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- 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
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Profil.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
Bindplane-Agent installieren
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
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
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
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
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet
Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor, z. B.
nano
,vi
oder Notepad.
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kundennummer.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
- Melden Sie sich am Arista-Switch an.
Rufen Sie den Modus Konfiguration auf:
Arista# config terminal
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.
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
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