Recopila registros de Delinea Secret Server

Compatible con:

En este documento, se explica cómo recopilar registros de Secret Server de Delinea (anteriormente Thycotic). El analizador transforma los registros sin procesar en un formato estructurado que cumple con el UDM de Google Security Operations. Primero, extrae campos clave, como marcas de tiempo, tipos de eventos y la información del usuario. Luego, usa lógica condicional basada en el tipo de evento específico para asignar los datos a los campos de la AUA adecuados y, en última instancia, enriquece los datos para el análisis en Google SecOps.

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.
  • Asegúrate de tener acceso con privilegios a Delinea.

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. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.

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

Instalación de Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

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

  1. Accede al archivo de configuración:

    • Ubica el archivo config.yaml. Por lo general, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    • Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
      udplog:
        # Replace with your specific IP and port
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Path to the ingestion authentication file
        creds: '/path/to/your/ingestion-auth.json'
        # Your Chronicle customer ID
        customer_id: 'your_customer_id'
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
          log_type: SYSLOG
          namespace: thycotic
          raw_log_field: body
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  3. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Reemplaza <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia de Google SecOps.

Reinicia el agente de BindPlane para aplicar los cambios.

  • Para reiniciar el agente de BindPlane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de BindPlane en Windows, puedes usar la consola Services o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura Delinea Secret Server para enviar registros con Syslog

  1. Accede a Delinea Secret Server con credenciales de administrador.
  2. Ve a Administrador > Configuración.
  3. Haz clic en Editar.
  4. Selecciona la casilla de verificación Habilitar el registro de Syslog/CEF y especifica los siguientes detalles:
    • Servidor de syslog/CEF: Ingresa la dirección IP de tu Bindplane.
    • Protocolo Syslog/CEF: Selecciona UDP o TCP (según la configuración de Bindplane).
    • Puerto de Syslog/CEF: Ingresa el número de puerto en el que se configuró Bindplane para escuchar.
  5. Haz clic en Guardar.

Asignación de UDM

Campo de registro Asignación de UDM Lógica
Account_Domain event1.idm.read_only_udm.principal.domain El valor se toma del campo "Account_Domain" en el campo "msg" del registro sin procesar.
Por usuario event1.idm.read_only_udm.principal.user.userid El valor se toma del campo "Por usuario" en el campo "msg" del registro sin procesar.
ID del contenedor event1.idm.read_only_udm.principal.asset.asset_id El valor se toma del campo "Container Id" en el campo "msg" del registro sin procesar y tiene el prefijo "container_id:".
Nombre del contenedor event1.idm.read_only_udm.principal.resource.name El valor se toma del campo "Nombre del contenedor" en el campo "msg" del registro sin procesar.
cs2 event1.idm.read_only_udm.additional.fields[].value.string_value El valor se toma del campo "cs2" en el campo "msg" del registro sin procesar.
cs3 event1.idm.read_only_udm.target.file.full_path El valor se toma del campo "cs3" en el campo "msg" del registro sin procesar.
cs4 event1.idm.read_only_udm.principal.user.user_display_name El valor se toma del campo "cs4" en el campo "msg" del registro sin procesar.
Detalles event1.idm.read_only_udm.additional.fields[].value.string_value El valor se toma del campo “Detalles” en el campo “msg” del registro sin procesar.
fname event1.idm.read_only_udm.target.file.full_path El valor se toma del campo "fname" en el campo "msg" del registro sin procesar.
Host event1.idm.read_only_udm.principal.hostname, event1.idm.read_only_udm.principal.asset.hostname El valor se toma del campo "Host" en el campo "msg" del registro sin procesar.
Nombre del elemento event1.idm.read_only_udm.target.user.userid El valor se toma del campo "Item Name" en el campo "msg" del registro sin procesar.
event1.idm.read_only_udm.additional.fields[].key El valor está codificado como "fname".
event1.idm.read_only_udm.additional.fields[].key El valor está codificado como "Grupo o usuario".
event1.idm.read_only_udm.additional.fields[].key El valor está codificado como "Detalles".
event1.idm.read_only_udm.additional.fields[].key El valor está codificado como "type_id".
event1.idm.read_only_udm.extensions.auth.type El valor está codificado como "MACHINE".
event1.idm.read_only_udm.metadata.description El valor se toma del campo "thycotic_event", que se extrae del registro sin procesar con un patrón de grok.
event1.idm.read_only_udm.metadata.event_timestamp.seconds El valor se obtiene del campo "rt" si está presente, de lo contrario, del campo "ts". Ambos campos se extraen del registro sin procesar con patrones de grok.
event1.idm.read_only_udm.metadata.event_type El valor se determina en función del campo "thycotic_event" y otras condiciones. Por ejemplo, si "thycotic_event" es "USER - LOGIN", el tipo de evento se establece en "USER_LOGIN".
event1.idm.read_only_udm.metadata.log_type El valor está codificado en "THYCOTIC".
event1.idm.read_only_udm.metadata.product_event_type El valor se toma del campo "thycotic_event", que se extrae del registro sin procesar con un patrón grok.
event1.idm.read_only_udm.metadata.product_log_id El valor se toma del campo "action_id", que se extrae del registro sin procesar con un patrón grok.
event1.idm.read_only_udm.metadata.product_name El valor se toma del campo "device_product", que se extrae del registro sin procesar con un patrón grok. Si el campo está vacío, el valor se codifica en "Secret Server".
event1.idm.read_only_udm.metadata.product_version El valor se toma del campo "device_version", que se extrae del registro sin procesar con un patrón grok.
event1.idm.read_only_udm.metadata.vendor_name El valor está codificado como “Thycotic”.
event1.idm.read_only_udm.network.ip_protocol El valor se establece en "TCP" si el campo "input.type" es "tcp".
event1.idm.read_only_udm.observer.application El valor se toma del campo "agent.type" si está presente; de lo contrario, se codifica en "Secret Server".
event1.idm.read_only_udm.observer.asset_id El valor se establece en "ID de agente:" concatenado con el campo "agent.id".
event1.idm.read_only_udm.observer.hostname El valor se toma del campo "agent.hostname" si está presente, de lo contrario, del campo "server".
event1.idm.read_only_udm.observer.platform_version El valor se toma del campo "agent.version".
event1.idm.read_only_udm.observer.user.userid El valor se toma del campo "agent.name".
event1.idm.read_only_udm.principal.asset.asset_id El valor se establece en "ID:" concatenado con el campo "host.id".
event1.idm.read_only_udm.principal.asset.hardware.cpu_platform El valor se toma del campo "host.architecture".
event1.idm.read_only_udm.principal.asset.hostname El valor se toma del campo "server" si está presente, de lo contrario, del campo "host.hostname".
event1.idm.read_only_udm.principal.asset.ip El valor se toma del campo "src" si está presente, de lo contrario, del campo "src_ip".
event1.idm.read_only_udm.principal.hostname El valor se toma del campo "host.hostname" si está presente, de lo contrario, del campo "server".
event1.idm.read_only_udm.principal.ip El valor se toma del campo "src" si está presente, de lo contrario, del campo "src_ip" o del campo "host.ip".
event1.idm.read_only_udm.principal.mac El valor se toma del campo "host.mac".
event1.idm.read_only_udm.principal.platform El valor se establece en "LINUX" si el campo "host_os_platform" es "centos"; de lo contrario, se establece en el valor en mayúsculas del campo "host_os_platform".
event1.idm.read_only_udm.principal.platform_patch_level El valor se toma del campo "host.os.kernel".
event1.idm.read_only_udm.principal.platform_version El valor se toma del campo "host.os.version".
event1.idm.read_only_udm.principal.port El valor se toma del campo "src_port", que se extrae del campo "log.source.address" con un patrón grok.
event1.idm.read_only_udm.principal.user.user_display_name El valor se toma del campo "cs4" en el campo "msg" del registro sin procesar.
event1.idm.read_only_udm.principal.user.userid El valor se toma del campo "suser" en el campo "msg" del registro sin procesar o del campo "Por usuario" si "thycotic_event" es "USER - LOGIN", "USER - LOGOUT", "USER - LOGINFAILURE" o "USER - EDIT".
event1.idm.read_only_udm.security_result.action El valor se toma del campo "Action" en el campo "msg" del registro sin procesar. También se puede establecer en "ALLOW" o "BLOCK" según el valor de "thycotic_event".
event1.idm.read_only_udm.security_result.description El valor se toma del campo "temp_message", que contiene la parte restante del campo "msg" después de extraer otros campos.
event1.idm.read_only_udm.security_result.severity El valor se determina en función del campo "syslog_severity". Por ejemplo, si "syslog_severity" contiene "error" o "warning", la gravedad se establece en "HIGH". Si "thycotic_event" es "Registro del sistema", la gravedad se establece en "INFORMATIONAL".
event1.idm.read_only_udm.security_result.severity_details El valor se toma del campo "syslog_severity".
event1.idm.read_only_udm.target.file.full_path Para construir el valor, se concatenan los campos "cs3" y "fname" con un separador "/" si ambos campos están presentes. Si solo hay un campo, el valor se toma de ese campo.
event1.idm.read_only_udm.target.resource.product_object_id El valor se toma del campo "type_id".
event1.idm.read_only_udm.target.user.userid El valor se toma del campo "item_name" en el campo "msg" del registro sin procesar o del campo "Item Name" si "thycotic_event" es "USER - LOGIN", "USER - LOGOUT", "USER - LOGINFAILURE" o "USER - EDIT".
events.timestamp.seconds El valor se obtiene del campo "rt" si está presente, de lo contrario, del campo "ts". Ambos campos se extraen del registro sin procesar con patrones de grok.
rt event1.idm.read_only_udm.metadata.event_timestamp.seconds El valor se toma del campo "rt" en el campo "msg" del registro sin procesar y se usa para establecer la marca de tiempo del evento.
src event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip El valor se toma del campo "src" en el campo "msg" del registro sin procesar.
src_ip event1.idm.read_only_udm.principal.asset.ip, event1.idm.read_only_udm.principal.ip El valor se toma del campo "src_ip", que se extrae del campo "log.source.address" con un patrón grok.

Cambios

2024-06-04

  • Se mejoró el análisis de registros sin analizar.
  • Se asignaron los campos "Host" y "servidor" a los campos de la UDM relacionados con el nombre de host.
  • Se asignaron "Container_Id" y "Container_name" a los campos de la AUA relacionados con los nombres de los recursos y los activos.

2023-09-22

  • Se ajustó la lógica de análisis para controlar mejor los registros sin analizar.
  • Se agregó el manejo de errores para los campos "rt" y "ts".

12-06-2023

  • Se actualizó la lógica de análisis para admitir un nuevo formato de registro.
  • Se asignaron los campos "fname", "cs2" y "details" a los campos de la AUA para obtener información adicional y un resumen de los resultados de seguridad.

2022-08-01

  • Se agregó compatibilidad con el análisis de registros en formato JSON.
  • Se asignaron varios campos de los registros JSON a sus campos de la AUA correspondientes, incluidos los campos relacionados con la información del dispositivo y del agente, las direcciones IP, los detalles del host, la información de la plataforma y la gravedad de la seguridad.
  • Se agregó el análisis de registros con el tipo "SECRET - SECRETPASSWORDCHANGEFAILURE".

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