F5 VPN-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie F5 VPN-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert sicherheitsrelevante Informationen aus den Logs. Dabei werden reguläre Ausdrücke verwendet, um Schlüsselfelder wie Zeitstempel, IP-Adressen und Hostnamen zu identifizieren und zu parsen. Anschließend werden diese Daten zur Analyse in das Google SecOps Unified Data Model (UDM)-Format strukturiert.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine 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 F5 BIG-IP APM (Access Policy Manager)
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
Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
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 in diesem 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 sie 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 log_type: 'F5_VPN' raw_log_field: body ingestion_labels: 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 Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog für F5 BIG-IP APM v11.x und höher konfigurieren
- Melden Sie sich mit der CLI oder SSH in F5 BIG-IP APM an.
Geben Sie den folgenden Befehl ein, um den Syslog-Server hinzuzufügen:
tmsh syslog remote server {<Name> {host <bindplane-ip> remote-port <bindplane-port>}}
Ersetzen Sie die folgenden Parameter:
<Name>
: Geben Sie den Namen der F5 BIG-IP APM-Quelle ein, z. B.BIGIP_APM
.<bindplane-ip>
: Geben Sie die IP-Adresse des Bindplane-Agents ein.<bindplane-port>
: Geben Sie die Portnummer des Bindplane-Agents ein.
Geben Sie den folgenden Befehl ein, um die Änderungen zu speichern:
tmsh save sys config partitions all
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
cmd_data | principal.process.command_line | Der Wert wird aus dem Feld „msg“ extrahiert. |
errdefs_msgno | additional.fields.errdefs_msgno.string_value | Der Wert wird aus dem Feld „msg“ extrahiert. |
event_time | metadata.event_timestamp | Der Wert wird geparst und in einen Zeitstempel konvertiert. |
Hostname | principal.hostname, observer.hostname, principal.asset.hostname, observer.asset.hostname, hostip | Der Wert wird aus dem Nachrichtenfeld extrahiert und zum Ausfüllen der Hostname-Felder im UDM verwendet. Auch zum Füllen des Felds „hostip“ verwendet |
msg | security_result.description | Der Wert wird aus dem Nachrichtenfeld extrahiert und zum Ausfüllen des Beschreibungsfelds im security_result-Objekt verwendet. |
prin_ip | principal.ip, principal.asset.ip | Der Wert wird aus dem Nachrichtenfeld extrahiert und zum Ausfüllen der IP-Adressfelder im UDM verwendet. |
additional.fields.Canonical_Info.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.IDP.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.Plugin_Support.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.SMB Stage.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.SP.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.Timezone.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.Tunnel Type.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.UI_Mode.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.Version.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.from_rule_item.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.policy_result.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.ppp_id.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.resource.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.rule.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.server_vip_ip.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.server_vip_name.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.to_rule_item.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
additional.fields.tunnel_resource.string_value | Der Wert wird aus der Log-Nachricht abgeleitet. | |
metadata.description | Der Wert wird aus der Log-Nachricht abgeleitet. | |
metadata.event_type | Der Wert ist für einige Ereignisse im Parsercode hartcodiert und wird für andere aus der Log-Nachricht abgeleitet. | |
metadata.log_type | Der Wert wird auf den Batchtyp festgelegt. | |
metadata.product_event_type | Der Wert wird aus der Log-Nachricht abgeleitet. | |
metadata.product_name | Der Wert ist im Parsercode hartcodiert. | |
metadata.vendor_name | Der Wert ist im Parsercode hartcodiert. | |
network.application_protocol | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.direction | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.http.method | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.http.parsed_user_agent | Der Wert wird aus dem Feld „network.http.user_agent“ abgeleitet. | |
network.http.referral_url | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.http.response_code | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.http.user_agent | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.ip_protocol | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.received_bytes | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.sent_bytes | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.session_id | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.tls.cipher | Der Wert wird aus der Log-Nachricht abgeleitet. | |
network.tls.version | Der Wert wird aus der Log-Nachricht abgeleitet. | |
observer.asset.hostname | Der Wert wird auf das Feld „Hostname“ festgelegt. | |
observer.asset.ip | Der Wert wird auf das Feld „hostip“ festgelegt. | |
observer.hostname | Der Wert wird auf das Feld „Hostname“ festgelegt. | |
observer.ip | Der Wert wird auf das Feld „hostip“ festgelegt. | |
principal.application | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.asset.hostname | Der Wert wird auf das Feld „Hostname“ festgelegt. | |
principal.asset.ip | Der Wert wird auf das Feld „hostip“ oder „prin_ip“ festgelegt, falls es vorhanden ist. | |
principal.asset.product_object_id | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.hostname | Der Wert wird auf das Feld „Hostname“ festgelegt. | |
principal.ip | Der Wert wird auf das Feld „hostip“ oder „prin_ip“ festgelegt, falls es vorhanden ist. | |
principal.location.country_or_region | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.platform | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.port | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.process.command_line | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.process.pid | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.resource.name | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.resource.type | Der Wert ist für einige Ereignisse im Parsercode hartcodiert und wird für andere aus der Log-Nachricht abgeleitet. | |
principal.user.email_addresses | Der Wert wird aus der Log-Nachricht abgeleitet. | |
principal.user.userid | Der Wert wird aus der Log-Nachricht abgeleitet. | |
security_result.action | Der Wert wird aus der Log-Nachricht abgeleitet. | |
security_result.description | Der Wert wird aus der Log-Nachricht abgeleitet. | |
security_result.rule_name | Der Wert wird aus der Log-Nachricht abgeleitet. | |
security_result.severity | Der Wert wird aus der Log-Nachricht abgeleitet. | |
security_result.severity_details | Der Wert wird aus der Log-Nachricht abgeleitet. | |
security_result.summary | Der Wert wird aus der Log-Nachricht abgeleitet. | |
src.ip | Der Wert wird aus der Log-Nachricht abgeleitet. | |
src.location.country_or_region | Der Wert wird aus der Log-Nachricht abgeleitet. | |
src.port | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.asset.hostname | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.asset.ip | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.hostname | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.ip | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.port | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.process.command_line | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.process.pid | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.resource.id | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.url | Der Wert wird aus der Log-Nachricht abgeleitet. | |
target.user.userid | Der Wert wird aus der Log-Nachricht abgeleitet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten