Raccogli i log di Omnissa Horizon (in precedenza VMware Horizon)
Questo documento spiega come importare i log di Omnissa Horizon (precedentemente noto come VMware Horizon) in Google Security Operations utilizzando Bindplane.
Omnissa Horizon è una piattaforma di infrastruttura desktop virtuale (VDI) che fornisce desktop e applicazioni virtuali agli utenti finali. Fornisce la gestione centralizzata delle macchine virtuali, il monitoraggio delle sessioni e l'applicazione dei criteri negli ambienti on-premise e cloud ibrido. Il parser estrae i campi dai messaggi syslog non elaborati utilizzando espressioni regolari (pattern grok) e li mappa al modello Unified Data Model (UDM).
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Windows Server 2016 o versioni successive oppure host Linux con
systemd - Connettività di rete tra l'agente Bindplane e il server Omnissa Horizon Connection
- Se l'esecuzione avviene dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso con privilegi alla console Omnissa Horizon (ruolo di amministratore)
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
Scarica il file di autenticazione dell'acquisizione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Ottieni l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
Copia e salva l'ID cliente dalla sezione Dettagli organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di finestre
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "[https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi](https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi)" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come RUNNING.
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sudo systemctl status observiq-otel-collector
Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps
Individua il file di configurazione
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/vmware_horizon: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: VMWARE_HORIZON raw_log_field: body service: pipelines: logs/vmware_horizon_to_chronicle: receivers: - udplog exporters: - chronicle/vmware_horizon
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del destinatario:
listen_address: indirizzo IP e porta su cui ascoltare:0.0.0.0per ascoltare su tutte le interfacce (consigliato)- La porta
514è la porta syslog standard (richiede l'accesso root su Linux; utilizza1514per l'accesso non root)
Configurazione dell'esportatore:
creds_file_path: percorso completo del file di autenticazione dell'acquisizione:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID cliente copiato dalla console Google SecOpsendpoint: URL endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per l'elenco completo, consulta Endpoint regionali.
- Stati Uniti:
Salva il file di configurazione
- Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X - Windows: fai clic su File > Salva
- Linux: premi
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux:
Esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per verificare la presenza di errori:
sudo journalctl -u observiq-otel-collector -f
Per riavviare l'agente Bindplane in Windows:
Scegli una delle seguenti opzioni:
- Prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collector- Console dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
- Premi
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configura l'inoltro di syslog in Omnissa Horizon (in precedenza VMware Horizon)
- Accedi alla console Omnissa Horizon con un account amministratore.
- Vai a Impostazioni > Configurazione eventi.
Nella sezione Invia ai server syslog, fai clic su Aggiungi.
Fornisci i seguenti dettagli di configurazione:
- Indirizzo server: inserisci l'indirizzo IP dell'host dell'agente Bindplane (ad esempio,
192.168.1.100). - Porta: inserisci
514. - Protocollo: seleziona UDP.
- Indirizzo server: inserisci l'indirizzo IP dell'host dell'agente Bindplane (ad esempio,
Fai clic su Salva.
Verifica che gli eventi vengano inoltrati controllando i log dell'agente Bindplane.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
ActionId |
metadata.product_log_id |
Il valore di ActionId del log non elaborato viene mappato a metadata.product_log_id. |
admin_domain |
principal.administrative_domain |
Il valore di admin_domain del log non elaborato viene mappato a principal.administrative_domain. |
BrokerName |
principal.hostname |
Il valore di BrokerName del log non elaborato è mappato a principal.hostname. |
BrokerSessionId |
network.session_id |
Il valore di BrokerSessionId del log non elaborato viene mappato a network.session_id. |
ClientIpAddress |
principal.ip |
Il valore di ClientIpAddress del log non elaborato viene mappato a principal.ip. |
CurrentSessionLength |
network.session_duration.seconds |
Il valore di CurrentSessionLength del log grezzo viene convertito in un numero intero e poi mappato a network.session_duration.seconds. |
description |
metadata.description |
Il valore di description del log non elaborato viene mappato a metadata.description. |
DesktopDisplayName |
principal.hostname |
Il valore di DesktopDisplayName del log non elaborato è mappato a principal.hostname. |
EventType |
metadata.product_event_type |
Il valore di EventType del log non elaborato è mappato a metadata.product_event_type. |
ForwardedClientIpAddress |
principal.nat_ip |
Il valore di ForwardedClientIpAddress del log non elaborato è mappato a principal.nat_ip. |
GlobalEntitlementName |
target.user.group_identifiers |
Il valore di GlobalEntitlementName del log non elaborato è mappato a target.user.group_identifiers. |
host |
principal.hostname |
Il valore di host del log non elaborato viene mappato a principal.hostname. |
MachineDnsName |
principal.url |
Il valore di MachineDnsName del log non elaborato viene mappato a principal.url. |
MachineName |
intermediary.hostname |
Il valore di MachineName del log non elaborato viene mappato a intermediary.hostname. |
Module |
additional.fields |
La chiave "Module" con il valore Module del log non elaborato viene aggiunta all'array additional.fields. |
pid |
principal.process.pid |
Il valore di pid del log non elaborato è mappato a principal.process.pid. |
PoolId |
additional.fields |
La chiave "PoolId" con il valore PoolId del log non elaborato viene aggiunta all'array additional.fields. |
program |
principal.application |
Il valore di program del log non elaborato è mappato a principal.application. |
SessionType |
additional.fields |
La chiave "SessionType" con il valore SessionType del log non elaborato viene aggiunta all'array additional.fields. |
Severity |
security_result.severity |
Il valore di Severity del log non elaborato viene convertito in lettere maiuscole, mappato a gravità generiche e poi mappato a security_result.severity. |
timestamp |
metadata.event_timestamp |
Il valore di timestamp del log non elaborato viene convertito nel formato appropriato e poi mappato a metadata.event_timestamp. |
UserDisplayName |
target.user.user_display_name |
Il valore di UserDisplayName del log non elaborato è mappato a target.user.user_display_name. |
UserName |
target.user.userid |
Il valore di UserName del log non elaborato viene mappato a target.user.userid. |
UserSID |
target.user.windows_sid |
Il valore di UserSID del log non elaborato è mappato a target.user.windows_sid. |
ViewApiMethodName |
additional.fields |
La chiave "ViewApiMethodName" con il valore ViewApiMethodName del log non elaborato viene aggiunta all'array additional.fields. |
ViewApiServiceName |
additional.fields |
La chiave "ViewApiServiceName" con il valore ViewApiServiceName del log non elaborato viene aggiunta all'array additional.fields. |
extensions.auth.type |
Il valore è impostato su "SSO" se il campo EventType è uno dei seguenti: "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", "TIMING_PROFILER_USER_AUTHENTICATION". |
|
metadata.event_type |
Il valore è determinato dal campo EventType. Se EventType è uno dei seguenti valori: "ADMIN_USERLOGGEDOUT", "AGENT_DISCONNECTED", "AGENT_ENDED", "AGENT_PENDING_EXPIRED", "BROKER_USER_LOCK_SSO", "BROKER_USERLOGGEDOUT", allora metadata.event_type è "USER_LOGOUT". Se EventType è uno dei valori "AGENT_CONNECTED", "AGENT_PENDING", "AGENT_RECONNECTED", "BROKER_USERLOGGEDIN", "VLSI_USERLOGGEDIN", "VLSI_INSUFFICIENT_PERMISSION", "VLSI_USERLOGGEDIN_REST", metadata.event_type è "USER_LOGIN". Se EventType è "TIMING_PROFILER_GET_LAUNCH_ITEMS", metadata.event_type è "STATUS_UNCATEGORIZED". Se EventType è "AGENT_SHUTDOWN", metadata.event_type è "STATUS_SHUTDOWN". Se EventType è uno dei valori "AGENT_STARTUP", "BROKER_LMV_REMOTE_POD_DESKTOP_LAUNCH", allora metadata.event_type è "STATUS_STARTUP". In caso contrario, metadata.event_type è "GENERIC_EVENT". |
|
metadata.log_type |
Il valore è impostato su "VMWARE_HORIZON". | |
metadata.product_name |
Il valore è impostato su "HORIZON". | |
metadata.vendor_name |
Il valore è impostato su "VMWARE". | |
SecurityID |
event.idm.read_only_udm.principal.user.windows_sid |
Mappato dal log delle modifiche |
AccountName |
event.idm.read_only_udm.principal.user.userid |
Mappato dal log delle modifiche |
AccountDomain |
event.idm.read_only_udm.principal.administrative_domain |
Mappato dal log delle modifiche |
ObjectServer |
event.idm.read_only_udm.target.application |
Mappato dal log delle modifiche |
ObjectName |
event.idm.read_only_udm.target.user.windows_sid |
Mappato dal log delle modifiche |
HandleID |
event.idm.read_only_udm.target.resource.product_object_id |
Mappato dal log delle modifiche |
ProcessID |
event.idm.read_only_udm.principal.process.pid |
Mappato dal log delle modifiche |
ProcessName |
event.idm.read_only_udm.principal.process.file.full_path |
Mappato dal log delle modifiche |
LogonID |
event.idm.read_only_udm.principal.user.attribute.labels |
Mappato dal log delle modifiche |
ObjectType |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
AccessMask |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
TransactionID |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
PrivilegesUsedforAccessCheck |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
Accesses |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
AccessReasons |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
Properties |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
RestrictedSIDCount |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
usr |
target.user.userid |
Mappato dal log delle modifiche |
MachineId |
principal.asset.asset_id |
Mappato dal log delle modifiche |
int_host |
intermediary.hostname |
Mappato dal log delle modifiche |
ip_1 |
principal.ip |
Mappato dal log delle modifiche |
port_number |
principal.port |
Mappato dal log delle modifiche |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.