Recopila registros de Delinea Secret Server

Compatible con:

En este documento, se explica cómo recopilar registros de Delinea (anteriormente, Thycotic) Secret Server. 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 e información del usuario. Luego, usa lógica condicional basada en el tipo de evento específico para asignar los datos a los campos correspondientes del UDM y, por último, enriquece los datos para su 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 ejecutas la herramienta 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 SIEM Settings > Collection Agents.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará el agente de BindPlane.

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

Instalación en 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 en 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 que ingiera Syslog y lo envíe 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 Cómo obtener el archivo de autenticación de la transferencia de datos 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 de Servicios 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 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 "By User" 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 "Nombre del elemento" 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 "Details".
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 deriva del campo "rt" si está presente; de lo contrario, se deriva 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 como "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 de 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 de 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 de Grok. Si el campo está vacío, el valor se codifica como "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 de 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 como "Secret Server".
event1.idm.read_only_udm.observer.asset_id El valor se establece en "ID del 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, se toma 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, se toma 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, se toma 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, se toma del campo "server".
event1.idm.read_only_udm.principal.ip El valor se toma del campo "src" si está presente; de lo contrario, se toma 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 de 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 "By User" 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 según el campo "syslog_severity". Por ejemplo, si "syslog_severity" contiene "error" o "warning", la gravedad se establece en "ALTA". Si "thycotic_event" es "System Log", 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 El valor se construye concatenando los campos "cs3" y "fname" con un separador "/" si ambos campos están presentes. Si solo hay un campo presente, 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 deriva del campo "rt" si está presente; de lo contrario, se deriva 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 de Grok.

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