Recolha registos do Citrix StoreFront

Compatível com:

Este documento explica como carregar registos do Citrix StoreFront para o Google Security Operations através do Bindplane. O analisador extrai campos de registos formatados do registo de eventos do Windows do Citrix StoreFront. Usa a recolha do registo de eventos do Windows para analisar a mensagem de registo e, em seguida, mapeia estes valores para o modelo de dados unificado (UDM). Também define valores de metadados predefinidos para a origem e o tipo do evento. O analisador extrai dados dos registos JSON do Citrix StoreFront dividindo o campo de mensagem em entidades individuais, como Session, User, AppInstance, App, Connection e Machine, através de uma série de padrões grok. Em seguida, 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

Certifique-se de que tem os seguintes pré-requisitos:

  • Uma instância do Google SecOps.
  • Um anfitrião com Windows 2016 ou posterior com o systemd onde o Bindplane vai ser instalado
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas de acordo com os requisitos do agente Bindplane
  • Acesso privilegiado ao servidor Citrix StoreFront e à consola de gestão
  • Acesso administrativo ao servidor Windows que aloja o StoreFront

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

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

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

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

Recursos de instalação adicionais

Configure o agente do Bindplane para carregar registos de eventos do Windows e enviá-los para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro 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 alterações

  1. Para reiniciar o agente BindPlane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o registo de eventos do StoreFront

  1. Inicie sessão 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 registo verboso para a resolução de problemas (opcional):

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    
  5. Verifique se o registo de eventos do Windows está ativado:

    • Abra o Event Viewer no servidor StoreFront.
    • Navegue para Registos de aplicações e serviços > Citrix Delivery Services.
    • Verifique se os eventos estão a ser registados para o serviço de autenticação, as lojas e o Receiver para Websites.

Opcional: configure a limitação do registo de eventos

  1. Navegue para os diretórios de configuração do StoreFront:
    • Serviço de autenticação: C:/inetpub/wwwroot/Citrix/Authentication
    • Loja: C:/inetpub/wwwroot/Citrixstorename
    • Recetor do Website: C:/inetpub/wwwroot/Citrixstorename/Web
  2. Abra o ficheiro web.config em cada diretório com um editor de texto.
  3. Localize o elemento do registador e configure-o conforme necessário:

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
  4. duplicateInterval: defina o período em horas, minutos e segundos durante o qual as entradas de registo duplicadas são monitorizadas.

  5. duplicateLimit: defina o número de entradas duplicadas que têm de ser registadas no intervalo de tempo especificado para acionar a limitação de registos.

  6. Guarde os ficheiros de configuração.

Valide a recolha de registos

  1. Abra o Windows Event Viewer no servidor StoreFront.
  2. Navegue para Registos do Windows > Aplicação ou Registos de aplicações e serviços > Citrix Delivery Services.
  3. Verifique se os eventos da StoreFront estão a ser gerados.
  4. Verifique os registos do agente Bindplane para confirmar se os registos estão a ser encaminhados para o Google SecOps.

Tabela de mapeamento do UDM

Campo de registo Mapeamento do UDM Lógica
App.PublishedName _principal.application O valor é retirado do campo App.PublishedName.
Connection.ClientAddress _principal.asset.ip O valor é retirado do campo Connection.ClientAddress.
Connection.ClientName _principal.asset.hostname O valor é retirado do campo Connection.ClientName.
Connection.ClientPlatform _principal.asset.platform_software.platform O valor é retirado do campo Connection.ClientPlatform e convertido em maiúsculas. Se o valor for "WINDOWS", "MAC" ou "LINUX", é usado diretamente. Caso contrário, o valor é definido como "UNKNOWN_PLATFORM".
Connection.ConnectedViaHostName src.hostname O valor é retirado do campo Connection.ConnectedViaHostName.
Connection.LaunchedViaHostName _intermediary.hostname O valor é retirado do campo Connection.LaunchedViaHostName. O espaço de nomes está definido como "Servidor da loja online".
Connection.LaunchedViaIPAddress _intermediary.ip O valor é retirado do campo Connection.LaunchedViaIPAddress.
Connection.Protocol network.application_protocol O valor é retirado do campo Connection.Protocol. Se o valor for "HDX", é definido como "UNKNOWN_APPLICATION_PROTOCOL".
Machine.AgentVersion metadata.product_version O valor é retirado do campo Machine.AgentVersion.
Machine.AssociatedUserNames _intermediary.user.userid O valor é retirado do campo Machine.AssociatedUserNames. Cada nome é extraído e usado como o ID do utilizador para um objeto de utilizador intermediário.
Machine.AssociatedUserUPNs _target.group.email_addresses O valor é retirado do campo Machine.AssociatedUserUPNs. Cada endereço de email é extraído e adicionado ao campo email_addresses do grupo de destino.
Machine.ControllerDnsName _intermediary.hostname O valor é retirado do campo Machine.ControllerDnsName. O espaço de nomes está definido como "Controller".
Machine.CreatedDate _target.asset.attribute.creation_time O valor é retirado do campo Machine.CreatedDate e convertido numa data/hora.
Machine.DesktopGroupId _target.group.product_object_id O valor é retirado do campo Machine.DesktopGroupId.
Machine.DnsName _target.asset.network_domain O valor é retirado do campo Machine.DnsName.
Machine.HostedMachineName _target.asset.hostname O valor é retirado do campo Machine.HostedMachineName.
Machine.HostingServerName _intermediary.hostname O valor é retirado do campo Machine.HostingServerName. O espaço de nomes está definido como "Hypervisor".
Machine.IPAddress _target.asset.ip O valor é retirado do campo Machine.IPAddress.
Machine.LastDeregisteredDate _target.asset.last_discover_time O valor é retirado do campo Machine.LastDeregisteredDate e convertido numa data/hora.
Machine.ModifiedDate _target.asset.system_last_update_time O valor é retirado do campo Machine.ModifiedDate e convertido numa data/hora.
Machine.Name _target.asset.asset_id, _target.administrative_domain O valor é retirado do campo Machine.Name e dividido em partes de domínio e recursos. 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 é retirado do campo Machine.OSType.
Machine.PoweredOnDate _target.asset.last_boot_time O valor é retirado do campo Machine.PoweredOnDate e convertido numa data/hora.
Machine.RegistrationStateChangeDate _target.asset.first_discover_time O valor é retirado do campo Machine.RegistrationStateChangeDate e convertido numa data/hora.
Session.EndDate _vulns.last_found O valor é retirado do campo Session.EndDate e convertido numa indicação de tempo.
Session.LifecycleState extensions.auth.auth_details O valor é retirado do campo Session.LifecycleState. Se o valor for 0, é definido como "ACTIVE". Se o valor for 1, é definido como "DELETED". Se o valor for 2 ou 3, é definido como "UNKNOWN_AUTHENTICATION_STATUS".
Session.LogOnDuration network.session_duration.seconds O valor é retirado do campo Session.LogOnDuration e convertido num número inteiro.
Session.SessionKey network.session_id O valor é retirado do campo Session.SessionKey.
Session.StartDate _vulns.first_found O valor é retirado do campo Session.StartDate e convertido numa indicação de tempo.
User.Domain _principal.user.company_name, _principal.administrative_domain O valor é retirado do campo User.Domain e usado como o nome da empresa do utilizador principal e o domínio administrativo principal.
User.FullName _principal.user.user_display_name O valor é retirado do campo User.FullName.
User.Sid _principal.user.windows_sid O valor é retirado do campo User.Sid.
User.Upn _principal.user.email_addresses O valor é retirado do campo User.Upn e adicionado ao campo email_addresses do utilizador principal.
User.UserName _principal.user.userid O valor é retirado do campo User.UserName.
metadata.event_type O valor está 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 "StoreFront server", "Controller" ou "Hypervisor", consoante o objeto intermediário.
_target.asset.type O valor é definido como "WORKSTATION".

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