Raccogliere i log degli avvisi del Cloud Access Security Broker (CASB) Zscaler
Questo documento descrive come raccogliere i log di avviso del cloud access security broker (CASB) Zscaler. Questo parser estrae i campi dai log in formato JSON, gestendo potenziali incoerenze di formattazione. Mappa i campi estratti all'UDM, creando o unendo i campi all'interno degli oggetti principal
, metadata
, additional
e security_result
e, infine, unisce tutto in un campo @output
unificato. Il parser esegue anche diverse trasformazioni dei dati, tra cui la manipolazione delle stringhe e l'analisi delle date.
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 ZScaler.
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.
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
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 i syslog e inviarli 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: 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: vmware_nsx raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog 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
Configura Zscaler Cloud Web Security
- Accedi alla Console di amministrazione di Zscaler Analytics.
- Seleziona Amministrazione > Impostazioni > Servizio di streaming Nanolog (NSS).
- Seleziona Feed NSS.
- Fai clic su Aggiungi.
Nella finestra Aggiungi feed NSS visualizzata, procedi nel seguente modo:
- Nome del feed: inserisci il nome del feed.
- Tipo di NSS: seleziona NSS per il web o NSS per il firewall in base ai tuoi requisiti.
- Nome NSS: seleziona la macchina virtuale (VM) NSS che raccoglie i log dal cloud (è possibile mappare a un feed una sola VM NSS).
- Stato: seleziona Attivato per attivare il feed.
- Indirizzo IP SIEM: inserisci l'indirizzo IP del server syslog/Bindplane.
- Porta TCP SIEM: inserisci il numero di porta del server syslog/Bindplane per la comunicazione TCP (Zscaler supporta solo la connessione TCP).
- Tipo di log: seleziona Log web o Log firewall in base al tipo di NSS selezionato.
- Tipo di output del feed: seleziona Personalizzato.
- Formato output del feed: specifica il log web o il log firewall.
- Offuscamento utente: seleziona Disattivato per visualizzare i nomi utente di accesso nell'output. Per i valori casuali, seleziona Attivata.
- Fuso orario: seleziona il fuso orario appropriato (il fuso orario predefinito è GMT).
- Log duplicati: inserisci il numero di minuti necessari a NSS per inviare i log duplicati (puoi selezionare il tempo in base alle tue esigenze).
- Filtri delle transazioni: sono disponibili vari parametri in base ai quali puoi filtrare i log inviati dalla macchina virtuale NSS.
Per ulteriori informazioni sui diversi insiemi di filtri, consulta la sezione del documento NSS nel portale di assistenza.
Utilizza la Console di amministrazione dei criteri o la Console di amministrazione di Analytics:
- Per utilizzare la Console di amministrazione dei criteri, fai clic su Fine.
- Per utilizzare la Console di amministrazione di Analytics, fai clic su Salva. Dopo aver chiuso la finestra Aggiungi feed NSS, torna alla finestra precedente e i dettagli del feed aggiunto vengono visualizzati nella sezione Configura feed.
Utilizza la Console di amministrazione dei criteri o la Console di amministrazione di Analytics:
- Per utilizzare la Console di amministrazione dei criteri:
- Nella sezione Configura feed, fai clic su Salva.
- Fai clic su Attiva ora (lo stato del risultato viene visualizzato in una nuova finestra).
- Fai clic su Fine.
- Per utilizzare la Console di amministrazione di Analytics, fai clic su Attiva ora (lo stato del risultato viene visualizzato nella parte superiore della finestra).
- Per utilizzare la Console di amministrazione dei criteri:
Configura il feed dei log web e del firewall
Nel campo Formato di output del feed, utilizza i seguenti feed:
Se il raccoglitore supporta il formato personalizzato, specifica il seguente feed di log web:
|ZSCALER|DATE|%s{mon} %d{dd} %02d{hh}:%02d{mm}:%02d{ss}|NSSFEEDIP|%s{nsssvcip}|CLIENTINTIP|%s{cintip}|RECORDID|%d{recordid}|LOGINNAME|%s{login}|PROTOCOL|%s{proto}|URL|%s{url}|HOST|%s{host}|ACTION|%s{action}|REASON|%s{reason}|RISKSCORE|%d{riskscore}|APPNAME|%s{appname}|APPCLASS|%s{appclass}|REQSIZE|%d{reqsize}|RESPSIZE|%d{respsize}|CTIME|%d{ctime}|URLCLASS|%s{urlclass}|SUPERCAT|%s{urlsupercat}|URLCAT|%s{urlcat}|MALWARECAT|%s{malwarecat}|MALWARECLASS|%s{malwareclass}|THREATNAME|%s{threatname}|FILETYPE|%s{filetype}|FILECLASS|%s{fileclass}|DLPENGINE|%s{dlpeng}|DLPDICT|%s{dlpdict}|BWTHROTTLE|%s{bwthrottle}|LOCATION|%s{location}|DEPARTMENT|%s{dept}|CLIENTIP|%s{cip}|DESTINATIONIP|%s{sip}|REQMETHOD|%s{reqmethod}|RESPCODE|%s{respcode}|USERAGENT|%s{ua}|REFERER|%s{referer}|MD5HASH|%s{bamd5}|DLPRULENAME|%s{dlprulename}|DLPMD5|%s{dlpmd5}|DLPIDENTIFIER|%d{dlpidentifier}|DLPDICTHITCOUNT|%s{dlpdicthitcount}|\n ```
Se il raccoglitore supporta l'abbonamento al feed del firewall, specifica il seguente feed del firewall:
|ZSCALERFIREWALL|DATE|%s{mon}%d{dd} %02d{hh}:%02d{mm}:%02d{ss}|CLIENTIP|%s{csip}|RECORDID|%d{recordid}|LOGINNAME|%s{login}|PROTOCOL|%s{ipproto}|ACTION|%s{action}|DESTINATIONIP|%s{cdip}|SOURCEPORT|%d{csport}|DESTINATIONPORT|%d{cdport}|CLIENTTUNIP|%s{tsip}|CLIENTTUNPORT|%d{tsport}|LOCATION|%s{location}|DEPARTMENT|%s{dept}|DESTINATIONCOUNTRY|%s{destcountry}|INCOMINGBYTES|%ld{inbytes}|NETWORKAPP|%s{nwapp}|NETWORKSVC|%s{nwsvc}|RULELABEL|%s{rulelabel}|NATTING|%s{dnat}|SESSIONDURATION|%d{duration}|AGGREGATEDSESSION|%d{numsessions}|AVERAGEDURATION|%d{avgduration}|TUNNELTYPE|%s{ttype}|SERVERDESTPORT|%d{sdport}|SERVERSOURCEIP|%s{ssip}|SERVERSOURCEPORT|%d{ssport}|IPCAT|%s{ipcat}|\n
Configurare Zscaler Private Access
- Attività utente: seleziona Tipo di log.
- Modello di log: seleziona CSV.
Stream di log: esegui il seguente comando:
*%s{LogTimestamp:time} User Activity zpa-lss: %s{Username},%d{ServicePort},%s{ClientPublicIP},%s{ClientCountryCode},%s{ConnectionStatus},%d{IPProtocol},%s{ClientZEN},%s{Policy},%s{Connector},%s{ConnectorZEN},%s{ConnectorIP},%s{Host},%s{ServerIP},%s{TimestampConnectionStart:iso8601},%d{ServerPort}\n*
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
applicationname |
principal.application |
Il valore di applicationname dal log non elaborato viene assegnato a questo campo UDM. |
company |
principal.user.company_name |
Il valore di company dal log non elaborato viene assegnato a questo campo UDM. |
datetime |
metadata.event_timestamp |
Il valore di datetime dal log non elaborato viene analizzato e convertito in un timestamp, che viene poi assegnato a questo campo UDM. Il parser utilizza più formati di data per gestire le variazioni nel log non elaborato. |
dept |
principal.user.department |
Il valore di dept dal log non elaborato viene assegnato a questo campo UDM. |
dlpdictcount |
additional.fields |
Se dlpdictcount è presente e non è "None" o vuoto nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "dlpdictcount" e un valore di stringa dlpdictcount . |
dlpdictnames |
additional.fields |
Se dlpdictnames è presente e non è "Nessun" o vuoto nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "dlpdictnames" e un valore di stringa dlpdictnames . |
dlpenginenames |
additional.fields |
Se dlpenginenames è presente e non è "Nessuna" o vuoto nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "dlpenginenames" e un valore di stringa dlpenginenames . |
event.extcollabnames |
additional.fields |
Se extcollabnames è presente nel log non elaborato, viene suddiviso in base al carattere " |
event.extownername |
additional.fields |
Se extownername è presente nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "extownername" e un valore di stringa extownername . |
filedownloadtimems |
additional.fields |
Se filedownloadtimems è presente nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "File Download Time" e un valore di stringa filedownloadtimems . |
fileid |
additional.fields |
Se fileid è presente nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "fileid" e un valore di stringa fileid . |
filename |
principal.process.file.full_path |
Il valore di filename dal log non elaborato viene assegnato a questo campo UDM. Il parser gestisce i caratteri di escape e i casi speciali nel nome file. |
filemd5 |
principal.process.file.md5 |
Se filemd5 è presente e non è "Nessuna" o vuoto nel log non elaborato, il relativo valore viene assegnato a questo campo UDM. |
filescantimems |
additional.fields |
Se filescantimems è presente nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "File Scan Time" e un valore di stringa filescantimems . |
filesource |
additional.fields |
Se filesource è presente nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "Origine file" e valore di stringa filesource . Il parser gestisce i caratteri con caratteri di escape e i casi speciali in filesource. |
fullurl |
principal.url |
Se fullurl è presente e non è "URL sconosciuto" o vuoto nel log non elaborato, il relativo valore viene assegnato a questo campo UDM. |
intcollabnames |
additional.fields |
Se intcollabnames è presente nel log non elaborato, viene suddiviso in base al carattere " |
lastmodtime |
metadata.event_timestamp |
Se lastmodtime è presente nel log non elaborato, viene analizzato e convertito in un timestamp, che viene poi assegnato a questo campo UDM. Il parser utilizza più formati di data per gestire le variazioni nel log non elaborato. |
login |
principal.user.email_addresses , principal.user.userid |
Se login è presente e corrisponde a un formato di indirizzo email, il relativo valore viene assegnato sia a principal.user.email_addresses che a principal.user.userid . Se login è presente, ma non corrisponde a un formato di indirizzo email, il relativo valore viene assegnato solo a principal.user.userid . Se login non è presente, principal.user.userid viene impostato su "n/a". |
policy |
security_result.rule_name |
Se policy è presente e non è "Nessuna" o vuoto nel log non elaborato, il relativo valore viene assegnato a questo campo UDM. |
recordid |
metadata.product_log_id |
Se recordid è presente nel log non elaborato, il relativo valore viene assegnato a questo campo UDM. |
tenant |
additional.fields |
Se tenant è presente nel log non elaborato, all'array additional.fields viene aggiunto un nuovo campo con chiave "Tenant" e un valore di stringa tenant . |
threatname |
security_result.threat_name |
Se threatname è presente e non è "Nessuna" o vuoto nel log non elaborato, il relativo valore viene assegnato a questo campo UDM. |
(Parser Logic) | metadata.event_type |
Il parser imposta questo campo su "USER_UNCATEGORIZED". |
(Parser Logic) | metadata.log_type |
Il parser imposta questo campo su "ZSCALER_CASB". |
(Parser Logic) | metadata.product_name |
L'analizzatore imposta questo campo su "Zscaler CASB". |
(Parser Logic) | metadata.vendor_name |
L'analizzatore imposta questo campo su "Zscaler". |
Modifiche
2024-06-04
- È stata aggiunta la funzione "gsub" per gestire i caratteri di escape non validi nei seguenti campi: "filename", "fileid", "filemd5" e "filesource".
2024-03-27
- È stata aggiunta la funzione "gsub" per gestire il carattere di escape non valido in "nomefile".
2024-03-05
- "event.fileid", "event.intcollabnames", "event.extownername", "event.extcollabnames" sono stati mappati a "additional.fields".
2024-01-29
- È stata aggiunta la funzione "gsubs" per gestire il carattere di escape non valido "," in "filesource".
- È stata aggiunta la funzione "gsubs" per gestire il carattere di escape non valido in "nomefile".
2023-12-21
- È stato aggiunto gsubs per gestire i caratteri non validi per i log JSON non analizzati.
2023-09-30
- "event.login" è stato mappato a "principal.user.userid". Se non è disponibile, imposta "principal.user.userid" su "n/a".
- È stato aggiunto il controllo "on_error" per il filtro "data" come "event.lastmodtime", che è un parametro facoltativo.
2022-08-16
- Analizzatore appena creato