Raccogliere i log degli avvisi del Cloud Access Security Broker (CASB) Zscaler

Supportato in:

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

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. 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

  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 BindPlane Agent

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 di installazione aggiuntive

Configurare l'agente BindPlane per importare i 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:
        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
    
  3. Sostituisci la porta e l'indirizzo IP come richiesto nella tua infrastruttura.

  4. Sostituisci <customer_id> con l'ID cliente effettivo.

  5. 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

  1. Accedi alla Console di amministrazione di Zscaler Analytics.
  2. Seleziona Amministrazione > Impostazioni > Servizio di streaming Nanolog (NSS).
  3. Seleziona Feed NSS.
  4. Fai clic su Aggiungi.
  5. Nella finestra Aggiungi feed NSS visualizzata, procedi nel seguente modo:

    1. Nome del feed: inserisci il nome del feed.
    2. Tipo di NSS: seleziona NSS per il web o NSS per il firewall in base ai tuoi requisiti.
    3. Nome NSS: seleziona la macchina virtuale (VM) NSS che raccoglie i log dal cloud (è possibile mappare a un feed una sola VM NSS).
    4. Stato: seleziona Attivato per attivare il feed.
    5. Indirizzo IP SIEM: inserisci l'indirizzo IP del server syslog/Bindplane.
    6. Porta TCP SIEM: inserisci il numero di porta del server syslog/Bindplane per la comunicazione TCP (Zscaler supporta solo la connessione TCP).
    7. Tipo di log: seleziona Log web o Log firewall in base al tipo di NSS selezionato.
    8. Tipo di output del feed: seleziona Personalizzato.
    9. Formato output del feed: specifica il log web o il log firewall.
    10. Offuscamento utente: seleziona Disattivato per visualizzare i nomi utente di accesso nell'output. Per i valori casuali, seleziona Attivata.
    11. Fuso orario: seleziona il fuso orario appropriato (il fuso orario predefinito è GMT).
    12. Log duplicati: inserisci il numero di minuti necessari a NSS per inviare i log duplicati (puoi selezionare il tempo in base alle tue esigenze).
    13. 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.

  6. Utilizza la Console di amministrazione dei criteri o la Console di amministrazione di Analytics:

    1. Per utilizzare la Console di amministrazione dei criteri, fai clic su Fine.
    2. 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.
  7. Utilizza la Console di amministrazione dei criteri o la Console di amministrazione di Analytics:

    1. 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.
    2. Per utilizzare la Console di amministrazione di Analytics, fai clic su Attiva ora (lo stato del risultato viene visualizzato nella parte superiore della finestra).

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

  1. Attività utente: seleziona Tipo di log.
  2. Modello di log: seleziona CSV.
  3. 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