Recopila registros de Citrix StoreFront

Compatible con:

En este documento, se explica cómo transferir registros de Citrix StoreFront a Google Security Operations con Bindplane. El analizador extrae campos de los registros con formato de registro de eventos de Windows de Citrix StoreFront. Utiliza la recopilación de registros de eventos de Windows para analizar el mensaje de registro y, luego, asigna estos valores al Modelo de datos unificado (UDM). También establece valores de metadatos predeterminados para el origen y el tipo del evento. El analizador extrae datos de los registros JSON de Citrix StoreFront dividiendo el campo de mensaje en entidades individuales, como Session, User, AppInstance, App, Connection y Machine, con una serie de patrones grok. Luego, asigna los campos extraídos a una estructura de modelo de datos unificado (UDM) y la enriquece con información de red, principal, intermediario y objetivo según la lógica condicional y las transformaciones de datos.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Es una instancia de Google SecOps.
  • Un host de Windows 2016 o posterior con systemd en el que se instalará BindPlane
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
  • Acceso con privilegios al servidor de Citrix StoreFront y a la consola de administración
  • Acceso administrativo al servidor de Windows que aloja StoreFront

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

Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.

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
    

Recursos de instalación adicionales

Configura el agente de BindPlane para que ingiera registros de eventos de Windows y los envíe a Google SecOps

  1. Accede al archivo de configuración:

    1. 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.
    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 de Servicios o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura el registro de eventos de StoreFront

  1. Accede al servidor de StoreFront con privilegios administrativos.
  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. Verifica que el registro de eventos de Windows esté habilitado:

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

Opcional: Configura la limitación del registro de eventos

  1. Navega 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 en cada directorio con un editor de texto.
  3. Ubica el elemento de registro y configúralo según sea necesario:

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
  4. duplicateInterval: Establece el período en horas, minutos y segundos durante el cual se supervisan las entradas de registro duplicadas.

  5. duplicateLimit: Establece la cantidad de entradas duplicadas que se deben registrar dentro del intervalo de tiempo especificado para activar la regulación de registros.

  6. Guarda los archivos de configuración.

Verifica la recopilación de registros

  1. Abre el Visor de eventos de Windows en el servidor de StoreFront.
  2. Navega a Registros de Windows > Aplicación o Registros de aplicaciones y servicios > Citrix Delivery Services.
  3. Verifica que se generen eventos de StoreFront.
  4. Revisa los registros del agente de Bindplane para confirmar que se reenvían 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, el valor se establece en "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 se establece en "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 establece como "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 el ID de usuario para un objeto de usuario intermedio.
Machine.AssociatedUserUPNs _target.group.email_addresses El valor se toma del campo Machine.AssociatedUserUPNs. Cada dirección de correo electrónico se extrae y se agrega al campo email_addresses del grupo objetivo.
Machine.ControllerDnsName _intermediary.hostname El valor se toma del campo Machine.ControllerDnsName. El espacio de nombres se establece en "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 se establece en "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 activo. La parte del dominio se usa como el dominio administrativo de destino, y la parte del activo se usa para construir el ID del activo de destino en el formato "máquina:".
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 establece en "ACTIVE". Si el valor es 1, se establece como "DELETED". Si el valor es 2 o 3, se establece en "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 el nombre de la empresa del usuario principal y el 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 agrega 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 se establece en "USER_LOGIN".
metadata.vendor_name El valor se establece en "Citrix".
metadata.product_name El valor se establece en "Monitor Service OData".
extensions.auth.type El valor se establece en "MACHINE".
_intermediary.namespace El valor se establece en "Servidor de StoreFront", "Controlador" o "Hipervisor", según el objeto intermedio.
_target.asset.type El valor se establece en "WORKSTATION".

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