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 em lógica condicional e 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 de 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

Configurar o agente do Bindplane para ingerir registros 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 administrativos.
  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 solucionar 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 o Receiver para sites.

Opcional: configurar a limitação do registro 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 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 ao 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 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.