HAProxy-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie HAProxy-Logs mit 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. Anschließend werden die extrahierten Felder dem Unified Data Model (UDM) zugeordnet. Die Daten werden mit zusätzlichem Kontext angereichert und die Darstellung für weitere Analysen 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-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme 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-Konsole an.
- Rufen Sie die SIEM-Einstellungen > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Fenstereinbau
- Öffnen Sie die Eingabeaufforderung oder 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
Zusätzliche Installationsressourcen
Weitere Installationsoptionen finden Sie im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- 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 Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Services verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog für HAProxy konfigurieren
- Melden Sie sich über die CLI bei HAproxy an.
Fügen Sie die log-Anweisung im Abschnitt global der Konfiguration 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 | Aus dem Feld bytes_read im Log extrahiert und in eine vorzeichenlose Ganzzahl konvertiert. |
captured_request_headers | ||
client_ip | principal.ip | Aus dem Feld client_ip im Log extrahiert. |
client_port | principal.port | Aus dem Feld client_port im Log extrahiert und in eine Ganzzahl konvertiert. |
command_description | metadata.description | Wird aus dem Feld command_description im Log extrahiert, falls verfügbar. Andernfalls wird sie je nach Logmeldung aus anderen Feldern wie action oder status abgeleitet. |
Datum/Uhrzeit | metadata.event_timestamp.seconds | Wird aus dem Feld datetime im Log extrahiert, falls verfügbar. Andernfalls wird sie aus dem Feld timestamp im Logeintrag abgeleitet. |
description | metadata.description | Wird aus dem Feld description im Log extrahiert, falls verfügbar. Andernfalls wird sie je nach Logmeldung aus anderen Feldern wie command_description oder action abgeleitet. |
feconn | ||
frontend_name | ||
http_request | target.url | Aus dem Feld http_request im Log extrahiert. |
http_status_code | network.http.response_code | Aus dem Feld http_status_code im Log extrahiert und in eine Ganzzahl konvertiert. |
http_verb | network.http.method | Aus dem Feld http_verb im Log extrahiert. |
http_version | metadata.product_version | Aus dem Feld http_version im Log extrahiert und als HTTP/{version} formatiert. |
Initiator | target.application | Aus dem Feld initiator im Log extrahiert. |
module | ||
msg | security_result.summary | Aus dem Feld msg im Log extrahiert. |
pid | target.process.pid | Aus dem Feld pid im Log extrahiert. |
verarbeiten | ||
process_name | target.application | Aus dem Feld process_name im Log extrahiert. |
retries | ||
server_name | target.hostname | Aus dem Feld server_name im Log extrahiert. Falls leer, wird standardmäßig der Wert von syslog_server verwendet. |
die Ausprägung | security_result.severity | Wird aus dem Feld severity im Log 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 Log extrahiert. Wird sowohl für den Zielhostnamen (wenn server_name leer ist) als auch für den Zwischenhostnamen 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 Log extrahiert und nach Datums- und Zeitinformationen geparst. Wird als Zeitstempel des Ereignisses verwendet. |
unknown_parameters1 | ||
unknown_parameters2 | ||
user_name | target.user.userid | Aus dem Feld user_name im Log extrahiert. |
metadata.event_type | Standardmäßig auf NETWORK_HTTP festgelegt. Wird basierend auf der Logmeldung und den 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