Raccogli i log di Nutanix Prism
Panoramica
Questo parser elabora i log di Nutanix Prism, gestendo i formati JSON e syslog. Estrae i campi da varie strutture di log, li normalizza in UDM e arricchisce i dati con un contesto aggiuntivo, come informazioni utente, dettagli della rete e gravità della sicurezza. Il parser esegue anche azioni specifiche in base al metodo HTTP e al livello di log, classificando gli eventi in tipi di eventi UDM come USER_LOGIN, STATUS_UPDATE e GENERIC_EVENT.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di disporre dell'accesso privilegiato a Nutanix Prism Central.
- Assicurati di avere Windows 2012 SP2 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.
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.
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 BindPlane Agent
- Per l'installazione su Windows, esegui il seguente script:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
. - Per l'installazione su Linux, esegui il seguente script:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
. - Ulteriori opzioni di installazione sono disponibili in questa guida all'installazione.
Configurare l'agente BindPlane per importare i syslog e inviarli a Google SecOps
- Accedi al computer su cui è installato BindPlane.
Modifica il file
config.yaml
come segue:receivers: tcplog: # 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: Namespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Riavviare BindPlane Agent per applicare le modifiche utilizzando il seguente comando:
sudo systemctl bindplane restart
Esportazione di Syslog da Nutanix Prism
- Accedi a Prism Central utilizzando un account con privilegi.
- Seleziona Prism Central Settings (Impostazioni Prism Central) dal menu.
- Vai a Server Syslog.
- Fai clic su + Configura server Syslog.
- Specifica i valori per i parametri di input nella finestra di dialogo Server Syslog:
- Nome del server: inserisci un nome per il server (ad esempio Google SecOps BindPlane Server)
- Indirizzo IP: inserisci l'IP del tuo agente BindPlane.
- Porta: inserisci la porta su cui è in ascolto l'agente BindPlane.
- Protocollo di trasporto: seleziona TCP.
- Fai clic su Configura.
- Fai clic su + Modifica nell'opzione Origini dati.
- Specifica i valori per i parametri di input nella finestra di dialogo Origini dati e rispettivo livello di gravità:
- Seleziona Controllo API, Controllo e Flusso.
- Imposta il livello di gravità per ciascuno su 6 - Informativo.
- Fai clic su Salva.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
@timestamp |
metadata.event_timestamp |
Il timestamp dell'evento viene analizzato dal campo @timestamp . Sono supportati i formati yyyy-MM-dd HH:mm:ss.SSS , yyyy-MM-ddTHH:mm:ssZ e ISO8601 . |
agent.id |
observer.asset_id |
Combinato con agent.type per formare l'ID risorsa osservatore nel formato "agent.type:agent.id". |
agent.type |
observer.application |
L'applicazione utilizzata per l'osservazione. |
agent.version |
observer.platform_version |
La versione dell'applicazione di monitoraggio. |
alertUid |
security_result.detection_fields.value |
Il valore dell'UID dell'avviso è mappato al campo value all'interno di detection_fields . key è impostato su "Alert Uid". |
api_version |
metadata.product_version |
La versione dell'API. |
clientIp |
principal.ip , principal.asset.ip |
Indirizzo IP client. |
client_type |
principal.labels.value |
Il valore del tipo di client. key è impostato su "client_type". |
defaultMsg |
metadata.description |
Il messaggio predefinito. |
entity_uuid |
metadata.product_log_id |
UUID dell'entità. |
http_method |
network.http.method |
Il metodo HTTP. Convertito in maiuscolo. |
host.architecture |
principal.asset.hardware.cpu_platform |
L'architettura dell'host. |
host.id |
principal.asset_id |
Con prefisso "NUTANIX:" per creare l'ID risorsa principale. |
host.ip |
principal.ip , principal.asset.ip |
Indirizzo IP dell'host. |
host.mac |
principal.mac |
Indirizzo MAC dell'host. |
host.os.kernel |
principal.platform_patch_level |
La versione del kernel del sistema operativo host. |
host.os.platform |
principal.platform |
La piattaforma del sistema operativo host. Mappato a LINUX , WINDOWS , MAC o UNKNOWN_PLATFORM . |
host.os.version |
principal.platform_version |
La versione del sistema operativo host. |
input.type |
network.ip_protocol |
Il protocollo di rete. Mappato a "UDP" o "TCP". |
log.source.address |
principal.ip , principal.asset.ip , principal.port |
Analizzati per estrarre l'IP e la porta di origine. |
logstash.collect.host |
observer.ip |
L'indirizzo IP del raccoglitore Logstash. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Il timestamp di raccolta del log. |
logstash.ingest.host |
intermediary.hostname |
Il nome host del server di importazione Logstash. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Il timestamp dell'importazione del log. |
logstash.irm_environment |
principal.labels.value |
Il valore dell'ambiente irm. key è impostato su "irm_environment". |
logstash.irm_region |
principal.labels.value |
Il valore della regione irm. key è impostato su "irm_region". |
logstash.irm_site |
principal.labels.value |
Il valore del sito irm. key è impostato su "irm_site". |
logstash.process.host |
intermediary.hostname |
Il nome host del server di elaborazione Logstash. |
operationType |
metadata.product_event_type |
Il tipo di operazione. |
originatingClusterUuid |
additional.fields.value.string_value |
L'UUID del cluster di origine. key è impostato su "Originating Cluster Uuid". |
params.mac_address |
target.mac |
L'indirizzo MAC dai parametri. |
params.requested_ip_address |
target.ip , target.asset.ip |
L'indirizzo IP richiesto dai parametri. |
params.vm_name |
target.resource.name |
Il nome della VM dai parametri. |
program |
metadata.product_event_type |
Il nome del programma. |
rest_endpoint |
target.url |
L'endpoint REST. |
sessionId |
additional.fields.value.string_value |
L'ID sessione. key è impostato su "ID sessione". |
syslog_host |
principal.hostname , principal.asset.hostname |
Host syslog. |
timestamp |
metadata.event_timestamp |
Il timestamp dell'evento. |
username |
principal.user.user_display_name o principal.user.userid |
Nome utente. Utilizzato come ID utente se http_method è "POST". |
uuid |
metadata.product_log_id |
UUID. |
N/D | metadata.vendor_name |
Hardcoded to "Nutanix_Prism". |
N/D | metadata.product_name |
Hardcoded to "Nutanix_Prism". |
N/D | metadata.event_type |
Determinato dalla logica del parser in base ai valori di has_principal , has_target , audit_log , network_set e http_method . Può essere GENERIC_EVENT , USER_LOGIN , STATUS_UPDATE , USER_RESOURCE_ACCESS , RESOURCE_CREATION , USER_RESOURCE_UPDATE_CONTENT o USER_RESOURCE_DELETION . |
N/D | metadata.log_type |
Hardcoded su "NUTANIX_PRISM". |
N/D | extensions.auth.type |
Imposta su "AUTHTYPE_UNSPECIFIED" se metadata.event_type è USER_LOGIN . |
N/D | security_result.severity |
Determinato dalla logica del parser in base a log_level e syslog_pri . Può essere CRITICAL , ERROR , HIGH , MEDIUM o INFORMATIONAL . |
Modifiche
2024-02-21
- Quando "inner_message" non è vuoto e "not_json" è "true", imposta "audit_log" su "true" per supportare i log JSON eliminati.
- Mappature "principal.ip" e "principal.asset.ip" allineate.
- Mappature "target.ip" e "target.asset.ip" allineate.
- Mappature "principal.hostname" e "principal.asset.hostname" allineate.
- Quando "network_set" è "false", "has_principal" è "true", "has_target" è "false" e "audit_log" è "false", imposta "metadata.event_type" su "STATUS_UPDATE".
- Quando "network_set" è "true", "has_principal" è "true", "has_target" è "false" e "audit_log" è "false", imposta "metadata.event_type" su "GENERIC_EVENT".
2024-01-12
- È stato aggiunto il supporto per il nuovo formato dei log syslog.
- È stato aggiunto un controllo condizionale nullo prima di mappare "logstash.ingest.host" a "intermediary.hostname".
- È stato aggiunto un controllo condizionale nullo prima di mappare "logstash.process.host" a "intermediary.hostname".
- È stato aggiunto un controllo condizionale nullo prima della mappatura di "logstash.collect.host" a "observer.ip".
2023-12-23
- È stato aggiunto il supporto per un nuovo tipo di log AUDIT.
- Sono stati aggiunti nuovi pattern Grok per analizzare i log SYSLOG+JSON.
- "affectedEntityList" e "alertUid" sono stati mappati a "security_result.detection_fields".
- "clientIp" e "params.requested_ip_address" sono stati mappati a "principal.ip".
- "defaultMsg" è stato mappato a "metadata.description".
- "operationType" è stato mappato a "metadata.product_event_type".
- "originatingClusterUuid" e "sessionId" sono stati mappati a "additional.fields".
- "params.mac_address" è stato mappato a "principal.mac".
- "uuid" è stato mappato a "metadata.product_log_id".
- "userName" è stato mappato a "principal.user.user_display_name".
- "params.vm_name" è stato mappato a "target.resource.name".
2023-01-23
- "logstash.ingest.host" è stato mappato a "intermediary[0].hostname" anziché a "observer.hostname".
- "logstash.collect.host" è stato mappato a "observer.ip".
- È stato aggiunto il controllo null per "logstash.ingest.host".