HP ProCurve-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie die HP ProCurve-Switch-Logs mithilfe von Bindplane in Google Security Operations aufnehmen. Der Parsercode versucht zuerst, die Roh-Lognachricht als JSON zu parsen. Andernfalls werden mithilfe von regulären Ausdrücken (grok
-Mustern) Felder aus der Nachricht basierend auf gängigen HP ProCurve-Protokollformaten extrahiert.
Hinweise
Folgende Voraussetzungen müssen erfüllt sein:
- Google SecOps-Instanz
- Windows 2016 oder höher oder Linux-Host mit systemd
- Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
- Berechtigter Zugriff auf einen HP ProCurve-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 im 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: HP_PROCURVE 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 auf einem HP ProCurve-Switch konfigurieren
- Melden Sie sich mit SSH am HP Procurve-Switch an.
Prüfen Sie die Switch-Schnittstelle mit dem folgenden Befehl:
show ip int br
Aktivieren Sie den Konfigurationsmodus auf dem Switch mit dem folgenden Befehl:
console# conf t
Konfigurieren Sie den Switch mit den folgenden Befehlen zum Senden von Protokollen:
logging host <bindplae-server-ip> transport <udp/tcp> port <port-number> logging facility syslog logging trap informational logging buffer 65536 logging origin-id hostname logging source-interface <interface>
Ersetzen Sie
<bindplae-server-ip>
und<port-number>
durch die Bindplane-IP-Adresse und die Portnummer.Ersetzen Sie
<udp/tcp>
durch die Auswahl von UDP oder TCP als Kommunikationsprotokoll (je nach Bindplane-Agentkonfiguration).Ersetzen Sie
<interface>
durch die Schnittstellen-ID, die Sie zuvor vom Switch erhalten haben (z. B.Ethernet1/1
).Beenden Sie den Konfigurationsmodus und speichern Sie die Änderungen mit den folgenden Befehlen:
console# exit console# wr
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
AAAScheme | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel AAAScheme ist |
AAAType | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel AAAType ist |
Chassis-ID | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld description extrahiert wird, wenn der Schlüssel Chassis ID ist |
Befehl ist | read_only_udm.security_result.detection_fields.value | Text nach Command is im Feld commandInfo |
CommandSource | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel CommandSource ist |
Konfigurationsmethode | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es als config_method |
ConfigDestination | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel ConfigDestination ist |
ConfigSource | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel ConfigSource ist |
Gerätename | read_only_udm.principal.hostname | Wenn das Feld im Protokoll vorhanden ist, wird es dem Haupt- und Asset-Hostnamen zugeordnet. |
Ereignis-ID | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es in den zusätzlichen Feldern als event_id |
EventIndex | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel EventIndex ist |
IfIndex | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld description extrahiert wird, wenn der Schlüssel IfIndex ist |
IP: %{IP:IPAddr} | read_only_udm.target.ip, read_only_udm.target.asset.ip | IP-Adresse, die aus dem Feld desc extrahiert und der Ziel-IP-Adresse und der Ziel-Asset-IP-Adresse zugeordnet wurde |
IPAddr | read_only_udm.target.ip, read_only_udm.target.asset.ip | Wenn das Feld im Protokoll vorhanden ist, wird es der Ziel-IP-Adresse und der Ziel-Asset-IP-Adresse zugeordnet. |
Hinweistyp | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es als notice_type |
Anschluss-ID | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld description extrahiert wird, wenn der Schlüssel Port ID ist |
Remote-IP-Adresse | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es als remote_ip_address |
Dienst | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel Service ist |
Aufgabe | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld descrip extrahiert wird, wenn der Schlüssel Task ist |
Nutzer | read_only_udm.principal.user.userid | Wenn das Feld im Protokoll vorhanden ist, wird es der Hauptnutzer-ID zugeordnet. |
Nutzername | read_only_udm.principal.user.userid | Wenn das Feld im Protokoll vorhanden ist, wird es der Hauptnutzer-ID zugeordnet. |
Nutzername | read_only_udm.principal.user.userid | Wenn das Feld im Protokoll vorhanden ist, wird es der Hauptnutzer-ID zugeordnet. |
UserService | read_only_udm.security_result.detection_fields.value | Wert, der aus dem Feld desc extrahiert wird, wenn der Schlüssel UserService ist |
collection_time.seconds | read_only_udm.metadata.event_timestamp.seconds | Sekundenteil des Ereigniszeitstempels |
Daten | Dieses Feld enthält die Roh-Logmeldung und wird analysiert, um andere Felder zu extrahieren. Es ist nicht dem UDM zugeordnet. | |
Ab | read_only_udm.security_result.description | Aus der Protokollmeldung extrahierte Beschreibung |
descrip | Beschreibung, die aus dem Feld desc extrahiert und weiter nach Schlüssel/Wert-Paaren geparst wurde. Es ist nicht dem UDM zugeordnet. |
|
description | read_only_udm.security_result.description | Wenn das Feld im Protokoll vorhanden ist, wird es der Beschreibung des Sicherheitsergebnisses zugeordnet. |
descript | read_only_udm.metadata.description | Wenn das Feld im Protokoll vorhanden ist, wird es der Metadatenbeschreibung zugeordnet. |
event_id | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es als event_id |
eventId | read_only_udm.metadata.product_event_type | Ereignis-ID, die aus der Protokollmeldung extrahiert wurde |
Hostname | read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname | Hostname, der aus der Protokollnachricht extrahiert und dem Haupt-Hostnamen und dem Asset-Hostnamen zugeordnet wird |
inter_ip | read_only_udm.additional.fields.value.string_value, read_only_udm.intermediary.ip | Wenn das Feld im Log vorhanden ist und eine gültige IP-Adresse ist, wird es der Zwischen-IP zugeordnet. Andernfalls wird er in den zusätzlichen Feldern als inter_ip eingefügt. |
notice_type | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es in den zusätzlichen Feldern als notice_type |
pid | read_only_udm.principal.process.pid | Wenn das Feld im Protokoll vorhanden ist, wird es der PID des Hauptprozesses zugeordnet. |
Programm | Programminformationen, die aus der Protokollnachricht extrahiert und weiter analysiert wurden, um Modul, Schweregrad und Aktion zu ermitteln. Es ist nicht dem UDM zugeordnet. | |
Proto | read_only_udm.network.application_protocol, read_only_udm.additional.fields.value.string_value | Protokoll, das aus der Protokollnachricht extrahiert wurde. Wenn es mit bekannten Protokollen übereinstimmt, wird es dem Anwendungsprotokoll zugeordnet. Andernfalls wird er in den zusätzlichen Feldern als Application Protocol eingefügt. |
remote_ip_address | read_only_udm.principal.ip, read_only_udm.principal.asset.ip, read_only_udm.additional.fields.value.string_value | Wenn das Feld im Log vorhanden ist und eine gültige IP-Adresse ist, wird es der Haupt-IP-Adresse und der Haupt-Asset-IP-Adresse zugeordnet. Andernfalls wird er in den zusätzlichen Feldern als remote_ip_address eingefügt. |
die Ausprägung | read_only_udm.security_result.severity, read_only_udm.security_result.severity_details | Schweregrad, der aus dem Feld program nach der Aufteilung nach / extrahiert wurde. Sie wird den UDM-Schweregraden zugeordnet und auch als Rohdaten zur Schwere gespeichert. |
src_ip | read_only_udm.principal.ip, read_only_udm.principal.asset.ip | Quell-IP-Adresse, die aus der Protokollnachricht extrahiert und der Haupt-IP-Adresse und der Haupt-Asset-IP-Adresse zugeordnet wurde |
Status | read_only_udm.additional.fields.value.string_value | Wenn das Feld im Protokoll vorhanden ist, wird es in den zusätzlichen Feldern als status |
targetHostname | read_only_udm.target.hostname, read_only_udm.target.asset.ip | Wenn das Feld im Protokoll vorhanden ist, wird es dem Ziel-Hostnamen und der Ziel-Asset-IP zugeordnet. |
target_ip | read_only_udm.target.ip, read_only_udm.target.asset.ip | Ziel-IP, die aus der Protokollnachricht extrahiert und der Ziel-IP und der Ziel-Asset-IP zugeordnet wurde |
timestamp | read_only_udm.metadata.event_timestamp.seconds | Zeitstempel, der aus der Protokollnachricht extrahiert und in einen Ereigniszeitstempel umgewandelt wurde |
timestamp.seconds | read_only_udm.metadata.event_timestamp.seconds | Sekundenteil des Ereigniszeitstempels |
Nutzername | read_only_udm.principal.user.userid | Wenn das Feld im Protokoll vorhanden ist, wird es der Hauptnutzer-ID zugeordnet. |
read_only_udm.metadata.event_type | Wird anhand einer Kombination aus Feldern und Logik ermittelt: – NETWORK_CONNECTION : wenn has_principal und has_target wahr sind. – USER_LOGOUT : Wenn action WEBOPT_LOGOUT , LOGOUT oder SHELL_LOGOUT ist. – USER_LOGIN : Wenn action LOGIN oder WEBOPT_LOGIN_SUC ist. – STATUS_UPDATE : Wenn action nicht leer ist oder src_ip /hostname nicht leer sind. – USER_UNCATEGORIZED : Wenn has_user wahr ist. – GENERIC_EVENT : Wenn keine dieser Bedingungen erfüllt ist. |
|
read_only_udm.metadata.product_name | Hartcodiert auf Procurve |
|
read_only_udm.metadata.vendor_name | Hartcodiert auf HP |
|
read_only_udm.extensions.auth.type | Wird auf MACHINE gesetzt, wenn event_type gleich USER_LOGOUT oder USER_LOGIN ist. |
Änderungen
2024-03-04
Optimierung:
- Ein Grok-Muster zum Parsen von nicht geparsten Protokollen wurde hinzugefügt.
- Wenn
severity
gleichDHCP
ist, wirdDHCP
mitnetwork.application_protocol
verknüpft. severity
wurdesecurity_result.severity_details
zugeordnet.prin_port
wurdeprincipal.port
zugeordnet.pid
wurdeprincipal.process.pid
zugeordnet.descript
wurdemetadata.description
zugeordnet.inter_ip
wurdeintermediary.ip
zugeordnet.remote_ip_address
wurdeprincipal.ip
zugeordnet.username
wurdeprincipal.user.userid
zugeordnet.status
,config_method
,event_id
undnotice_type
wurdenadditional.fields
zugeordnet.
2023-09-24
Optimierung:
- Es wurde ein Grok-Muster hinzugefügt, um nicht geparste Protokolle zu analysieren.
target_mac
wurdetarget.mac
zugeordnet.msg
wurdemetadata.description
zugeordnet.src_mac
wurdeprincipal.mac
zugeordnet.severity
wurdesecurity_result.severity
zugeordnet.
2023-07-24
Optimierung:
- Grok-Muster zum Parsen und Zuordnen nicht geparster Protokolle hinzugefügt.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten