Recolha registos do VMware Horizon
Este documento explica como carregar registos do Omnissa Horizon (anteriormente conhecido como VMware Horizon) para o Google Security Operations através do Bindplane. O analisador usa primeiro expressões regulares (padrões grok) para extrair campos de mensagens syslog não processadas. Em seguida, mapeia os campos extraídos para os campos correspondentes no esquema UDM do Chronicle, normalizando e estruturando os dados para análise.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
- Acesso privilegiado ao Omnissa Horizon 8
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
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo 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
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yaml
da seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'VMWARE_HORIZON' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<customer_id>
pelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
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 Syslog para o Omnissa Horizon (anteriormente VMware Horizon)
- Inicie sessão na IU Web do Onmissa Horizon.
- Aceda a Definições > Configuração de eventos.
- Na secção Enviar para servidores syslog, clique em Adicionar.
- Introduza o endereço IP e o número da porta do agente Bindplane (certifique-se de que configura o protocolo Bindplane como UDP).
- Clique em Guardar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento do UDM | Lógica |
---|---|---|
ActionId |
metadata.product_log_id | O valor de "ActionId" do registo não processado é mapeado para "metadata.product_log_id". |
admin_domain |
principal.administrative_domain | O valor de "admin_domain" do registo não processado é mapeado para "principal.administrative_domain". |
BrokerName |
principal.hostname | O valor de "BrokerName" do registo não processado é mapeado para "principal.hostname". |
BrokerSessionId |
network.session_id | O valor de "BrokerSessionId" do registo não processado é mapeado para "network.session_id". |
ClientIpAddress |
principal.ip | O valor de "ClientIpAddress" do registo não processado é mapeado para "principal.ip". |
CurrentSessionLength |
network.session_duration.seconds | O valor de "CurrentSessionLength" do registo não processado é convertido em número inteiro e, em seguida, mapeado para "network.session_duration.seconds". |
description |
metadata.description | O valor de "description" do registo não processado é mapeado para "metadata.description". |
DesktopDisplayName |
principal.hostname | O valor de "DesktopDisplayName" do registo não processado é mapeado para "principal.hostname". |
EventType |
metadata.product_event_type | O valor de "EventType" do registo não processado é mapeado para "metadata.product_event_type". |
ForwardedClientIpAddress |
principal.nat_ip | O valor de "ForwardedClientIpAddress" do registo não processado é mapeado para "principal.nat_ip". |
GlobalEntitlementName |
target.user.group_identifiers | O valor de "GlobalEntitlementName" do registo não processado é mapeado para "target.user.group_identifiers". |
host |
principal.hostname | O valor de "host" do registo não processado é mapeado para "principal.hostname". |
MachineDnsName |
principal.url | O valor de "MachineDnsName" do registo não processado é mapeado para "principal.url". |
MachineName |
intermediary.hostname | O valor de "MachineName" do registo não processado é mapeado para "intermediary.hostname". |
Module |
additional.fields | A chave "Module" com o valor "Module" do registo não processado é adicionada à matriz "additional.fields". |
pid |
principal.process.pid | O valor de "pid" do registo não processado é mapeado para "principal.process.pid". |
PoolId |
additional.fields | A chave "PoolId" com o valor de "PoolId" do registo não processado é adicionada à matriz "additional.fields". |
program |
principal.application | O valor de "program" do registo não processado é mapeado para "principal.application". |
SessionType |
additional.fields | A chave "SessionType" com o valor de "SessionType" do registo não processado é adicionada à matriz "additional.fields". |
Severity |
security_result.severity | O valor de "Gravidade" do registo não processado é convertido em maiúsculas, mapeado para gravidades genéricas do Chronicle e, em seguida, mapeado para "security_result.severity". |
timestamp |
metadata.event_timestamp | O valor de "timestamp" do registo não processado é convertido para o formato do Chronicle e, em seguida, mapeado para "metadata.event_timestamp". |
UserDisplayName |
target.user.user_display_name | O valor de "UserDisplayName" do registo não processado é mapeado para "target.user.user_display_name". |
UserName |
target.user.userid | O valor de "UserName" do registo não processado é mapeado para "target.user.userid". |
UserSID |
target.user.windows_sid | O valor de "UserSID" do registo não processado é mapeado para "target.user.windows_sid". |
ViewApiMethodName |
additional.fields | A chave "ViewApiMethodName" com o valor de "ViewApiMethodName" do registo não processado é adicionada à matriz "additional.fields". |
ViewApiServiceName |
additional.fields | A chave "ViewApiServiceName" com o valor de "ViewApiServiceName" do registo não processado é adicionada à matriz "additional.fields". |
extensions.auth.type | O valor é definido como "SSO" se o campo "EventType" for um dos seguintes: "ADMIN_USERLOGGEDOUT", "AGENT_CONNECTED", "AGENT_DISCONNECTED", "AGENT_ENDED", "AGENT_PENDING", "AGENT_PENDING_EXPIRED", "AGENT_RECONNECTED", "BROKER_DESKTOP_REQUEST", "BROKER_LMV_REMOTE_POD_DESKTOP_LAUNCH", "BROKER_MACHINE_ALLOCATED", "BROKER_USER_AUTHFAILED_BAD_USER_PASSWORD", "BROKER_USER_LOCK_SSO", "BROKER_USERLOGGEDIN", "BROKER_USERLOGGEDOUT", "VLSI_USERLOGGEDIN", "VLSI_INSUFFICIENT_PERMISSION", "VLSI_USERLOGGEDIN_REST", "TIMING_PROFILER_TUNNEL_CONNECTION", "TIMING_PROFILER_GET_LAUNCH_ITEMS" ou "TIMING_PROFILER_USER_AUTHENTICATION". | |
metadata.event_type | O valor é determinado pelo campo "EventType". Se "EventType" for um dos seguintes: "ADMIN_USERLOGGEDOUT", "AGENT_DISCONNECTED", "AGENT_ENDED", "AGENT_PENDING_EXPIRED", "BROKER_USER_LOCK_SSO" ou "BROKER_USERLOGGEDOUT", então "metadata.event_type" é "USER_LOGOUT". Se "EventType" for um dos seguintes: "AGENT_CONNECTED", "AGENT_PENDING", "AGENT_RECONNECTED", "BROKER_USERLOGGEDIN", "VLSI_USERLOGGEDIN", "VLSI_INSUFFICIENT_PERMISSION" ou "VLSI_USERLOGGEDIN_REST", então "metadata.event_type" é "USER_LOGIN". Se "EventType" for "TIMING_PROFILER_GET_LAUNCH_ITEMS", então "metadata.event_type" é "STATUS_UNCATEGORIZED". Se "EventType" for "AGENT_SHUTDOWN", então "metadata.event_type" é "STATUS_SHUTDOWN". Se "EventType" for um de "AGENT_STARTUP", "BROKER_LMV_REMOTE_POD_DESKTOP_LAUNCH", então "metadata.event_type" é "STATUS_STARTUP". Caso contrário, "metadata.event_type" é "GENERIC_EVENT". | |
metadata.log_type | O valor está definido como "VMWARE_HORIZON". | |
metadata.product_name | O valor está definido como "HORIZON". | |
metadata.vendor_name | O valor é definido como "VMWARE". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.