Recopila registros de CyberArk PAM

Compatible con:

Primero, este código del analizador 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 ejecutas la herramienta 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 SIEM Settings > Collection Agents.
  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 SIEM Settings > Profile.
  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 en 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 en 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 que ingiera Syslog y lo envíe a Google SecOps

  1. Accede a la máquina en la que está instalado el agente de 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, ubicado 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, ubicado 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
    

Configura la exportación de Syslog en PTA

  1. Accede al servidor de PTA con SSH.
  2. Abre el archivo application.properties, ubicado 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
actúa 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.
duser 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 el 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 a 3: INFORMATIONAL, 4: ERROR, 5: CRITICAL.
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 del usuario objetivo.
hora metadata.event_timestamp.seconds Se asigna directamente desde el campo time después de convertirlo al formato de marca de tiempo.
hora metadata.event_timestamp.nanos Se asigna directamente desde el campo time después de convertirlo 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 Se codifica como "CYBERARK_PAM".
extensions.auth.mechanism Se debe establecer en "USERNAME_PASSWORD" si event_type es "USER_LOGIN".

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.