CyberArk-PAM-Logs erfassen
Mit diesem Parsercode werden zuerst Felder aus PAM-Syslog-Nachrichten (CyberArk Privileged Access Manager) mithilfe von regulären Ausdrücken extrahiert. Anschließend werden die extrahierten Felder einem einheitlichen Datenmodell (Unified Data Model, UDM) zugeordnet. Die Daten werden mit zusätzlichem Kontext angereichert und der Ereignistyp wird anhand bestimmter Kriterien standardisiert.
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.
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 für die Datenaufnahmeauthentifizierung herunter.
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
- Führen Sie für die Windows-Installation das folgende Script aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Führen Sie für die Linux-Installation das folgende Script aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
Bindplane-Agent so konfigurieren, dass er Syslog-Dateien aufnimmt und an Google SecOps sendet
- Rufen Sie den Computer auf, auf dem der Bindplane-Agent installiert ist.
Bearbeiten Sie die Datei
config.yaml
so:receivers: tcplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Cyberark_PAM raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden:
sudo systemctl restart bindplane
Syslog-Export für CyberArk Vault konfigurieren
- Melden Sie sich beim Vault-Server an.
- Öffnen Sie die Konfigurationsdatei
dbparm.ini
unterC:\Program Files (x86)\CyberArk\Vault\Server\dbparm.ini
. Fügen Sie die folgenden Parameter hinzu oder ändern Sie sie:
SyslogServer=<syslog_server_ip> SyslogPort=<syslog_server_port> SyslogProtocol=<TCP or UDP> SyslogFormat=Syslog
Speichern Sie die Datei
dbparm.ini
.Starten Sie den Vault-Server neu:
net stop CyberArkVault net start CyberArkVault
Syslog-Export in PVWA konfigurieren
- Melden Sie sich beim PVWA-Server an.
- Öffnen Sie die Datei
Web.config
unterC:\inetpub\wwwroot\PasswordVault\
. Fügen Sie die folgenden Schlüssel hinzu oder ändern Sie sie:
<add key="SyslogServer" value="<syslog_server_ip>" /> <add key="SyslogPort" value="<syslog_server_port>" /> <add key="SyslogProtocol" value="<TCP or UDP>" /> <add key="SyslogFormat" value="Syslog" />
Speichern Sie die Änderungen in der Datei
Web.config
.Starten Sie den IIS-Dienst neu:
iisreset
Syslog-Export in PTA konfigurieren
- Greifen Sie über SSH auf den PTA-Server zu.
- Öffnen Sie die Datei
application.properties
unter/opt/cta/config/application.properties
. Fügen Sie die folgenden Zeilen hinzu oder ändern Sie sie:
syslog.server.ip=<syslog_server_ip> syslog.server.port=<syslog_server_port> syslog.protocol=<TCP or UDP>
Speichern Sie die Datei
application.properties
.Starten Sie den PTA-Dienst neu, um die Änderungen anzuwenden:
sudo service pta restart
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
handeln | metadata.description | Direkt aus dem Feld act zugeordnet. |
cn1 | additional.fields.value.string_value | Wird direkt aus dem Feld cn1 zugeordnet, wenn cn1Label nicht leer ist. |
cn1Label | additional.fields.key | Wird direkt aus dem Feld cn1Label zugeordnet, wenn cn1 nicht leer ist. |
cn2 | additional.fields.value.string_value | Wird direkt aus dem Feld cn2 zugeordnet, wenn cn2Label nicht leer ist. |
cn2Label | additional.fields.key | Wird direkt aus dem Feld cn2Label zugeordnet, wenn cn2 nicht leer ist. |
cs1 | additional.fields.value.string_value | Wird direkt aus dem Feld cs1 zugeordnet, wenn cs1Label nicht leer ist. |
cs1Label | additional.fields.key | Wird direkt aus dem Feld cs1Label zugeordnet, wenn cs1 nicht leer ist. |
cs2 | additional.fields.value.string_value | Wird direkt aus dem Feld cs2 zugeordnet, wenn cs2Label nicht leer ist. |
cs2Label | additional.fields.key | Wird direkt aus dem Feld cs2Label zugeordnet, wenn cs2 nicht leer ist. |
cs3 | additional.fields.value.string_value | Wird direkt aus dem Feld cs3 zugeordnet, wenn cs3Label nicht leer ist. |
cs3Label | additional.fields.key | Wird direkt aus dem Feld cs3Label zugeordnet, wenn cs3 nicht leer ist. |
cs4 | additional.fields.value.string_value | Wird direkt aus dem Feld cs4 zugeordnet, wenn cs4Label nicht leer ist. |
cs4Label | additional.fields.key | Wird direkt aus dem Feld cs4Label zugeordnet, wenn cs4 nicht leer ist. |
cs5 | additional.fields.value.string_value | Wird direkt aus dem Feld cs5 zugeordnet, wenn cs5Label nicht leer ist. |
cs5Label | additional.fields.key | Wird direkt aus dem Feld cs5Label zugeordnet, wenn cs5 nicht leer ist. |
dhost | target.hostname | Wird aus dem Feld dhost zugeordnet, wenn es sich nicht um eine IP-Adresse handelt. Wenn dhost leer ist, wird es von shost (IP-Adresse oder Hostname) zugeordnet. |
dhost | target.asset.hostname | Wird aus dem Feld dhost zugeordnet, wenn es sich nicht um eine IP-Adresse handelt. Wenn dhost leer ist, wird es von shost (IP-Adresse oder Hostname) zugeordnet. |
dhost | target.ip | Wird aus dem Feld dhost zugeordnet, wenn es sich um eine IP-Adresse handelt. |
dhost | target.asset.ip | Wird aus dem Feld dhost zugeordnet, wenn es sich um eine IP-Adresse handelt. |
duser | target.user.userid | Direkt aus dem Feld duser zugeordnet. |
dvc | intermediary.ip | Wird aus dem Feld dvc zugeordnet, wenn es sich um eine IP-Adresse handelt. |
externalId | metadata.product_log_id | Direkt aus dem Feld externalId zugeordnet. |
fname | target.file.full_path | Direkt aus dem Feld fname zugeordnet. |
Name | metadata.event_type | Wird verwendet, um event_type anhand der Kombination der Felder name , shost und dhost zu bestimmen. Mögliche Werte: USER_CHANGE_PASSWORD, FILE_READ, USER_LOGIN, FILE_OPEN, FILE_DELETION. Wenn keine Übereinstimmung gefunden wird, has_principal wahr und has_target falsch ist, wird event_type auf STATUS_UPDATE gesetzt. Andernfalls wird standardmäßig GENERIC_EVENT verwendet. |
prin_hostname | principal.hostname | Direkt aus dem Feld prin_hostname zugeordnet. Wenn das Feld leer ist, wird es von shost zugeordnet, sofern shost keine IP-Adresse ist. |
prin_hostname | principal.asset.hostname | Direkt aus dem Feld prin_hostname zugeordnet. Wenn das Feld leer ist, wird es von shost zugeordnet, sofern shost keine IP-Adresse ist. |
prin_ip | principal.ip | Direkt aus dem Feld prin_ip zugeordnet. Wenn das Feld leer ist, wird es von shost zugeordnet, sofern shost eine IP-Adresse ist. |
prin_ip | principal.asset.ip | Direkt aus dem Feld prin_ip zugeordnet. Wenn das Feld leer ist, wird es von shost zugeordnet, sofern shost eine IP-Adresse ist. |
Produkt | metadata.product_name | Direkt aus dem Feld product zugeordnet. Wenn dieser Wert nicht im Log vorhanden ist, wird standardmäßig „PAM“ verwendet. |
reason | security_result.description | Direkt aus dem Feld reason zugeordnet. |
die Ausprägung | security_result.severity | Wird anhand der folgenden Logik aus dem Feld severity zugeordnet: 1–3: INFORMATIONSMELDUNG, 4: FEHLER, 5: KRITISCH. |
shost | principal.hostname | Wird prin_hostname zugeordnet, wenn prin_hostname leer ist und shost keine IP-Adresse ist. |
shost | principal.asset.hostname | Wird prin_hostname zugeordnet, wenn prin_hostname leer ist und shost keine IP-Adresse ist. |
shost | principal.ip | Wird prin_ip zugeordnet, wenn prin_ip leer ist und shost eine IP-Adresse ist. |
shost | principal.asset.ip | Wird prin_ip zugeordnet, wenn prin_ip leer ist und shost eine IP-Adresse ist. |
shost | target.hostname | Wird target.hostname zugeordnet, wenn dhost leer ist und shost keine IP-Adresse ist. |
shost | target.asset.hostname | Wird target.hostname zugeordnet, wenn dhost leer ist und shost keine IP-Adresse ist. |
shost | target.ip | Wird target.ip zugeordnet, wenn dhost leer ist und shost eine IP-Adresse ist. |
shost | target.asset.ip | Wird target.ip zugeordnet, wenn dhost leer ist und shost eine IP-Adresse ist. |
Status | additional.fields.value.string_value | Direkt aus dem Feld status zugeordnet. |
suser | principal.user.userid | Aus dem Feld suser zugeordnet. Wenn duser leer ist, wird sie als Zielnutzer-ID betrachtet. |
Zeit | metadata.event_timestamp.seconds | Wird direkt aus dem Feld time nach der Umwandlung in das Zeitstempelformat zugeordnet. |
Zeit | metadata.event_timestamp.nanos | Wird direkt aus dem Feld time nach der Umwandlung in das Zeitstempelformat zugeordnet. |
vendor | metadata.vendor_name | Direkt aus dem Feld vendor zugeordnet. Wenn der Wert nicht im Protokoll vorhanden ist, wird standardmäßig „CYBERARK“ verwendet. |
Version | metadata.product_version | Direkt aus dem Feld version zugeordnet. |
metadata.log_type | Hartcodiert auf „CYBERARK_PAM“. | |
extensions.auth.mechanism | Legen Sie „USERNAME_PASSWORD“ fest, wenn event_type „USER_LOGIN“ ist. |
Änderungen
2024-05-05
- Neu erstellter Parser.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten