HAProxy-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie HAProxy-Protokolle mithilfe von Bindplane in Google Security Operations aufnehmen. Der Logstash-Parser extrahiert Felder aus HAProxy-Syslog-Nachrichten mithilfe einer Reihe von Grok-Musterabgleichsregeln, die speziell für die Verarbeitung verschiedener HAProxy-Logformate entwickelt wurden. Die extrahierten Felder werden dann dem einheitlichen Datenmodell (Unified Data Model, UDM) zugeordnet. So werden die Daten mit zusätzlichem Kontext angereichert und die Darstellung für die weitere Analyse standardisiert.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Windows 2016 oder höher oder ein Linux-Host mit
systemd
- Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
- Privilegierter Zugriff auf HAProxy
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_file_path: '/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: 'HAPROXY' 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 in Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog für HAProxy konfigurieren
- Melden Sie sich über die Befehlszeile bei HAproxy an.
Fügen Sie der Konfiguration die Anweisung log im Abschnitt global hinzu, um Syslog-Nachrichten über UDP weiterzuleiten.
- Ersetzen Sie
<bindplane-ips>
durch die tatsächliche IP-Adresse des Bindplane-Agents.
global log <bindplane-ip>:514 local0 defaults log global
- Ersetzen Sie
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
accept_date_ms | ||
actconn | ||
backend_name | ||
backend_queue | ||
beconn | ||
bytes_read | network.received_bytes | Wird aus dem Feld bytes_read im Protokoll extrahiert und in eine vorzeichenlose Ganzzahl konvertiert. |
captured_request_headers | ||
client_ip | principal.ip | Aus dem Feld client_ip im Protokoll extrahiert. |
client_port | principal.port | Wird aus dem Feld client_port im Protokoll extrahiert und in eine Ganzzahl umgewandelt. |
command_description | metadata.description | Wird aus dem Feld command_description im Protokoll extrahiert, sofern verfügbar. Andernfalls wird der Wert je nach Protokollmeldung aus anderen Feldern wie action oder status abgeleitet. |
Datum/Uhrzeit | metadata.event_timestamp.seconds | Wird aus dem Feld datetime im Protokoll extrahiert, sofern verfügbar. Andernfalls wird er aus dem Feld timestamp im Logeintrag abgeleitet. |
description | metadata.description | Wird aus dem Feld description im Protokoll extrahiert, sofern verfügbar. Andernfalls wird er je nach Protokollmeldung aus anderen Feldern wie command_description oder action abgeleitet. |
feconn | ||
frontend_name | ||
http_request | target.url | Aus dem Feld http_request im Protokoll extrahiert. |
http_status_code | network.http.response_code | Wird aus dem Feld http_status_code im Protokoll extrahiert und in eine Ganzzahl umgewandelt. |
http_verb | network.http.method | Aus dem Feld http_verb im Protokoll extrahiert. |
http_version | metadata.product_version | Wird aus dem Feld http_version im Protokoll extrahiert und als HTTP/{version} formatiert. |
Initiator | target.application | Aus dem Feld initiator im Protokoll extrahiert. |
module | ||
msg | security_result.summary | Aus dem Feld msg im Protokoll extrahiert. |
pid | target.process.pid | Aus dem Feld pid im Protokoll extrahiert. |
verarbeiten | ||
process_name | target.application | Aus dem Feld process_name im Protokoll extrahiert. |
retries | ||
server_name | target.hostname | Aus dem Feld server_name im Protokoll extrahiert. Ist das Feld leer, wird standardmäßig der Wert syslog_server verwendet. |
die Ausprägung | security_result.severity | Aus dem Feld severity im Protokoll zugeordnet. WARNING wird MEDIUM zugeordnet, ALERT wird CRITICAL zugeordnet und NOTICE wird INFORMATIONAL zugeordnet. |
shell | ||
srv_queue | ||
srvconn | ||
Status | ||
syslog_server | target.hostname, intermediary.hostname | Aus dem Feld syslog_server im Protokoll extrahiert. Wird sowohl für den Ziel-Hostnamen (wenn server_name leer ist) als auch für den Zwischen-Hostnamen verwendet. |
syslog_timestamp | ||
syslog_timestamp_1 | ||
syslog_timestamp_2 | ||
syslog_timestamp_4 | ||
target_ip | ||
time_backend_connect | ||
time_backend_response | ||
time_duration | ||
time_queue | ||
time_request | ||
timestamp | metadata.event_timestamp.seconds | Aus dem Feld timestamp im Protokoll extrahiert und nach Datums- und Uhrzeitinformationen geparst. Wird als Ereigniszeitstempel verwendet. |
unknown_parameters1 | ||
unknown_parameters2 | ||
user_name | target.user.userid | Aus dem Feld user_name im Protokoll extrahiert. |
metadata.event_type | Standardmäßig auf NETWORK_HTTP festgelegt. Je nach Protokollmeldung und geparsten Feldern in bestimmte Ereignistypen wie PROCESS_UNCATEGORIZED , STATUS_UPDATE oder USER_UNCATEGORIZED geändert. |
|
metadata.vendor_name | Legen Sie HAProxy Enterprise fest. |
|
metadata.product_name | Legen Sie HAProxy fest. |
|
network.application_protocol | Wird auf HTTP gesetzt, wenn das Feld message HTTP enthält. |
|
metadata.log_type | Legen Sie HAPROXY fest. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten