BeyondTrust Secure Remote Access-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie BeyondTrust Secure Remote Access-Logs mit Bindplane erfassen. Der Parser verarbeitet zwei Syslog-Formate. Beim ersten Format werden Schlüssel/Wert-Paare in einer strukturierten Nachricht verwendet, beim zweiten Format werden Felder durch senkrechte Striche getrennt. Der Parser extrahiert relevante Felder aus beiden Formaten und ordnet sie dem UDM zu. Außerdem werden Ereignistypen anhand der extrahierten Keywords kategorisiert und es wird eine spezielle Logik für An- und Abmeldeereignisse sowie Authentifizierungstypen verwendet.
Hinweise
- Prüfen Sie, ob Sie eine Google Security Operations-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
- Sie benötigen privilegierten Zugriff auf BeyondTrust Secure Remote Access.
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 in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Greifen Sie auf die Konfigurationsdatei zu:
- 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: BEYONDTRUST_REMOTE_ACCESS 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 Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
BeyondTrust-Remotesupport konfigurieren
- Melden Sie sich in der BeyondTrust-Web-UI an.
- Wählen Sie Appliance> Sicherheit> Appliance-Verwaltung aus.
- Führen Sie im Abschnitt Syslog folgende Schritte aus:
- Nachrichtenformat: Wählen Sie Legacy-BSD-Format aus.
- Remote-Syslog-Server: Geben Sie die Bindplane-IP-Adresse und den Port ein.
- Klicken Sie auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
datetime |
metadata.event_timestamp |
Der Zeitstempel wird aus dem Feld datetime im RFC3339-Format geparst, wenn das Feld when nicht vorhanden ist. |
deviceHost |
target.hostname |
Der Wert von deviceHost wird direkt target.hostname zugeordnet. |
dstHost |
target.ip |
Der Wert von dstHost wird direkt 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 target.user.userid zugeordnet. |
dstUser |
target.user.user_display_name |
Der Wert von dstUser wird direkt 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 wird metadata.event_type auf USER_UNCATEGORIZED gesetzt, wenn eventName nicht leer ist. Wenn eventName leer ist und die Nachricht mit dem zweiten Grok-Muster übereinstimmt, wird metadata.event_type auf GENERIC_EVENT festgelegt. 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 aufgeteilt, die dann anhand ihrer Schlüssel 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 aufgeteilt, die dann anhand ihrer Schlüssel 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 metadata.description zugeordnet. |
product_event_type |
metadata.product_event_type |
Der Wert von product_event_type wird direkt metadata.product_event_type zugeordnet. |
product_log_id |
metadata.product_log_id |
Der Wert von product_log_id wird direkt metadata.product_log_id zugeordnet. |
process_id |
principal.process.pid |
Der Wert von process_id wird direkt principal.process.pid zugeordnet. |
reason |
security_result.description |
Der Wert von reason wird direkt 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 network.session_id zugeordnet. |
site |
target.hostname |
Der Wert von site wird direkt 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 principal.ip zugeordnet, nachdem er als gültige IP-Adresse bestätigt wurde. |
srcUid |
principal.user.userid |
Der Wert von srcUid wird direkt principal.user.userid zugeordnet. |
srcUser |
principal.user.user_display_name |
Der Wert von srcUser wird direkt 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 security_result.action_details zugeordnet. |
target |
target.application |
Der Wert von target wird direkt 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 |
Das timestamp aus dem Rohlog 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 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 der extrahierte userid principal.user.userid zugeordnet. Andernfalls wird das gesamte Feld who dem Feld principal.user.userid zugeordnet. |
who |
principal.user.user_display_name |
Wenn das Feld who mit dem Regex-Muster übereinstimmt, wird der extrahierte user_display_name principal.user.user_display_name zugeordnet. |
who_ip |
principal.ip |
Der Wert von who_ip wird direkt principal.ip zugeordnet. |
(Parserlogik) | metadata.log_type |
Der Protokolltyp ist auf BEYONDTRUST_REMOTE_ACCESS festgelegt. |
(Parserlogik) | metadata.product_name |
Der Produktname ist auf BeyondTrust Secure Remote Access festgelegt. |
(Parserlogik) | metadata.vendor_name |
Der Name des Anbieters ist auf BeyondTrust festgelegt. |
(Parserlogik) | security_result.summary |
Der Wert wird im Format User %{eventName} abgeleitet. |
(Parserlogik) | 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. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten