Recoger registros de Citrix StoreFront

Disponible en:

En este documento se explica cómo ingerir registros de Citrix StoreFront en Google Security Operations mediante Bindplane. El analizador extrae campos de los registros con formato de registro de eventos de Windows de Citrix StoreFront. Usa la recogida de registros de eventos de Windows para analizar el mensaje de registro y, a continuación, asigna estos valores al modelo de datos unificado (UDM). También define los valores de metadatos predeterminados de la fuente y el tipo de evento. El analizador extrae datos de los registros JSON de Citrix StoreFront desglosando el campo de mensaje en entidades individuales, como Session, User, AppInstance, App, Connection y Machine, mediante una serie de patrones grok. A continuación, asigna los campos extraídos a una estructura de modelo de datos unificado (UDM) y la enriquece con información de la red, la entidad principal, el intermediario y el objetivo en función de la lógica condicional y las transformaciones de datos.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps.
  • Un host con Windows 2016 o una versión posterior con systemd donde se instalará Bindplane
  • Si se ejecuta a través de un proxy, asegúrese de que los puertos del cortafuegos estén abiertos según los requisitos del agente de Bindplane.
  • Acceso privilegiado al servidor Citrix StoreFront y a la consola de gestión
  • Acceso de administrador al servidor Windows que aloja StoreFront

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en 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.

Instalar el agente de Bindplane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.

Instalación de ventanas

  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
    

Recursos de instalación adicionales

Configurar el agente de Bindplane para ingerir registros de eventos de Windows y enviarlos a Google SecOps

  1. Accede al archivo de configuración:

    1. Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    2. 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:
      windowseventlog/storefront:
        channel: Application
        operators:
          - type: filter
            expr: 'record["source_name"] matches "^Citrix"'
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: 'C:/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: CUSTOMER_ID_PLACEHOLDER
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'CITRIX_STOREFRONT'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/storefront:
          receivers:
            - windowseventlog/storefront
          exporters:
            - chronicle/chronicle_w_labels
    

Reinicia el agente de Bindplane para aplicar los cambios

  1. Para reiniciar el agente de BindPlane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar el registro de eventos de StoreFront

  1. Inicia sesión en StoreFront Server con privilegios de administrador.
  2. Abre PowerShell como administrador.
  3. Carga el módulo de PowerShell de StoreFront:

    Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
    
  4. Habilita el registro detallado para solucionar problemas (opcional):

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    
  5. Comprueba que el registro de eventos de Windows esté habilitado:

    • Abre Visor de eventos en el servidor StoreFront.
    • Ve a Registros de aplicaciones y servicios > Citrix Delivery Services.
    • Verifica que se registren eventos para el servicio de autenticación, las tiendas y Receiver para sitios web.

Opcional: Configurar la limitación de registros de eventos

  1. Ve a los directorios de configuración de StoreFront:
    • Servicio de autenticación: C:/inetpub/wwwroot/Citrix/Authentication
    • Tienda: C:/inetpub/wwwroot/Citrixstorename
    • Receptor del sitio web: C:/inetpub/wwwroot/Citrixstorename/Web
  2. Abre el archivo web.config de cada directorio con un editor de texto.
  3. Busca el elemento de registro y configúralo según sea necesario:

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
  4. duplicateInterval define el periodo en horas, minutos y segundos durante el que se monitorizan las entradas de registro duplicadas.

  5. duplicateLimit define el número de entradas duplicadas que se deben registrar en el intervalo de tiempo especificado para activar la limitación de registros.

  6. Guarda los archivos de configuración.

Verificar la recogida de registros

  1. Abre el Visor de eventos de Windows en el servidor StoreFront.
  2. Ve a Registros de Windows > Aplicación o Registros de aplicaciones y servicios > Servicios de entrega de Citrix.
  3. Verifica que se estén generando eventos de StoreFront.
  4. Consulta los registros del agente de Bindplane para confirmar que los registros se están reenviando a Google SecOps.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
App.PublishedName _principal.application El valor se toma del campo App.PublishedName.
Connection.ClientAddress _principal.asset.ip El valor se toma del campo Connection.ClientAddress.
Connection.ClientName _principal.asset.hostname El valor se toma del campo Connection.ClientName.
Connection.ClientPlatform _principal.asset.platform_software.platform El valor se toma del campo Connection.ClientPlatform y se convierte a mayúsculas. Si el valor es "WINDOWS", "MAC" o "LINUX", se usa directamente. De lo contrario, se le asigna el valor "UNKNOWN_PLATFORM".
Connection.ConnectedViaHostName src.hostname El valor se toma del campo Connection.ConnectedViaHostName.
Connection.LaunchedViaHostName _intermediary.hostname El valor se toma del campo Connection.LaunchedViaHostName. El espacio de nombres es "Servidor de StoreFront".
Connection.LaunchedViaIPAddress _intermediary.ip El valor se toma del campo Connection.LaunchedViaIPAddress.
Connection.Protocol network.application_protocol El valor se toma del campo Connection.Protocol. Si el valor es "HDX", se asigna el valor "UNKNOWN_APPLICATION_PROTOCOL".
Machine.AgentVersion metadata.product_version El valor se toma del campo Machine.AgentVersion.
Machine.AssociatedUserNames _intermediary.user.userid El valor se toma del campo Machine.AssociatedUserNames. Cada nombre se extrae y se usa como ID de usuario de un objeto de usuario intermediario.
Machine.AssociatedUserUPNs _target.group.email_addresses El valor se toma del campo Machine.AssociatedUserUPNs. Cada dirección de correo se extrae y se añade al campo email_addresses del grupo de destino.
Machine.ControllerDnsName _intermediary.hostname El valor se toma del campo Machine.ControllerDnsName. El espacio de nombres es "Controller".
Machine.CreatedDate _target.asset.attribute.creation_time El valor se toma del campo Machine.CreatedDate y se convierte en una marca de tiempo.
Machine.DesktopGroupId _target.group.product_object_id El valor se toma del campo Machine.DesktopGroupId.
Machine.DnsName _target.asset.network_domain El valor se toma del campo Machine.DnsName.
Machine.HostedMachineName _target.asset.hostname El valor se toma del campo Machine.HostedMachineName.
Machine.HostingServerName _intermediary.hostname El valor se toma del campo Machine.HostingServerName. El espacio de nombres es "Hypervisor".
Machine.IPAddress _target.asset.ip El valor se toma del campo Machine.IPAddress.
Machine.LastDeregisteredDate _target.asset.last_discover_time El valor se toma del campo Machine.LastDeregisteredDate y se convierte en una marca de tiempo.
Machine.ModifiedDate _target.asset.system_last_update_time El valor se toma del campo Machine.ModifiedDate y se convierte en una marca de tiempo.
Machine.Name _target.asset.asset_id, _target.administrative_domain El valor se toma del campo Machine.Name y se divide en partes de dominio y de recurso. La parte del dominio se usa como dominio administrativo de destino, y la parte del recurso se usa para crear el ID del recurso de destino con el formato "machine:".
Machine.OSType _target.asset.platform_software.platform_version El valor se toma del campo Machine.OSType.
Machine.PoweredOnDate _target.asset.last_boot_time El valor se toma del campo Machine.PoweredOnDate y se convierte en una marca de tiempo.
Machine.RegistrationStateChangeDate _target.asset.first_discover_time El valor se toma del campo Machine.RegistrationStateChangeDate y se convierte en una marca de tiempo.
Session.EndDate _vulns.last_found El valor se toma del campo Session.EndDate y se convierte en una marca de tiempo.
Session.LifecycleState extensions.auth.auth_details El valor se toma del campo Session.LifecycleState. Si el valor es 0, se le asigna el valor "ACTIVE". Si el valor es 1, se le asigna el valor "DELETED". Si el valor es 2 o 3, se le asigna el valor "UNKNOWN_AUTHENTICATION_STATUS".
Session.LogOnDuration network.session_duration.seconds El valor se toma del campo Session.LogOnDuration y se convierte en un número entero.
Session.SessionKey network.session_id El valor se toma del campo Session.SessionKey.
Session.StartDate _vulns.first_found El valor se toma del campo Session.StartDate y se convierte en una marca de tiempo.
User.Domain _principal.user.company_name, _principal.administrative_domain El valor se toma del campo User.Domain y se usa como nombre de la empresa del usuario principal y como dominio administrativo principal.
User.FullName _principal.user.user_display_name El valor se toma del campo User.FullName.
User.Sid _principal.user.windows_sid El valor se toma del campo User.Sid.
User.Upn _principal.user.email_addresses El valor se toma del campo User.Upn y se añade al campo email_addresses del usuario principal.
User.UserName _principal.user.userid El valor se toma del campo User.UserName.
metadata.event_type El valor es "USER_LOGIN".
metadata.vendor_name El valor se define como "Citrix".
metadata.product_name El valor es "Monitor Service OData".
extensions.auth.type El valor es "MACHINE".
_intermediary.namespace El valor se establece en "StoreFront server", "Controller" o "Hypervisor" en función del objeto intermediario.
_target.asset.type El valor es "WORKSTATION".

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.