Recolha registos do Citrix StoreFront
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
systemdonde 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- 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
- Abra a Linha de comandos ou o PowerShell como administrador.
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
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente do Bindplane para carregar registos de eventos do Windows e enviá-los para o Google SecOps
Aceda ao ficheiro de configuração:
- 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. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yamlda 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- Substitua
CUSTOMER_ID_PLACEHOLDERpelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
- Substitua
Reinicie o agente do Bindplane para aplicar as alterações
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
- Inicie sessão no servidor StoreFront com privilégios administrativos.
- Abra o PowerShell como administrador.
Carregue o módulo do PowerShell do StoreFront:
Add-PSSnapin Citrix.DeliveryServices.Framework.CommandsAtive o registo verboso para a resolução de problemas (opcional):
Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$FalseVerifique 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
- 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
- Serviço de autenticação:
- Abra o ficheiro
web.configem cada diretório com um editor de texto. Localize o elemento do registador e configure-o conforme necessário:
<logger duplicateInterval="00:01:00" duplicateLimit="10">duplicateInterval: defina o período em horas, minutos e segundos durante o qual as entradas de registo duplicadas são monitorizadas.
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.
Guarde os ficheiros de configuração.
Valide a recolha de registos
- Abra o Windows Event Viewer no servidor StoreFront.
- Navegue para Registos do Windows > Aplicação ou Registos de aplicações e serviços > Citrix Delivery Services.
- Verifique se os eventos da StoreFront estão a ser gerados.
- 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.