Raccogliere i log di VMware vRealize

Supportato in:

Questo documento spiega come importare i log di VMware Aria Suite (precedentemente nota come VMware vRealize) in Google Security Operations utilizzando Bindplane. Il parser estrae i campi dai messaggi syslog utilizzando i pattern grok in base al campo msg_type. Successivamente, mappa questi campi estratti all'UDM, gestendo vari formati di log e arricchendo i dati con un contesto aggiuntivo, come informazioni di rete, dettagli utente e attributi delle risorse.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps
  • Windows 2016 o versioni successive o un host Linux con systemd
  • Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
  • Accesso con privilegi al software VMware Aria Suite

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

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

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione, consulta la guida all'installazione.

Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps

  1. Accedi al file di configurazione:
    • Individua il file config.yaml. In genere, si trova nella directory /etc/bindplane-agent/ su Linux o nella directory di installazione su Windows.
    • Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. Modifica il file config.yaml come segue:

    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_VREALIZE'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart bindplane-agent
    
  • Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura Syslog per VMware Aria Suite

  1. Accedi all'interfaccia utente web di VMware Aria Suite.
  2. Vai a Amministrazione > Inoltro eventi.
  3. Fai clic su Nuova destinazione.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome univoco per identificare il server.
    • Host: inserisci l'indirizzo IP dell'agente Bindplane.
    • Protocollo: seleziona Syslog.
    • Trasporto: seleziona UDP o TCP, a seconda della configurazione effettiva dell'agente Bindplane.
    • Porta: inserisci il numero di porta dell'agente Bindplane.
  5. Fai clic su Test.
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
actorDomain principal.hostname Il valore di actorDomain del log non elaborato viene mappato al campo UDM.
actorId principal.resource.attribute.labels.key La stringa "actorId" è assegnata alla chiave.
actorId principal.resource.attribute.labels.value Il valore di actorId del log non elaborato viene assegnato al valore.
actorId additional.fields.key La stringa "actorId" è assegnata alla chiave.
actorId additional.fields.value.string_value Il valore di actorId del log non elaborato viene assegnato al valore.
actorUserName principal.user.userid Il valore di actorUserName del log non elaborato viene mappato al campo UDM.
actorUuid principal.resource.attribute.labels.key La stringa "actorUuid" è assegnata alla chiave.
actorUuid principal.resource.attribute.labels.value Il valore di actorUuid del log non elaborato viene assegnato al valore.
actorUuid additional.fields.key La stringa "actorUuid" è assegnata alla chiave.
actorUuid additional.fields.value.string_value Il valore di actorUuid del log non elaborato viene assegnato al valore.
all_request_headers.sec-ch-ua-platform principal.platform Il valore è derivato da all_request_headers.sec-ch-ua-platform. Se contiene "win" o "windows" (senza distinzione tra maiuscole e minuscole), il valore è "WINDOWS". Se contiene "Mac" (senza distinzione tra maiuscole e minuscole), il valore è "MAC". Se contiene "lin" o "linux" (senza distinzione tra maiuscole e minuscole), il valore è "LINUX".
all_request_headers.X-Requested-With network.application_protocol Se il valore contiene "http" (senza distinzione tra maiuscole e minuscole), il valore viene impostato su "HTTP".
automation_tag metadata.product_event_type Il valore di automation_tag del log non elaborato viene mappato al campo UDM.
client_ip principal.ip Il valore di client_ip del log non elaborato viene mappato al campo UDM.
client_src_port principal.port Il valore di client_src_port del log non elaborato viene mappato al campo UDM.
comp about.resource.attribute.labels.key La stringa "Componente" è assegnata alla chiave.
comp about.resource.attribute.labels.value Il valore di comp del log non elaborato viene assegnato al valore.
compression additional.fields.key La stringa "compressione" è assegnata alla chiave.
compression additional.fields.value.string_value Il valore di compression del log non elaborato viene assegnato al valore.
data about.resource.attribute.labels.key La logica dipende da msg_type. Se msg_type è "Vpxa", "Hostd" o "VSANMGMTSVC", il campo data viene analizzato utilizzando coppie chiave-valore e chiavi specifiche (come opID, sub) vengono mappate a about.resource.attribute.labels. Se msg_type è "SWITCHING", "FABRIC", "MONITORING", "SYSTEM", "ROUTING", "LOAD", "nsx", "nestdb", "cfgAgent", "NSX" o "NSXV", il campo data viene analizzato per trovare chiavi come comp, subcomp, s2comp, che vengono poi mappate a about.resource.attribute.labels.
data about.resource.attribute.labels.value Vedi la logica per about.resource.attribute.labels.key.
data security_result.description Se msg_type è "Vpxa", "Hostd" o "VSANMGMTSVC" e dopo l'analisi di data per le coppie chiave-valore, se esiste un campo msg, il suo valore viene assegnato a security_result.description.
description security_result.description Se il campo description esiste nel log non elaborato, il suo valore viene mappato al campo UDM.
deviceId principal.resource.attribute.labels.key La stringa "deviceType" è assegnata alla chiave.
deviceId principal.resource.attribute.labels.value Il valore di values.deviceType del log non elaborato viene assegnato al valore.
deviceId additional.fields.key La stringa "deviceType" è assegnata alla chiave.
deviceId additional.fields.value.string_value Il valore di values.deviceType del log non elaborato viene assegnato al valore.
direction network.direction Se il valore è "OUT", viene mappato su "OUTBOUND". Se è "IN", viene mappato su "INBOUND".
dst_ip target.ip Il valore di dst_ip del log non elaborato viene mappato al campo UDM.
dst_port target.port Il valore di dst_port del log non elaborato viene mappato al campo UDM.
event_source principal.url Il valore di event_source del log non elaborato viene mappato al campo UDM.
headers_received_from_server.Access-Control-Allow-Origin target.resource.attribute.labels.key La stringa "headers_received_from_server.Access-Control-Allow-Origin" è assegnata alla chiave.
headers_received_from_server.Access-Control-Allow-Origin target.resource.attribute.labels.value Il valore di headers_received_from_server.Access-Control-Allow-Origin del log non elaborato viene assegnato al valore.
headers_received_from_server.Content-Security-Policy principal.resource.attribute.labels.key La stringa "headers_received_from_server.Content-Security-Policy" è assegnata alla chiave.
headers_received_from_server.Content-Security-Policy principal.resource.attribute.labels.value Il valore di headers_received_from_server.Content-Security-Policy del log non elaborato viene assegnato al valore.
headers_received_from_server.Cookie target.resource.attribute.labels.key La stringa "headers_received_from_server.Cookie" è assegnata alla chiave.
headers_received_from_server.Cookie target.resource.attribute.labels.value Il valore di headers_sent_to_server.Cookie del log non elaborato viene assegnato al valore.
headers_received_from_server.set-cookie target.resource.attribute.labels.key La stringa "headers_received_from_server.set-cookie" è assegnata alla chiave.
headers_received_from_server.set-cookie target.resource.attribute.labels.value Il valore di headers_received_from_server.set-cookie del log non elaborato viene assegnato al valore.
headers_sent_to_server.sec-ch-ua principal.resource.attribute.labels.key La stringa "headers_sent_to_server.sec-ch-ua" è assegnata alla chiave.
headers_sent_to_server.sec-ch-ua principal.resource.attribute.labels.value Il valore di headers_sent_to_server.sec-ch-ua del log non elaborato viene assegnato al valore.
headers_sent_to_server.X-CSRF-TOKEN principal.resource.attribute.labels.key La stringa "headers_sent_to_server.X-CSRF-TOKEN" è assegnata alla chiave.
headers_sent_to_server.X-CSRF-TOKEN principal.resource.attribute.labels.value Il valore di headers_sent_to_server.X-CSRF-TOKEN del log non elaborato viene assegnato al valore.
hostname principal.hostname Il valore di hostname del log non elaborato viene mappato al campo UDM.
hostname intermediary.hostname Il valore di hostname del log non elaborato viene mappato al campo UDM.
host principal.hostname Il valore di host del log non elaborato viene mappato al campo UDM.
isLocal additional.fields.key La stringa "isLocal" è assegnata alla chiave.
isLocal additional.fields.value.string_value Il valore di isLocal del log non elaborato viene assegnato al valore.
json_data Vari campi all'interno di principal, target, additional e security_result Il campo json_data del log non elaborato viene analizzato come JSON e i campi estratti vengono mappati a vari campi UDM in base ai loro nomi e alla logica dell'analizzatore. Sono inclusi campi come uuid, tenantId, actorId, actorUserName, actorDomain, sourceIp, objectName, objectType, objectId, values.resourceType, values.success e altri.
kv_data Vari campi Il campo kv_data viene analizzato come coppie chiave-valore e i campi estratti vengono mappati a vari campi UDM in base ai loro nomi e alla logica dell'analizzatore.
level security_result.severity Se il valore è "info" (senza distinzione tra maiuscole e minuscole), viene mappato su "INFORMATIONAL".
log_id metadata.product_log_id Il valore di log_id del log non elaborato viene mappato al campo UDM.
message Vari campi Il campo message è la principale origine dei dati e viene analizzato in modo approfondito utilizzando i pattern grok per estrarre vari campi come ts, hostname, msg_type, sub_msg e altri. Questi campi estratti vengono poi utilizzati per compilare diversi campi UDM in base alla logica del parser.
method network.http.method Il valore di method del log non elaborato viene mappato al campo UDM.
msg security_result.description Se msg_type è "Vpxa", "Hostd", "VSANMGMTSVC", "SWITCHING", "FABRIC", "ROUTING", "LOAD-BALANCER", "nsx", "nestdb", "cfgAgent", "NSX", "NSXV" o "Rhttpproxy" e, dopo l'analisi di grok pertinente, se esiste il campo msg, il suo valore viene assegnato a security_result.description. Esistono casi speciali all'interno di questa logica per contenuti di messaggi specifici come "connessione keepalive".
msg_type metadata.product_event_type Se msg_type è "FIREWALL_PKTLOG" o "FIREWALL-PKTLOG", il suo valore viene mappato al campo UDM.
msg_type event_type Il valore di event_type viene determinato in base a msg_type. Se msg_type è "FIREWALL_PKTLOG" o "FIREWALL-PKTLOG", event_type è "NETWORK_CONNECTION". Se msg_type è "Vpxa", "Hostd", "VSANMGMTSVC", "nsx", "LOAD", "ROUTING", "SWITCHING", "FABRIC", "MONITORING", "SYSTEM", "nestdb", "cfgAgent", "NSX", "NSXV", "Rhttpproxy", "audispd" o "vsantraceUrgent", event_type è "GENERIC_EVENT". Se msg_type è "query" o "risposte", event_type è "NETWORK_DNS". Se msg_type è "sudo", event_type è "STATUS_UPDATE". Se il campo description contiene "cmmdsTimeMachineDump", event_type è "GENERIC_EVENT". Se il campo description contiene "prodjbossapp", event_type è "GENERIC_EVENT". Se il campo description contiene "liagent@6876", il campo event_type è "GENERIC_EVENT". Se nessuna delle condizioni precedenti è soddisfatta e il campo description non è vuoto, event_type è "GENERIC_EVENT". Se sono presenti sia src_ip che dst_ip, event_type è "NETWORK_CONNECTION". Se è presente src_ip o dst_ip o hostname, event_type è "STATUS_UPDATE". Se has_principal_ip è true e has_target_ip è true, event_type è "SCAN_UNCATEGORIZED". Se has_principal_ip è true o has_principal_host è true, event_type è "STATUS_UPDATE". Se nessuna delle condizioni sopra indicate è soddisfatta, event_type è "GENERIC_EVENT".
objectName target.resource.attribute.labels.key La stringa "objectName" è assegnata alla chiave.
objectName target.resource.attribute.labels.value Il valore di objectName del log non elaborato viene assegnato al valore.
objectName additional.fields.key La stringa "objectName" è assegnata alla chiave.
objectName additional.fields.value.string_value Il valore di objectName del log non elaborato viene assegnato al valore.
objectId target.resource.attribute.labels.key La stringa "objectId" è assegnata alla chiave.
objectId target.resource.attribute.labels.value Il valore di objectId del log non elaborato viene assegnato al valore.
objectId additional.fields.key La stringa "objectId" è assegnata alla chiave.
objectId additional.fields.value.string_value Il valore di objectId del log non elaborato viene assegnato al valore.
objectType target.resource.attribute.labels.key La stringa "objectType" è assegnata alla chiave.
objectType target.resource.attribute.labels.value Il valore di objectType del log non elaborato viene assegnato al valore.
objectType additional.fields.key La stringa "objectType" è assegnata alla chiave.
objectType additional.fields.value.string_value Il valore di objectType del log non elaborato viene assegnato al valore.
objectType security_result.description Se objectType è "LAUNCH" e success non è "true", la descrizione è "tentativo di avvio dell'applicazione riuscito". Se objectType è "LAUNCH_ERROR" e success non è "true", la descrizione è "User launched an application with an invalid request".
opID about.resource.attribute.labels.key La stringa "opId" è assegnata alla chiave.
opID about.resource.attribute.labels.value Il valore di opID del log non elaborato viene assegnato al valore.
pool additional.fields.key La stringa "pool" è assegnata alla chiave.
pool additional.fields.value.string_value Il valore di pool del log non elaborato viene assegnato al valore.
pool_name additional.fields.key La stringa "pool_name" è assegnata alla chiave.
pool_name additional.fields.value.string_value Il valore di pool_name del log non elaborato viene assegnato al valore.
protocol network.ip_protocol Il valore di protocol del log non elaborato viene convertito in maiuscolo e mappato al campo UDM. Se il valore è "PROTO", non viene mappato.
protocol additional.fields.key Se il valore di protocol è "PROTO", alla chiave viene assegnata la stringa "ip_protocol".
protocol additional.fields.value.string_value Se il valore di protocol è "PROTO", al valore viene assegnato il valore di protocol del log non elaborato.
query_data network.dns.questions.name Il campo query_data viene analizzato per estrarre question_name, che viene poi mappato al campo UDM.
query_data network.dns.questions.type Il campo query_data viene analizzato per estrarre query_type, che viene poi mappato al campo UDM utilizzando una ricerca inclusa in "dns_record_type.include".
query_data network.dns.questions.class Il campo query_data viene analizzato per estrarre dns_class, che viene poi mappato al campo UDM utilizzando una ricerca inclusa in "dns_query_class_mapping.include".
referer principal.url Il valore di referer del log non elaborato viene mappato al campo UDM.
request_content_type additional.fields.key La stringa "request_content_type" è assegnata alla chiave.
request_content_type additional.fields.value.string_value Il valore di request_content_type del log non elaborato viene assegnato al valore.
request_state additional.fields.key La stringa "request_state" è assegnata alla chiave.
request_state additional.fields.value.string_value Il valore di request_state del log non elaborato viene assegnato al valore.
response_code network.http.response_code Il valore di response_code o server_response_code del log non elaborato viene mappato al campo UDM.
response_content_type additional.fields.key La stringa "response_content_type" è assegnata alla chiave.
response_content_type additional.fields.value.string_value Il valore di response_content_type del log non elaborato viene assegnato al valore.
rule_id security_result.rule_id Il valore di rule_id del log non elaborato viene mappato al campo UDM.
s2comp about.resource.attribute.labels.key La stringa "S2-Component" è assegnata alla chiave.
s2comp about.resource.attribute.labels.value Il valore di s2comp del log non elaborato viene assegnato al valore.
server_ip target.ip Il valore di server_ip del log non elaborato viene mappato al campo UDM.
server_name target.hostname Il valore di server_name del log non elaborato viene mappato al campo UDM.
server_response_code network.http.response_code Vedi la logica per response_code.
server_src_port target.port Il valore di server_src_port del log non elaborato viene mappato al campo UDM.
service_engine additional.fields.key La stringa "service_engine" è assegnata alla chiave.
service_engine additional.fields.value.string_value Il valore di service_engine del log non elaborato viene assegnato al valore.
sourceIp principal.ip Il valore di sourceIp del log non elaborato viene mappato al campo UDM.
ssl_cipher network.tls.cipher Il valore di ssl_cipher del log non elaborato viene mappato al campo UDM.
ssl_session_id network.session_id Il valore di ssl_session_id del log non elaborato viene mappato al campo UDM.
ssl_version network.tls.version_protocol Il valore di ssl_version del log non elaborato viene mappato al campo UDM.
sub about.resource.attribute.labels.key La stringa "Sub Component" è assegnata al tasto.
sub about.resource.attribute.labels.value Il valore di sub del log non elaborato viene assegnato al valore.
subClusterUuid additional.fields.key La stringa "subClusterUuid" è assegnata alla chiave.
subClusterUuid additional.fields.value.string_value Il valore di subClusterUuid del log non elaborato viene assegnato al valore.
sub_msg Vari campi all'interno di principal, target, network, security_result e about Il campo sub_msg viene analizzato in modo diverso in base a msg_type. Può essere analizzato come JSON, utilizzando pattern grok o coppie chiave-valore. I campi estratti vengono poi mappati a vari campi UDM in base ai loro nomi e alla logica del parser. Sono inclusi campi come ip_type, action, rule_id, direction, protocol, tcp_flag, src_ip, src_port, dst_ip, dst_port, data, msg e altri.
subcomp about.resource.attribute.labels.key La stringa "Sub Component" è assegnata al tasto.
subcomp about.resource.attribute.labels.value Il valore di subcomp del log non elaborato viene assegnato al valore.
tenantId principal.resource.attribute.labels.key La stringa "tenantId" è assegnata alla chiave.
tenantId principal.resource.attribute.labels.value Il valore di tenantId del log non elaborato viene assegnato al valore.
tenantId additional.fields.key La stringa "tenantId" è assegnata alla chiave.
tenantId additional.fields.value.string_value Il valore di tenantId del log non elaborato viene assegnato al valore.
ts metadata.event_timestamp Il valore di ts del log non elaborato viene analizzato come timestamp e mappato al campo UDM.
ts timestamp Il valore di ts del log non elaborato viene analizzato come timestamp e mappato al campo UDM.
updateType additional.fields.key La stringa "updateType" è assegnata alla chiave.
updateType additional.fields.value.string_value Il valore di updateType del log non elaborato viene assegnato al valore.
uri_path network.http.referral_url Il valore di uri_path del log non elaborato viene mappato al campo UDM.
user_agent network.http.user_agent Il valore di user_agent del log non elaborato viene mappato al campo UDM.
user_agent network.http.parsed_user_agent Il valore di user_agent del log non elaborato viene analizzato come stringa user agent e mappato al campo UDM.
USER principal.user.user_display_name Il valore di USER del log non elaborato viene mappato al campo UDM.
values.actorExternalId principal.resource.attribute.labels.key La stringa "actorExternalId" è assegnata alla chiave.
values.actorExternalId principal.resource.attribute.labels.value Il valore di values.actorExternalId del log non elaborato viene assegnato al valore.
values.actorExternalId additional.fields.key La stringa "actorExternalId" è assegnata alla chiave.
values.actorExternalId additional.fields.value.string_value Il valore di values.actorExternalId del log non elaborato viene assegnato al valore.
values.deviceType principal.resource.attribute.labels.key La stringa "deviceType" è assegnata alla chiave.
values.deviceType principal.resource.attribute.labels.value Il valore di values.deviceType del log non elaborato viene assegnato al valore.
values.deviceType additional.fields.key La stringa "deviceType" è assegnata alla chiave.
values.deviceType additional.fields.value.string_value Il valore di values.deviceType del log non elaborato viene assegnato al valore.
values.resourceType principal.resource.resource_subtype Il valore di values.resourceType del log non elaborato viene mappato al campo UDM. principal.resource.type è impostato su "VIRTUAL_MACHINE".
values.success security_result.action Se il valore è "true" (senza distinzione tra maiuscole e minuscole), viene mappato su "ALLOW". Se è "false" (senza distinzione tra maiuscole e minuscole), viene mappato su "BLOCK".
virtualservice additional.fields.key La stringa "virtualservice" è assegnata alla chiave.
virtualservice additional.fields.value.string_value Il valore di virtualservice del log non elaborato viene assegnato al valore.
vmw_vr_ops_appname about.resource.attribute.labels.key La stringa "Ops AppName" è assegnata alla chiave.
vmw_vr_ops_appname about.resource.attribute.labels.value Il valore di vmw_vr_ops_appname del log non elaborato viene assegnato al valore.
vmw_vr_ops_clustername about.resource.attribute.labels.key La stringa "Ops ClusterName" è assegnata alla chiave.
vmw_vr_ops_clustername about.resource.attribute.labels.value Il valore di vmw_vr_ops_clustername del log non elaborato viene assegnato al valore.
vmw_vr_ops_logtype about.resource.attribute.labels.key La stringa "Ops Logtype" è assegnata alla chiave.
vmw_vr_ops_logtype about.resource.attribute.labels.value Il valore di vmw_vr_ops_logtype del log non elaborato viene assegnato al valore.
vmw_vr_ops_nodename about.resource.attribute.labels.key La stringa "Ops NodeName" è assegnata alla chiave.
vmw_vr_ops_nodename about.resource.attribute.labels.value Il valore di vmw_vr_ops_nodename del log non elaborato viene assegnato al valore.
vs_name additional.fields.key La stringa "vs_name" è assegnata alla chiave.
vs_name additional.fields.value.string_value Il valore di vs_name del log non elaborato viene assegnato al valore. Viene assegnata la stringa "VMWARE". La stringa "VMWARE_VREALIZE" è assegnata. La stringa "VMWARE_VREALIZE" è assegnata.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.