Logs für den sicheren Remotezugriff von BeyondTrust erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie mit Bindplane Logs für den sicheren Remotezugriff von BeyondTrust erfassen. Der Parser unterstützt zwei syslog-Formate. Das erste Format verwendet Schlüssel/Wert-Paare in einer strukturierten Nachricht, während das zweite Format durch Pipes getrennte Felder verwendet. Der Parser extrahiert relevante Felder aus beiden Formaten und ordnet sie dem UDM zu. Außerdem werden Ereignistypen anhand von extrahierten Keywords kategorisiert und eine spezielle Logik für Anmelde-/Abmeldeereignisse und Authentifizierungstypen angewendet.

Hinweise

  • Sie benötigen eine Google Security Operations-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.
  • Sie benötigen Berechtigungen für den sicheren Remotezugriff von BeyondTrust.

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. 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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
  2. 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

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. 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

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor, z. B. nano, vi oder Notepad.
  2. Bearbeiten Sie die Datei config.yamlso:

    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: BEYONDTRUST_REMOTE_ACCESS
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.

  4. Ersetzen Sie <customer_id> durch die tatsächliche Kundennummer.

  5. 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
    

Remote-Support von BeyondTrust konfigurieren

  1. Melden Sie sich in der BeyondTrust-Web-UI an.
  2. Wählen Sie Appliance > Sicherheit > Appliance-Verwaltung aus.
  3. Führen Sie im Abschnitt Syslog folgende Schritte aus:
    • Nachrichtenformat: Wählen Sie Legacy BSD-Format aus.
    • Remote-Syslog-Server: Geben Sie die IP-Adresse und den Port von Bindplane ein.
  4. Klicken Sie auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
datetime metadata.event_timestamp Wenn das Feld when nicht vorhanden ist, wird der Zeitstempel aus dem Feld datetime im RFC 3339-Format geparst.
deviceHost target.hostname Der Wert von deviceHost wird direkt auf target.hostname zugeordnet.
dstHost target.ip Der Wert von dstHost wird direkt auf target.ip zugeordnet, nachdem er als gültige IP-Adresse bestätigt wurde.
dstPriv additional.fields.[key=dstPriv].value.string_value Der Wert von dstPriv wird in das Feld additional mit dem Schlüssel dstPriv eingefügt.
dstUid target.user.userid Der Wert von dstUid wird direkt auf target.user.userid zugeordnet.
dstUser target.user.user_display_name Der Wert von dstUser wird direkt auf target.user.user_display_name zugeordnet.
eventName metadata.event_type Wenn eventName login ist (ohne Berücksichtigung der Groß- und Kleinschreibung), wird metadata.event_type auf USER_LOGIN gesetzt. Wenn eventName logout ist (ohne Berücksichtigung der Groß- und Kleinschreibung), wird metadata.event_type auf USER_LOGOUT gesetzt. Andernfalls, wenn eventName nicht leer ist, wird metadata.event_type auf USER_UNCATEGORIZED gesetzt. Wenn eventName leer ist und die Nachricht mit dem zweiten Grok-Muster übereinstimmt, wird metadata.event_type auf GENERIC_EVENT gesetzt. Wenn eventName leer ist und die Nachricht mit dem ersten Grok-Muster übereinstimmt, wird metadata.event_type auf GENERIC_EVENT gesetzt. Wenn srcUid, userid oder who nicht leer sind, wird metadata.event_type auf USER_CHANGE_PERMISSIONS festgelegt. Wenn deviceHost oder site nicht leer sind, wird metadata.event_type auf USER_UNCATEGORIZED gesetzt. Andernfalls wird metadata.event_type auf GENERIC_EVENT gesetzt.
event_name additional.fields.[key=event_name].value.string_value Der Wert von event_name wird in das Feld additional mit dem Schlüssel event_name eingefügt.
event_name metadata.product_event_type Der Wert von event_name wird in Verbindung mit dem Feld id verwendet, um metadata.product_event_type im Format „[id] -event_name“ auszufüllen.
externalKeyLabel additional.fields.[key=externalKeyLabel].value.string_value Der Wert von externalKeyLabel wird in das Feld additional mit dem Schlüssel externalKeyLabel eingefügt.
id metadata.product_event_type Der Wert von id wird in Verbindung mit dem Feld event_name verwendet, um metadata.product_event_type im Format „[id] -event_name“ auszufüllen.
jumpGroupId additional.fields.[key=jumpGroupId].value.string_value Der Wert von jumpGroupId wird in das Feld additional mit dem Schlüssel jumpGroupId eingefügt.
jumpGroupName additional.fields.[key=jumpGroupName].value.string_value Der Wert von jumpGroupName wird in das Feld additional mit dem Schlüssel jumpGroupName eingefügt.
jumpGroupType additional.fields.[key=jumpGroupType].value.string_value Der Wert von jumpGroupType wird in das Feld additional mit dem Schlüssel jumpGroupType eingefügt.
jumpointId additional.fields.[key=jumpointId].value.string_value Der Wert von jumpointId wird in das Feld additional mit dem Schlüssel jumpointId eingefügt.
jumpointName additional.fields.[key=jumpointName].value.string_value Der Wert von jumpointName wird in das Feld additional mit dem Schlüssel jumpointName eingefügt.
kv_data Verschiedene UDM-Felder Das Feld kv_data wird in Schlüssel/Wert-Paare zerlegt, die dann basierend auf ihren Schlüsseln verschiedenen UDM-Feldern zugeordnet werden (z.B. eventName, when, who, who_ip, site, target, status, reason).
kvdata Verschiedene UDM-Felder Das Feld kvdata wird in Schlüssel/Wert-Paare zerlegt, die dann basierend auf ihren Schlüsseln verschiedenen UDM-Feldern zugeordnet werden (z.B. msg, srcUser, srcUid, srcHost, dstUser, dstUid, dstHost, sessionId, jumpointId, jumpointName, jumpGroupId, jumpGroupName, jumpGroupType, externalKeyLabel, dstPriv).
message Verschiedene UDM-Felder Das Feld message wird mit Grok-Mustern analysiert, um verschiedene Felder zu extrahieren, die dann UDM-Feldern zugeordnet werden.
msg metadata.description Der Wert von msg wird direkt auf metadata.description zugeordnet.
product_event_type metadata.product_event_type Der Wert von product_event_type wird direkt auf metadata.product_event_type zugeordnet.
product_log_id metadata.product_log_id Der Wert von product_log_id wird direkt auf metadata.product_log_id zugeordnet.
process_id principal.process.pid Der Wert von process_id wird direkt auf principal.process.pid zugeordnet.
reason security_result.description Der Wert von reason wird direkt auf security_result.description zugeordnet.
segment_number additional.fields.[key=segment_number].value.string_value Der Wert von segment_number wird in das Feld additional mit dem Schlüssel segment_number eingefügt.
sessionId network.session_id Der Wert von sessionId wird direkt auf network.session_id zugeordnet.
site target.hostname Der Wert von site wird direkt auf target.hostname zugeordnet.
site_id additional.fields.[key=site_id].value.string_value Der Wert von site_id wird in das Feld additional mit dem Schlüssel site_id eingefügt.
srcHost principal.ip Der Wert von srcHost wird direkt auf principal.ip zugeordnet, nachdem er als gültige IP-Adresse bestätigt wurde.
srcUid principal.user.userid Der Wert von srcUid wird direkt auf principal.user.userid zugeordnet.
srcUser principal.user.user_display_name Der Wert von srcUser wird direkt auf principal.user.user_display_name zugeordnet.
status security_result.action Wenn status failure ist (ohne Berücksichtigung der Groß- und Kleinschreibung), wird security_result.action auf BLOCK gesetzt. Andernfalls wird security_result.action auf ALLOW gesetzt.
status security_result.action_details Der Wert von status wird direkt auf security_result.action_details zugeordnet.
target target.application Der Wert von target wird direkt auf target.application zugeordnet. rep_client wird durch Representative Console und web/login durch Web/Login ersetzt.
target extensions.auth.type Wenn target = rep_client ist, wird extensions.auth.type auf MACHINE gesetzt. Wenn target = web/login ist, wird extensions.auth.type auf SSO gesetzt. Andernfalls wird extensions.auth.type auf AUTHTYPE_UNSPECIFIED gesetzt.
timestamp metadata.event_timestamp timestamp aus dem Rohprotokoll wird als Fallback verwendet, wenn weder datetime noch when vorhanden sind.
total_segments additional.fields.[key=total_segments].value.string_value Der Wert von total_segments wird in das Feld additional mit dem Schlüssel total_segments eingefügt.
device_product additional.fields.[key=device_product].value.string_value Der Wert von device_product wird in das Feld additional mit dem Schlüssel device_product eingefügt.
device_vendor additional.fields.[key=device_vendor].value.string_value Der Wert von device_vendor wird in das Feld additional mit dem Schlüssel device_vendor eingefügt.
device_version metadata.product_version Der Wert von device_version wird direkt auf metadata.product_version zugeordnet.
when metadata.event_timestamp Der Zeitstempel wird aus dem Feld when im UNIX-Format geparst, sofern vorhanden.
who principal.user.userid Wenn das Feld who mit dem Regex-Muster übereinstimmt, wird die extrahierte userid principal.user.userid zugeordnet. Andernfalls wird das gesamte Feld who auf principal.user.userid zugeordnet.
who principal.user.user_display_name Wenn das Feld who mit dem Regex-Muster übereinstimmt, wird der extrahierte Wert user_display_name principal.user.user_display_name zugeordnet.
who_ip principal.ip Der Wert von who_ip wird direkt auf principal.ip zugeordnet.
(Parser Logic) metadata.log_type Der Protokolltyp ist auf BEYONDTRUST_REMOTE_ACCESS festgelegt.
(Parser Logic) metadata.product_name Der Produktname ist auf BeyondTrust Secure Remote Access festgelegt.
(Parser Logic) metadata.vendor_name Der Name des Anbieters ist auf BeyondTrust festgelegt.
(Parser Logic) security_result.summary Der Wert wird im Format User %{eventName} abgeleitet.
(Parser Logic) extensions.auth.mechanism Wenn method using password enthält, wird der Mechanismus auf USERNAME_PASSWORD festgelegt. Wenn method using elevate enthält, wird der Mechanismus auf REMOTE festgelegt.

Änderungen

2022-09-30

Optimierung:

  • Grok wurde geschrieben, um unparse syslogs zu analysieren.
  • device_vendor wurde additional.fields zugeordnet.
  • event_name wurde additional.fields zugeordnet.
  • device_product wurde additional.fields zugeordnet.
  • externalKeyLabel wurde additional.fields zugeordnet.
  • dstPriv wurde additional.fields zugeordnet.
  • filePath wurde target.file.full_path zugeordnet.
  • fsize wurde target.file.size zugeordnet.

2022-07-14

  • Neu erstellter Parser.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten