Coletar registros do Citrix StoreFront

Compatível com:

Este documento explica como ingerir registros do Citrix StoreFront no Google Security Operations usando o Bindplane. O analisador extrai campos de registros formatados do log de eventos do Windows do Citrix StoreFront. Ele usa a coleta de logs de eventos do Windows para analisar a mensagem de log e mapear esses valores para o Modelo Unificado de Dados (UDM, na sigla em inglês). Ele também define valores de metadados padrão para a origem e o tipo do evento. O analisador extrai dados dos registros JSON do Citrix StoreFront dividindo o campo de mensagem em entidades individuais, como Session, User, AppInstance, App, Connection e Machine, usando uma série de padrões grok. Em seguida, ele mapeia os campos extraídos para uma estrutura de modelo de dados unificado (UDM), enriquecendo-a com informações de rede, principal, intermediário e destino com base na lógica condicional e nas transformações de dados.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps.
  • Um host Windows 2016 ou mais recente com systemd em que o Bindplane será instalado
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.
  • Acesso privilegiado ao servidor Citrix StoreFront e ao console de gerenciamento
  • Acesso administrativo ao servidor Windows que hospeda o StoreFront

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

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

Outros recursos de instalação

Configure o agente do Bindplane para ingerir logs de eventos do Windows e enviar para o Google SecOps

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml da seguinte forma:

    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
    

Reinicie o agente do Bindplane para aplicar as mudanças

  1. Para reiniciar o agente do BindPlane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o registro de eventos do StoreFront

  1. Faça login no servidor StoreFront com privilégios de administrador.
  2. Abra o PowerShell como administrador.
  3. Carregue o módulo do PowerShell do StoreFront:

    Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
    
  4. Ative o registro detalhado para solução de problemas (opcional):

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    
  5. Verifique se a geração de registros de eventos do Windows está ativada:

    • Abra o Visualizador de eventos no servidor do StoreFront.
    • Acesse Logs de aplicativos e serviços > Citrix Delivery Services.
    • Verifique se os eventos estão sendo registrados para o serviço de autenticação, as lojas e os sites do Receiver para Web.

Opcional: configurar a limitação de registros de eventos

  1. Navegue até os diretórios de configuração do StoreFront:
    • Serviço de autenticação: C:/inetpub/wwwroot/Citrix/Authentication
    • Loja: C:/inetpub/wwwroot/Citrixstorename
    • Receptor para site: C:/inetpub/wwwroot/Citrixstorename/Web
  2. Abra o arquivo web.config em cada diretório usando um editor de texto.
  3. Localize o elemento de logger e configure conforme necessário:

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
  4. duplicateInterval: define o período em horas, minutos e segundos em que as entradas de registro duplicadas são monitoradas.

  5. duplicateLimit: define o número de entradas duplicadas que precisam ser registradas no intervalo de tempo especificado para acionar a limitação de registros.

  6. Salve os arquivos de configuração.

Verificar a coleta de registros

  1. Abra o Visualizador de Eventos do Windows no servidor StoreFront.
  2. Acesse Logs do Windows > Aplicativo ou Logs de aplicativos e serviços > Citrix Delivery Services.
  3. Verifique se os eventos do StoreFront estão sendo gerados.
  4. Verifique os registros do agente do Bindplane para confirmar se eles estão sendo encaminhados para o Google SecOps.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
App.PublishedName _principal.application O valor é extraído do campo App.PublishedName.
Connection.ClientAddress _principal.asset.ip O valor é extraído do campo "Connection.ClientAddress".
Connection.ClientName _principal.asset.hostname O valor é extraído do campo "Connection.ClientName".
Connection.ClientPlatform _principal.asset.platform_software.platform O valor é extraído do campo "Connection.ClientPlatform" e convertido em letras maiúsculas. Se o valor for "WINDOWS", "MAC" ou "LINUX", ele será usado diretamente. Caso contrário, o valor será definido como "UNKNOWN_PLATFORM".
Connection.ConnectedViaHostName src.hostname O valor é extraído do campo Connection.ConnectedViaHostName.
Connection.LaunchedViaHostName _intermediary.hostname O valor é extraído do campo "Connection.LaunchedViaHostName". O namespace está definido como "Servidor StoreFront".
Connection.LaunchedViaIPAddress _intermediary.ip O valor é extraído do campo "Connection.LaunchedViaIPAddress".
Connection.Protocol network.application_protocol O valor é extraído do campo "Connection.Protocol". Se o valor for "HDX", ele será definido como "UNKNOWN_APPLICATION_PROTOCOL".
Machine.AgentVersion metadata.product_version O valor é extraído do campo "Machine.AgentVersion".
Machine.AssociatedUserNames _intermediary.user.userid O valor é extraído do campo "Machine.AssociatedUserNames". Cada nome é extraído e usado como o userid de um objeto de usuário intermediário.
Machine.AssociatedUserUPNs _target.group.email_addresses O valor é extraído do campo "Machine.AssociatedUserUPNs". Cada endereço de e-mail é extraído e adicionado ao campo "email_addresses" do grupo de destino.
Machine.ControllerDnsName _intermediary.hostname O valor é extraído do campo "Machine.ControllerDnsName". O namespace é definido como "Controller".
Machine.CreatedDate _target.asset.attribute.creation_time O valor é extraído do campo "Machine.CreatedDate" e convertido em um carimbo de data/hora.
Machine.DesktopGroupId _target.group.product_object_id O valor é extraído do campo "Machine.DesktopGroupId".
Machine.DnsName _target.asset.network_domain O valor é extraído do campo "Machine.DnsName".
Machine.HostedMachineName _target.asset.hostname O valor é extraído do campo "Machine.HostedMachineName".
Machine.HostingServerName _intermediary.hostname O valor é extraído do campo "Machine.HostingServerName". O namespace é definido como "Hypervisor".
Machine.IPAddress _target.asset.ip O valor é extraído do campo "Machine.IPAddress".
Machine.LastDeregisteredDate _target.asset.last_discover_time O valor é extraído do campo "Machine.LastDeregisteredDate" e convertido em um carimbo de data/hora.
Machine.ModifiedDate _target.asset.system_last_update_time O valor é extraído do campo "Machine.ModifiedDate" e convertido em um carimbo de data/hora.
Machine.Name _target.asset.asset_id, _target.administrative_domain O valor é extraído do campo "Machine.Name" e dividido em partes de domínio e recurso. A parte do domínio é usada como o domínio administrativo de destino, e a parte do recurso é usada para construir o ID do recurso de destino no formato "machine:".
Machine.OSType _target.asset.platform_software.platform_version O valor é extraído do campo "Machine.OSType".
Machine.PoweredOnDate _target.asset.last_boot_time O valor é extraído do campo "Machine.PoweredOnDate" e convertido em um carimbo de data/hora.
Machine.RegistrationStateChangeDate _target.asset.first_discover_time O valor é extraído do campo "Machine.RegistrationStateChangeDate" e convertido em um carimbo de data/hora.
Session.EndDate _vulns.last_found O valor é extraído do campo "Session.EndDate" e convertido em um carimbo de data/hora.
Session.LifecycleState extensions.auth.auth_details O valor é extraído do campo "Session.LifecycleState". Se o valor for 0, ele será definido como "ACTIVE". Se o valor for 1, ele será definido como "DELETED". Se o valor for 2 ou 3, ele será definido como "UNKNOWN_AUTHENTICATION_STATUS".
Session.LogOnDuration network.session_duration.seconds O valor é extraído do campo "Session.LogOnDuration" e convertido em um número inteiro.
Session.SessionKey network.session_id O valor é extraído do campo "Session.SessionKey".
Session.StartDate _vulns.first_found O valor é extraído do campo "Session.StartDate" e convertido em um carimbo de data/hora.
User.Domain _principal.user.company_name, _principal.administrative_domain O valor é extraído do campo "User.Domain" e usado como o nome da empresa do usuário principal e o domínio administrativo principal.
User.FullName _principal.user.user_display_name O valor é extraído do campo "User.FullName".
User.Sid _principal.user.windows_sid O valor é extraído do campo "User.Sid".
User.Upn _principal.user.email_addresses O valor é extraído do campo "User.Upn" e adicionado ao campo "email_addresses" do usuário principal.
User.UserName _principal.user.userid O valor é extraído do campo "User.UserName".
metadata.event_type O valor é definido como "USER_LOGIN".
metadata.vendor_name O valor é definido como "Citrix".
metadata.product_name O valor é definido como "Monitor Service OData".
extensions.auth.type O valor é definido como "MACHINE".
_intermediary.namespace O valor é definido como "Servidor StoreFront", "Controlador" ou "Hypervisor", dependendo do objeto intermediário.
_target.asset.type O valor é definido como "WORKSTATION".

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.