Raccogli i log di CyberArk PAM

Supportato in:

Questo codice del parser estrae innanzitutto i campi dai messaggi syslog di CyberArk Privileged Access Manager (PAM) utilizzando espressioni regolari. Poi mappa i campi estratti a un modello di dati unificato (UDM), arricchendo i dati con un contesto aggiuntivo e standardizzando il tipo di evento in base a criteri specifici.

Prima di iniziare

  • Assicurati di avere un'istanza Google Security Operations.
  • Assicurati di utilizzare Windows 2016 o versioni successive o un host Linux con systemd.
  • Se il servizio è in esecuzione dietro un proxy, assicurati che le porte del firewall siano aperte.

Recupera il file di autenticazione di importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'importazione.

Ottenere l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa BindPlane Agent

  1. Per l'installazione su Windows, esegui il seguente script:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Per l'installazione di Linux, esegui il seguente script:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Ulteriori opzioni di installazione sono disponibili in questa guida all'installazione.

Configurare l'agente BindPlane per importare i syslog e inviarli a Google SecOps

  1. Accedi al computer su cui è installato BindPlane.
  2. Modifica il file config.yaml come segue:

    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
    
  3. Riavvia l'agente BindPlane per applicare le modifiche:

    sudo systemctl restart bindplane
    

Configurare Syslog Export per CyberArk Vault

  1. Accedi al server Vault.
  2. Apri il file di configurazione dbparm.ini, che si trova in C:\Program Files (x86)\CyberArk\Vault\Server\dbparm.ini.
  3. Aggiungi o modifica i seguenti parametri:

    SyslogServer=<syslog_server_ip>
    SyslogPort=<syslog_server_port>
    SyslogProtocol=<TCP or UDP>
    SyslogFormat=Syslog
    
  4. Salva il file dbparm.ini.

  5. Riavvia il server Vault:

    net stop CyberArkVault
    net start CyberArkVault
    

Configurare l'esportazione Syslog in PVWA

  1. Accedi al server PVWA.
  2. Apri il file Web.config, che si trova in: C:\inetpub\wwwroot\PasswordVault\
  3. Aggiungi o modifica le seguenti chiavi:

    <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" />
    
  4. Salva le modifiche nel file Web.config.

  5. Riavvia il servizio IIS:

    iisreset
    

Configurare l'esportazione Syslog in PTA

  1. Accedi al server PTA tramite SSH.
  2. Apri il file application.properties, che si trova in: /opt/cta/config/application.properties
  3. Aggiungi o modifica le seguenti righe:

    syslog.server.ip=<syslog_server_ip>
    syslog.server.port=<syslog_server_port>
    syslog.protocol=<TCP or UDP>
    
  4. Salva il file application.properties.

  5. Riavvia il servizio PTA per applicare le modifiche:

    sudo service pta restart
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
agire metadata.description Mappato direttamente dal campo act.
cn1 additional.fields.value.string_value Mappato direttamente dal campo cn1 quando cn1Label non è vuoto.
cn1Label additional.fields.key Mappato direttamente dal campo cn1Label quando cn1 non è vuoto.
cn2 additional.fields.value.string_value Mappato direttamente dal campo cn2 quando cn2Label non è vuoto.
cn2Label additional.fields.key Mappato direttamente dal campo cn2Label quando cn2 non è vuoto.
cs1 additional.fields.value.string_value Mappato direttamente dal campo cs1 quando cs1Label non è vuoto.
cs1Label additional.fields.key Mappato direttamente dal campo cs1Label quando cs1 non è vuoto.
cs2 additional.fields.value.string_value Mappato direttamente dal campo cs2 quando cs2Label non è vuoto.
cs2Label additional.fields.key Mappato direttamente dal campo cs2Label quando cs2 non è vuoto.
cs3 additional.fields.value.string_value Mappato direttamente dal campo cs3 quando cs3Label non è vuoto.
cs3Label additional.fields.key Mappato direttamente dal campo cs3Label quando cs3 non è vuoto.
cs4 additional.fields.value.string_value Mappato direttamente dal campo cs4 quando cs4Label non è vuoto.
cs4Label additional.fields.key Mappato direttamente dal campo cs4Label quando cs4 non è vuoto.
cs5 additional.fields.value.string_value Mappato direttamente dal campo cs5 quando cs5Label non è vuoto.
cs5Label additional.fields.key Mappato direttamente dal campo cs5Label quando cs5 non è vuoto.
dhost target.hostname Mappato dal campo dhost se non è un indirizzo IP. Se dhost è vuoto, viene mappato da shost (IP o nome host).
dhost target.asset.hostname Mappato dal campo dhost se non è un indirizzo IP. Se dhost è vuoto, viene mappato da shost (IP o nome host).
dhost target.ip Mappato dal campo dhost se si tratta di un indirizzo IP.
dhost target.asset.ip Mappato dal campo dhost se si tratta di un indirizzo IP.
duser target.user.userid Mappato direttamente dal campo duser.
dvc intermediary.ip Mappato dal campo dvc se si tratta di un indirizzo IP.
externalId metadata.product_log_id Mappato direttamente dal campo externalId.
fname target.file.full_path Mappato direttamente dal campo fname.
nome metadata.event_type Utilizzato per determinare il valore event_type in base alla combinazione dei campi name, shost e dhost. Valori possibili: USER_CHANGE_PASSWORD, FILE_READ, USER_LOGIN, FILE_OPEN, FILE_DELETION. Se non viene trovata alcuna corrispondenza e has_principal è true e has_target è false, event_type viene impostato su STATUS_UPDATE. In caso contrario, il valore predefinito è GENERIC_EVENT.
prin_hostname principal.hostname Mappato direttamente dal campo prin_hostname. Se è vuoto, viene mappato da shost se shost non è un indirizzo IP.
prin_hostname principal.asset.hostname Mappato direttamente dal campo prin_hostname. Se è vuoto, viene mappato da shost se shost non è un indirizzo IP.
prin_ip principal.ip Mappato direttamente dal campo prin_ip. Se è vuoto, viene mappato da shost se shost è un indirizzo IP.
prin_ip principal.asset.ip Mappato direttamente dal campo prin_ip. Se è vuoto, viene mappato da shost se shost è un indirizzo IP.
prodotto metadata.product_name Mappato direttamente dal campo product. Se non è presente nel log, il valore predefinito è "PAM".
motivo security_result.description Mappato direttamente dal campo reason.
gravità security_result.severity Mappato dal campo severity in base alla seguente logica: 1-3: INFORMATIVO, 4: ERRORE, 5: CRITICO.
shost principal.hostname Mappato a prin_hostname se prin_hostname è vuoto e shost non è un indirizzo IP.
shost principal.asset.hostname Mappato a prin_hostname se prin_hostname è vuoto e shost non è un indirizzo IP.
shost principal.ip Mappato a prin_ip se prin_ip è vuoto e shost è un indirizzo IP.
shost principal.asset.ip Mappato a prin_ip se prin_ip è vuoto e shost è un indirizzo IP.
shost target.hostname Mappato a target.hostname se dhost è vuoto e shost non è un indirizzo IP.
shost target.asset.hostname Mappato a target.hostname se dhost è vuoto e shost non è un indirizzo IP.
shost target.ip Mappato a target.ip se dhost è vuoto e shost è un indirizzo IP.
shost target.asset.ip Mappato a target.ip se dhost è vuoto e shost è un indirizzo IP.
stato additional.fields.value.string_value Mappato direttamente dal campo status.
suser principal.user.userid Mappato dal campo suser. Se duser è vuoto, viene considerato l'ID utente target.
tempo metadata.event_timestamp.seconds Mappato direttamente dal campo time dopo la conversione in formato timestamp.
tempo metadata.event_timestamp.nanos Mappato direttamente dal campo time dopo la conversione in formato timestamp.
vendor metadata.vendor_name Mappato direttamente dal campo vendor. Se non è presente nel log, il valore predefinito è "CYBERARK".
versione metadata.product_version Mappato direttamente dal campo version.
metadata.log_type Hardcoded su "CYBERARK_PAM".
extensions.auth.mechanism Imposta su "USERNAME_PASSWORD" se event_type è "USER_LOGIN".

Modifiche

2024-05-05

  • Parser appena creato.