Raccogli i log di VMware Networking and Security Virtualization (NSX) Manager
Questo documento descrive come raccogliere i log di VMware Networking and Security Virtualization (NSX) Manager. Il parser estrae i campi utilizzando vari pattern grok in base al formato del messaggio. Esegue quindi l'analisi di parsing delle coppie chiave-valore, l'analisi JSON e la logica condizionale per mappare i campi estratti all'UDM, gestire diversi formati di log e arricchire i dati con un contesto aggiuntivo.
Prima di iniziare
- Assicurati di avere un'istanza Google Security Operations.
- Assicurati di utilizzare Windows 2016 o versioni successive o un host Linux con
systemd
. - Se il servizio è in esecuzione dietro un proxy, assicurati che le porte del firewall siano aperte.
- Assicurati di disporre dell'accesso amministrativo a VMWare NSX.
Recupera il file di autenticazione di importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane Agent.
Ottenere l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installazione di Windows
- 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" /quiet
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)" install_unix.sh
Risorse di installazione aggiuntive
- Per altre opzioni di installazione, consulta questa guida all'installazione.
Configurare l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
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).
- Individua il file
Modifica il file
config.yaml
come segue:receivers: udplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: vmware_nsx raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Sostituisci la porta e l'indirizzo IP come richiesto nella tua infrastruttura.
Sostituisci
<customer_id>
con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.json
con il percorso in cui è stato salvato il file di autenticazione nella sezione Ottenere il file di autenticazione per l'importazione di Google SecOps.
Riavvia Bindplane Agent per applicare le modifiche
In Linux, per riavviare Bindplane Agent, esegui il seguente comando:
sudo systemctl restart bindplane-agent
In Windows, per riavviare l'agente Bindplane, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurazione di Syslog per NSX Edge
- Accedi al client web vSphere.
- Vai a Networking e sicurezza > NSX Edge.
- Seleziona l'istanza NSX Edge specifica che vuoi configurare.
- Vai a Impostazioni syslog:
- Per NSX 6.4.4 e versioni successive:
- Vai a Gestisci > Impostazioni > Impostazioni dell'elettrodomestico.
- Fai clic su Impostazioni > Modifica configurazione Syslog.
- Per NSX 6.4.3 e versioni precedenti:
- Vai a Gestisci > Impostazioni > Configurazione.
- Nella finestra di dialogo Dettagli, fai clic su Cambia.
- Per NSX 6.4.4 e versioni successive:
- Configura i dettagli del server Syslog:
- Server: inserisci l'indirizzo IP o il nome host del server Syslog (Bindplane).
- Protocollo: seleziona UDP o TCP (a seconda della configurazione di Bindplane).
- Porta: inserisci il numero di porta (a seconda della configurazione di Bindplane).
- Fai clic su OK per salvare le impostazioni.
Configurazione di Syslog per NSX Manager
- Accedi all'interfaccia web di NSX Manager con le credenziali di amministratore come segue:
https://<NSX-Manager-IP>
ohttps://<NSX-Manager-Hostname>
.
- Vai a Gestisci impostazioni dell'appliance > Generali.
- Fai clic su Modifica per configurare le impostazioni del server Syslog.
- Inserisci i dettagli del server Syslog:
- Server: inserisci l'indirizzo IP o il nome host del server Syslog (Bindplane).
- Protocollo: seleziona UDP o TCP (a seconda della configurazione di Bindplane).
- Porta: inserisci il numero di porta (a seconda della configurazione di Bindplane).
- Fai clic su OK per salvare le impostazioni.
Configurazione di Syslog per NSX Controller
- Accedi a vSphere Web Client.
- Vai a Networking e sicurezza > Installazione e upgrade > Gestione > Nodi controller NSX.
- Seleziona l'NSX Manager che gestisce i nodi del controller.
- Fai clic su Modifica attributi controller comuni.
- Nella finestra di dialogo Server syslog, fai clic su Aggiungi:
- Inserisci il nome o l'indirizzo IP del server Syslog.
- Seleziona il protocollo UDP (a seconda della configurazione di Bindplane).
- Imposta il livello di log (ad esempio
INFO
).
- Fai clic su OK per salvare le impostazioni.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
DST |
event.idm.read_only_udm.target.ip |
L'indirizzo IP di destinazione viene estratto dal campo DST nel log non elaborato. |
ID |
event.idm.read_only_udm.metadata.product_log_id |
L'ID log del prodotto viene estratto dal campo ID nel log non elaborato. |
MAC |
event.idm.read_only_udm.principal.mac |
L'indirizzo MAC viene estratto dal campo MAC nel log non elaborato. |
ModuleName |
event.idm.read_only_udm.metadata.product_event_type |
Il tipo di evento del prodotto viene estratto dal campo ModuleName nel log non elaborato. |
Operation |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
L'operazione viene estratta dal campo Operation nel log non elaborato e aggiunta come etichetta con la chiave "Operation". |
PROTO |
event.idm.read_only_udm.network.ip_protocol |
Il protocollo IP viene estratto dal campo PROTO nel log non elaborato. |
RES |
event.idm.read_only_udm.target.resource.name |
Il nome della risorsa target viene estratto dal campo RES nel log non elaborato. |
SRC |
event.idm.read_only_udm.principal.ip |
L'indirizzo IP di origine viene estratto dal campo SRC nel log non elaborato. |
SPT |
event.idm.read_only_udm.principal.port |
La porta di origine viene estratta dal campo SPT nel log non elaborato. |
UserName |
event.idm.read_only_udm.principal.user.userid |
L'ID utente viene estratto dal campo UserName nel log non elaborato. |
app_type |
event.idm.read_only_udm.principal.application |
L'applicazione principale viene estratta dal campo app_type nel log non elaborato. |
application |
event.idm.read_only_udm.target.application |
L'applicazione di destinazione viene estratta dal campo application nel log non elaborato. |
audit |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore del controllo viene estratto dal campo audit nel log non elaborato e aggiunto come etichetta con la chiave "audit". |
cancelTimeUTC |
event.idm.read_only_udm.principal.resource.attribute.last_update_time |
L'ora dell'ultimo aggiornamento è ricavata dal campo cancelTimeUTC nel log non elaborato. |
client |
event.idm.read_only_udm.principal.ip o event.idm.read_only_udm.principal.administrative_domain |
Se il campo client è un indirizzo IP, viene mappato all'IP principale. In caso contrario, viene mappato al dominio amministrativo principale. |
comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore del componente viene estratto dal campo comp nel log non elaborato e aggiunto come etichetta con chiave "Comp". |
datetime |
event.idm.read_only_udm.metadata.event_timestamp |
Il timestamp dell'evento viene estratto dal campo datetime nel log non elaborato. |
description |
event.idm.read_only_udm.metadata.description |
La descrizione viene estratta dal campo description nel log non elaborato. |
details |
event.idm.read_only_udm.principal.resource.attribute.labels |
I dettagli vengono estratti dal campo details nel log non elaborato e aggiunti come etichette. |
direction |
event.idm.read_only_udm.network.direction |
Se il campo direction è "OUT", viene mappato a "OUTBOUND". |
dst_ip |
event.idm.read_only_udm.target.ip |
L'indirizzo IP di destinazione viene estratto dal campo dst_ip nel log non elaborato. |
DPT |
event.idm.read_only_udm.target.port |
La porta di destinazione viene estratta dal campo DPT nel log non elaborato. |
errorCode |
event.idm.read_only_udm.security_result.detection_fields |
Il codice di errore viene estratto dal campo errorCode nel log non elaborato e aggiunto come campo di rilevamento. |
eventType |
event.idm.read_only_udm.metadata.product_event_type |
Il tipo di evento del prodotto viene estratto dal campo eventType nel log non elaborato. |
filepath |
event.idm.read_only_udm.principal.process.file.full_path |
Il percorso del file viene estratto dal campo filepath nel log non elaborato. |
hostname |
event.idm.read_only_udm.principal.ip |
Il nome host viene estratto dal campo hostname nel log non elaborato e, se si tratta di un indirizzo IP, viene mappato all'IP principale. |
kv_data |
Vari campi UDM | Le coppie chiave-valore in kv_data vengono mappate a vari campi UDM in base alle relative chiavi. |
kv_data1 |
Vari campi UDM | Le coppie chiave-valore in kv_data1 vengono mappate a vari campi UDM in base alle relative chiavi. |
kv_data2 |
Vari campi UDM | Le coppie chiave-valore in kv_data2 vengono mappate a vari campi UDM in base alle relative chiavi. |
kv_data3 |
Vari campi UDM | Le coppie chiave-valore in kv_data3 vengono mappate a vari campi UDM in base alle relative chiavi. |
kv_data4 |
Vari campi UDM | Le coppie chiave-valore in kv_data4 vengono mappate a vari campi UDM in base alle relative chiavi. |
level |
event.idm.read_only_udm.security_result.severity |
Se il campo level è "INFO", viene mappato a "INFORMATIONAL". Se è "ERROR", viene mappato a "ERROR". |
managedExternally |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore managedExternally viene estratto dal campo managedExternally nel log non elaborato e aggiunto come etichetta con la chiave "managedExternally". |
message |
Vari campi UDM | Il campo del messaggio viene analizzato per estrarre vari campi UDM. |
message_data |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
I dati del messaggio vengono estratti dal campo message_data nel log non elaborato e aggiunti come etichetta con la chiave "message". |
network_status |
event.idm.read_only_udm.additional.fields |
Lo stato della rete viene estratto dal campo network_status nel log non elaborato e aggiunto come campo aggiuntivo con la chiave "Network_Connection_Status". |
new_value |
Vari campi event.idm.read_only_udm.target |
Il nuovo valore viene estratto dal campo new_value nel log non elaborato e utilizzato per compilare vari campi target. |
node |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore del nodo viene estratto dal campo node nel log non elaborato e aggiunto come etichetta con chiave "node". |
old_value |
Vari campi UDM | Il vecchio valore viene estratto dal campo old_value nel log non elaborato e utilizzato per compilare vari campi UDM. |
payload |
Vari campi UDM | Il payload viene estratto dal campo payload nel log non elaborato e utilizzato per compilare vari campi UDM. |
pid |
event.idm.read_only_udm.target.process.pid |
L'ID processo viene estratto dal campo pid nel log non elaborato. |
reqId |
event.idm.read_only_udm.metadata.product_log_id |
L'ID log del prodotto viene estratto dal campo reqId nel log non elaborato. |
resourceId |
event.idm.read_only_udm.principal.resource.product_object_id |
L'ID oggetto del prodotto viene estratto dal campo resourceId nel log non elaborato. |
s2comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore s2comp viene estratto dal campo s2comp nel log non elaborato e aggiunto come etichetta con chiave "s2comp". |
ses |
event.idm.read_only_udm.network.session_id |
L'ID sessione viene estratto dal campo ses nel log non elaborato. |
src_host |
event.idm.read_only_udm.principal.hostname |
Il nome host principale viene estratto dal campo src_host nel log non elaborato. |
src_ip |
event.idm.read_only_udm.principal.ip |
L'indirizzo IP di origine viene estratto dal campo src_ip nel log non elaborato. |
src_ip1 |
event.idm.read_only_udm.principal.ip |
L'indirizzo IP di origine viene estratto dal campo src_ip1 nel log non elaborato. |
src_port |
event.idm.read_only_udm.principal.port |
La porta di origine viene estratta dal campo src_port nel log non elaborato. |
startTimeUTC |
event.idm.read_only_udm.principal.resource.attribute.creation_time |
La data e l'ora di creazione vengono ricavate dal campo startTimeUTC nel log non elaborato. |
subcomp |
event.idm.read_only_udm.network.application_protocol o event.idm.read_only_udm.principal.resource.attribute.labels.value |
Se il campo subcomp è "http", viene mappato a "HTTP". In caso contrario, viene aggiunta come etichetta con la chiave "Sub Comp". |
tname |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore tname viene estratto dal campo tname nel log non elaborato e aggiunto come etichetta con la chiave "tname". |
type |
event.idm.read_only_udm.metadata.product_event_type |
Il tipo di evento del prodotto viene estratto dal campo type nel log non elaborato. |
uid |
event.idm.read_only_udm.principal.user.userid |
L'ID utente viene estratto dal campo uid nel log non elaborato. |
update |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Il valore dell'aggiornamento viene estratto dal campo update nel log non elaborato e aggiunto come etichetta con chiave "update". |
user |
event.idm.read_only_udm.principal.user.user_display_name |
Il nome visualizzato dell'utente viene estratto dal campo user nel log non elaborato. |
vmw_cluster |
event.idm.read_only_udm.target.resource.name |
Il nome della risorsa target viene estratto dal campo vmw_cluster nel log non elaborato. |
vmw_datacenter |
event.idm.read_only_udm.target.resource.attribute.labels.value |
Il valore vmw_datacenter viene estratto dal campo vmw_datacenter nel log non elaborato e aggiunto come etichetta con la chiave "vmw_datacenter". |
vmw_host |
event.idm.read_only_udm.target.hostname o event.idm.read_only_udm.target.ip |
Se il campo vmw_host è un nome host, viene mappato al nome host di destinazione. In caso contrario, se si tratta di un indirizzo IP, viene mappato all'IP target. |
vmw_object_id |
event.idm.read_only_udm.target.resource.product_object_id |
L'ID oggetto del prodotto viene estratto dal campo vmw_object_id nel log non elaborato. |
vmw_product |
event.idm.read_only_udm.target.application |
L'applicazione di destinazione viene estratta dal campo vmw_product nel log non elaborato. |
vmw_vcenter |
event.idm.read_only_udm.target.cloud.availability_zone |
La zona di disponibilità viene estratta dal campo vmw_vcenter nel log non elaborato. |
vmw_vcenter_id |
event.idm.read_only_udm.target.resource.attribute.labels.value |
Il valore vmw_vcenter_id viene estratto dal campo vmw_vcenter_id nel log non elaborato e aggiunto come etichetta con la chiave "vmw_vcenter_id". |
vmw_vr_ops_appname |
event.idm.read_only_udm.intermediary.application |
L'applicazione intermedia viene estratta dal campo vmw_vr_ops_appname nel log non elaborato. |
vmw_vr_ops_clustername |
event.idm.read_only_udm.intermediary.resource.name |
Il nome della risorsa intermedia viene estratto dal campo vmw_vr_ops_clustername nel log non elaborato. |
vmw_vr_ops_clusterrole |
event.idm.read_only_udm.intermediary.resource.attribute.roles.name |
Il nome del ruolo della risorsa intermedia viene estratto dal campo vmw_vr_ops_clusterrole nel log non elaborato. |
vmw_vr_ops_hostname |
event.idm.read_only_udm.intermediary.hostname |
Il nome host intermedio viene estratto dal campo vmw_vr_ops_hostname nel log non elaborato. |
vmw_vr_ops_id |
event.idm.read_only_udm.intermediary.resource.product_object_id |
L'ID oggetto prodotto intermedio viene estratto dal campo vmw_vr_ops_id nel log non elaborato. |
vmw_vr_ops_logtype |
event.idm.read_only_udm.intermediary.resource.attribute.labels.value |
Il valore vmw_vr_ops_logtype viene estratto dal campo vmw_vr_ops_logtype nel log non elaborato e aggiunto come etichetta con la chiave "vmw_vr_ops_logtype". |
vmw_vr_ops_nodename |
event.idm.read_only_udm.intermediary.resource.attribute.labels.value |
Il valore vmw_vr_ops_nodename viene estratto dal campo vmw_vr_ops_nodename nel log non elaborato e aggiunto come etichetta con la chiave "vmw_vr_ops_nodename". Determinato da una serie di istruzioni condizionali in base ai valori di altri campi. I valori possibili sono USER_LOGIN, NETWORK_CONNECTION, STATUS_UPDATE e GENERIC_EVENT. Hardcoded su "VMWARE_NSX". Hardcoded su "VMWARE_NSX". Hardcoded su "VMWARE_NSX". Impostato su "AUTHTYPE_UNSPECIFIED" se Operation è "LOGIN" e target_details non è vuoto oppure se message contiene "authentication failure" e application non è vuoto. Imposta su "SSH" se PROTO è "ssh2" o su "HTTP" se subcomp è "http". Determinato da una serie di istruzioni condizionali in base ai valori di altri campi. I valori possibili sono ALLOW e BLOCK. Imposta su "VIRTUAL_MACHINE" se vmw_cluster non è vuoto. |
Modifiche
2023-11-15
- Miglioramento: dal campo "Valore precedente":
- "unique_id" è stato mappato a "principal.resource.product_object_id".
- "resource_type" è stato mappato a "principal.resource.sub_type".
- "_create_user" e "_last_modified_user" sono stati mappati a "principal.user.email_addresses".
- "action" è stato mappato a "security_result.action".
- "rule_id" è stato mappato a "security_result.rule_id".
- "display_name" è stato mappato a "principal.resource.name".
- "_last_modified_time" è stato mappato a "principal.resource.attribute.last_update_time".
- "_create_time" è stato mappato a "principal.resource.attribute.creation_time".
- "parent_path" è stato mappato a "principal.resource.parent".
- "path" è stato mappato a "principal.process.file.full_path".
- "id" è stato mappato a "principal.resource.id".
- Dal campo Nuovo valore:
- "resource_type" è stato mappato a "target.resource.sub_type".
- "unique_id" è stato mappato a "target.resource.product_object_id".
- "path" è stato mappato a "target.process.file.full_path".
- "display_name" è stato mappato a "target.resource.name".
- "id" è stato mappato a "target.resource.id".
- "vmw_host" è stato mappato a "target_details.hostname o target_details.ip" in base al valore in vmw_host.
- "vmw_product" è stato mappato a "target.application".
- "vmw_vcenter" è stato mappato a "target.cloud.availability_zone".
- "vmw_cluster" è stato mappato a "target.resource.name".
- "vmw_object_id" è stato mappato a "target.resource.product_object_id".
- "vmw_datacenter" è stato mappato a "target.resource.attribute.labels".
- "vmw_vcenter_id" è stato mappato a "target.resource.attribute.labels".
- "vmw_vr_ops_logtype" è stato mappato a "intermediary.resource.attribute.labels".
- "vmw_vr_ops_appname" è stato mappato a "intermediary.application".
- "vmw_vr_ops_hostname" è stato mappato a "intermediary.hostname".
- "vmw_vr_ops_nodename" è stato mappato a "intermediary.resource.attribute.labels".
- "vmw_vr_ops_clustername" è stato mappato a "intermediary.resource.name".
- "vmw_vr_ops_clusterrole" è stato mappato a "intermediary.resource.attribute.labels.roles.name".
- "vmw_vr_ops_id" è stato mappato a "intermediary.resource.product_object_id".
2023-10-13
- Miglioramento: è stato modificato un pattern Grok per analizzare "sourceIp" con le porte.
- "vmw_host","vmw_product","vmw_vcenter","vmw_cluster","vmw_vr_ops_id","vmw_object_id","vmw_datacenter","vmw_vcenter_id","vmw_vr_ops_logtype","vmw_vr_ops_appname","vmw_vr_ops_hostname","vmw_vr_ops_nodename","vmw_vr_ops_clustername","vmw_vr_ops_clusterrole","managedExternally","update","filepath","eventType","resourceId" a "principal.resource.attribute.labels".
- I campi in "payload" sono stati mappati a "principal.resource.attribute.labels".
- "client" è stato mappato a "principal.ip"
- I campi mappati in "new_value" a "target.resource.attribute.labels".
2023-10-03
- Miglioramento: è stato aggiunto un pattern Grok per verificare se "sourceIp" è un indirizzo IP valido o meno prima di mapparlo al campo UDM.
2023-09-12
- Miglioramento: è stato aggiunto il supporto per i log syslog che contengono i campi "Nuovo valore" e "Valore precedente".
2023-06-26
- Valori mappati in "PASS", "DROP", "REJECT", "NAT", "NONAT", "RDR", "NORDR", "PUNT", "REDIRECT" e "COPY" alla chiave "additional.fields" come "Network_Status".
2023-03-07
- "errorCode" è stato mappato a "security_result.detection_fields".
- "app_type" è stato mappato a "principal.application".
- "tname", "s2comp" e "node" sono stati mappati a "principal.resource.attribute.labels".
- "exe" è stato mappato a "target.process.file.full_path".
- "dst_ip" è stato mappato a "target.ip".
- "ses" è stato mappato a "network.session_id".
- "hostname" è stato mappato a "principal.ip".
- "direction" è stato mappato a "network.direction".
- "reqId" è stato mappato a "metadata.product_log_id".
2022-06-10
- Analizzatore appena creato
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.