Recopila registros de PAM de CyberArk

Compatible con:

Este código del analizador primero extrae campos de los mensajes de syslog de CyberArk Privileged Access Manager (PAM) con expresiones regulares. Luego, asigna los campos extraídos a un modelo de datos unificado (UDM), enriquece los datos con contexto adicional y estandariza el tipo de evento según criterios específicos.

Antes de comenzar

  • Asegúrate de tener una instancia de Google Security Operations.
  • Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

  1. Para la instalación de Windows, ejecuta la siguiente secuencia de comandos:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. Para la instalación de Linux, ejecuta la siguiente secuencia de comandos:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. Puedes encontrar opciones de instalación adicionales en esta guía de instalación.

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede a la máquina en la que está instalado BindPlane.
  2. Edita el archivo config.yaml de la siguiente manera:

    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. Reinicia el agente de BindPlane para aplicar los cambios:

    sudo systemctl restart bindplane
    

Configura la exportación de Syslog para CyberArk Vault

  1. Accede al servidor de Vault.
  2. Abre el archivo de configuración dbparm.ini, que se encuentra en C:\Program Files (x86)\CyberArk\Vault\Server\dbparm.ini.
  3. Agrega o modifica los siguientes parámetros:

    SyslogServer=<syslog_server_ip>
    SyslogPort=<syslog_server_port>
    SyslogProtocol=<TCP or UDP>
    SyslogFormat=Syslog
    
  4. Guarda el archivo dbparm.ini.

  5. Reinicia el servidor de Vault:

    net stop CyberArkVault
    net start CyberArkVault
    

Configura la exportación de Syslog en PVWA

  1. Accede al servidor de PVWA.
  2. Abre el archivo Web.config, que se encuentra en C:\inetpub\wwwroot\PasswordVault\.
  3. Agrega o modifica las siguientes claves:

    <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. Guarda los cambios en el archivo Web.config.

  5. Reinicia el servicio de IIS:

    iisreset
    

Cómo configurar la exportación de Syslog en PTA

  1. Accede al servidor de PTA mediante SSH.
  2. Abre el archivo application.properties, que se encuentra en /opt/cta/config/application.properties.
  3. Agrega o modifica las siguientes líneas:

    syslog.server.ip=<syslog_server_ip>
    syslog.server.port=<syslog_server_port>
    syslog.protocol=<TCP or UDP>
    
  4. Guarda el archivo application.properties.

  5. Reinicia el servicio de PTA para aplicar los cambios:

    sudo service pta restart
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
actuar metadata.description Se asigna directamente desde el campo act.
cn1 additional.fields.value.string_value Se asigna directamente desde el campo cn1 cuando cn1Label no está vacío.
cn1Label additional.fields.key Se asigna directamente desde el campo cn1Label cuando cn1 no está vacío.
cn2 additional.fields.value.string_value Se asigna directamente desde el campo cn2 cuando cn2Label no está vacío.
cn2Label additional.fields.key Se asigna directamente desde el campo cn2Label cuando cn2 no está vacío.
cs1 additional.fields.value.string_value Se asigna directamente desde el campo cs1 cuando cs1Label no está vacío.
cs1Label additional.fields.key Se asigna directamente desde el campo cs1Label cuando cs1 no está vacío.
cs2 additional.fields.value.string_value Se asigna directamente desde el campo cs2 cuando cs2Label no está vacío.
cs2Label additional.fields.key Se asigna directamente desde el campo cs2Label cuando cs2 no está vacío.
cs3 additional.fields.value.string_value Se asigna directamente desde el campo cs3 cuando cs3Label no está vacío.
cs3Label additional.fields.key Se asigna directamente desde el campo cs3Label cuando cs3 no está vacío.
cs4 additional.fields.value.string_value Se asigna directamente desde el campo cs4 cuando cs4Label no está vacío.
cs4Label additional.fields.key Se asigna directamente desde el campo cs4Label cuando cs4 no está vacío.
cs5 additional.fields.value.string_value Se asigna directamente desde el campo cs5 cuando cs5Label no está vacío.
cs5Label additional.fields.key Se asigna directamente desde el campo cs5Label cuando cs5 no está vacío.
dhost target.hostname Se asigna desde el campo dhost si no es una dirección IP. Si dhost está vacío, se asigna desde shost (IP o nombre de host).
dhost target.asset.hostname Se asigna desde el campo dhost si no es una dirección IP. Si dhost está vacío, se asigna desde shost (IP o nombre de host).
dhost target.ip Se asigna desde el campo dhost si es una dirección IP.
dhost target.asset.ip Se asigna desde el campo dhost si es una dirección IP.
ducha target.user.userid Se asigna directamente desde el campo duser.
dvc intermediary.ip Se asigna desde el campo dvc si es una dirección IP.
externalId metadata.product_log_id Se asigna directamente desde el campo externalId.
fname target.file.full_path Se asigna directamente desde el campo fname.
nombre metadata.event_type Se usa para determinar event_type en función de la combinación de los campos name, shost y dhost. Valores posibles: USER_CHANGE_PASSWORD, FILE_READ, USER_LOGIN, FILE_OPEN, FILE_DELETION. Si no se encuentra ninguna coincidencia, y has_principal es verdadero y has_target es falso, event_type se establece en STATUS_UPDATE. De lo contrario, el valor predeterminado es GENERIC_EVENT.
prin_hostname principal.hostname Se asigna directamente desde el campo prin_hostname. Si está vacío, se asigna desde shost si shost no es una dirección IP.
prin_hostname principal.asset.hostname Se asigna directamente desde el campo prin_hostname. Si está vacío, se asigna desde shost si shost no es una dirección IP.
prin_ip principal.ip Se asigna directamente desde el campo prin_ip. Si está vacío, se asigna desde shost si shost es una dirección IP.
prin_ip principal.asset.ip Se asigna directamente desde el campo prin_ip. Si está vacío, se asigna desde shost si shost es una dirección IP.
producto metadata.product_name Se asigna directamente desde el campo product. Si no está presente en el registro, el valor predeterminado es “PAM”.
Reason security_result.description Se asigna directamente desde el campo reason.
gravedad, security_result.severity Se asigna desde el campo severity según la siguiente lógica: 1-3: INFORMACIÓN, 4: ERROR, 5: CRÍTICO.
shost principal.hostname Se asigna a prin_hostname si prin_hostname está vacío y shost no es una dirección IP.
shost principal.asset.hostname Se asigna a prin_hostname si prin_hostname está vacío y shost no es una dirección IP.
shost principal.ip Se asigna a prin_ip si prin_ip está vacío y shost es una dirección IP.
shost principal.asset.ip Se asigna a prin_ip si prin_ip está vacío y shost es una dirección IP.
shost target.hostname Se asigna a target.hostname si dhost está vacío y shost no es una dirección IP.
shost target.asset.hostname Se asigna a target.hostname si dhost está vacío y shost no es una dirección IP.
shost target.ip Se asigna a target.ip si dhost está vacío y shost es una dirección IP.
shost target.asset.ip Se asigna a target.ip si dhost está vacío y shost es una dirección IP.
estado additional.fields.value.string_value Se asigna directamente desde el campo status.
Suser principal.user.userid Se asignó desde el campo suser. Si duser está vacío, se considera el ID de usuario objetivo.
hora metadata.event_timestamp.seconds Se asignan directamente desde el campo time después de convertirlos al formato de marca de tiempo.
hora metadata.event_timestamp.nanos Se asignan directamente desde el campo time después de convertirlos al formato de marca de tiempo.
vendor metadata.vendor_name Se asigna directamente desde el campo vendor. Si no está presente en el registro, el valor predeterminado es “CYBERARK”.
versión metadata.product_version Se asigna directamente desde el campo version.
metadata.log_type Está codificado en "CYBERARK_PAM".
extensions.auth.mechanism Establece el valor en "USERNAME_PASSWORD" si event_type es "USER_LOGIN".

Cambios

2024-05-05

  • Sin embargo, el analizador se creó recientemente.