Zscaler Cloud Access Security Broker (CASB)-Benachrichtigungsprotokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie die Benachrichtigungsprotokolle des Zscaler Cloud Access Security Broker (CASB) erfassen. Dieser Parser extrahiert Felder aus JSON-formatierten Protokollen und behandelt mögliche Formatierungsinkonsistenzen. Es ordnet extrahierte Felder dem UDM zu, erstellt oder verschmilzt Felder in principal-, metadata-, additional- und security_result-Objekten und führt sie schließlich in einem einheitlichen @output-Feld zusammen. Der Parser führt auch mehrere Datentransformationen durch, einschließlich Stringmanipulation und Datums-Parsing.

Hinweis

  • Sie benötigen eine Google Security Operations-Instanz.
  • Sie müssen Windows 2016 oder höher oder einen Linux-Host mit systemd verwenden.
  • Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
  • Sie benötigen Administratorzugriff auf ZScaler.

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. Lade die Datei zur Authentifizierung der Datenaufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

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

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

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

Zusätzliche Installationsressourcen

BindPlane-Agent so konfigurieren, dass er Syslog-Protokolle aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

    • Suchen Sie die Datei config.yaml. Unter Linux befindet es sich normalerweise im Verzeichnis /etc/bindplane-agent/, unter Windows im Installationsverzeichnis.
    • Öffnen Sie die Datei mit einem Texteditor, z. B. nano, vi oder Notepad.
  2. Bearbeiten Sie die Datei config.yamlso:

    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. Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.

  4. Ersetzen Sie <customer_id> durch die tatsächliche Kundennummer.

  5. Aktualisieren Sie /path/to/ingestion-authentication-file.json im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.

BindPlane-Agent neu starten, um die Änderungen anzuwenden

  • Führen Sie unter Linux den folgenden Befehl aus, um den BindPlane-Agent neu zu starten:

    sudo systemctl restart bindplane-agent
    
  • Unter Windows können Sie den BindPlane-Agenten entweder über die Konsole Dienste oder über den folgenden Befehl neu starten:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Zscaler Cloud Web Security konfigurieren

  1. Melden Sie sich in der Admin-Konsole von Zscaler Analytics an.
  2. Wählen Sie Verwaltung > Einstellungen > Nanolog-Streamingdienst (NSS) aus.
  3. Wählen Sie NSS-Feeds aus.
  4. Klicken Sie auf Hinzufügen.
  5. Führen Sie im angezeigten Fenster NSS-Feed hinzufügen die folgenden Schritte aus:

    1. Feedname: Geben Sie den Feednamen ein.
    2. NSS-Typ: Wählen Sie je nach Ihren Anforderungen entweder NSS für das Web oder NSS für die Firewall aus.
    3. NSS-Name: Wählen Sie die NSS-VM aus, die Protokolle aus der Cloud erfasst. Einem Feed kann nur eine NSS-VM zugeordnet werden.
    4. Status: Wählen Sie Aktiviert aus, um den Feed zu aktivieren.
    5. SIEM-IP: Geben Sie die IP-Adresse des syslog-Servers/Bindplanes ein.
    6. SIEM-TCP-Port: Geben Sie die Portnummer des Syslog-Servers/Bindplanes für die TCP-Kommunikation ein. Zscaler unterstützt nur die TCP-Verbindung.
    7. Logtyp: Wählen Sie je nach ausgewähltem NSS-Typ Webprotokoll oder Firewallprotokolle aus.
    8. Feedausgabetyp: Wählen Sie Benutzerdefiniert aus.
    9. Feed-Ausgabeformat: Geben Sie das Webprotokoll oder Firewallprotokoll an.
    10. User obfuscation (Nutzerverschleierung): Wählen Sie Disabled (Deaktiviert) aus, um die Anmeldenamen in der Ausgabe anzuzeigen. Wählen Sie für Zufallszahlen Aktiviert aus.
    11. Zeitzone: Wählen Sie die richtige Zeitzone aus. Die Standardzeitzone ist GMT.
    12. Duplizierte Protokolle: Geben Sie die Anzahl der Minuten ein, die NSS für das Senden der duplizierten Protokolle benötigt. Sie können die Zeit entsprechend Ihren Anforderungen auswählen.
    13. Transaktionsfilter: Es gibt verschiedene Parameter, anhand derer Sie die von der NSS-VM gesendeten Protokolle filtern können.

    Weitere Informationen zu den verschiedenen Filtersätzen finden Sie im Abschnitt zu NSS-Dokumenten im Hilfeportal.

  6. Verwenden Sie die Policy Admin Console oder die Analytics Admin Console:

    1. Klicken Sie auf Fertig, um die Richtlinien-Admin-Konsole zu verwenden.
    2. Wenn Sie die Analytics-Admin-Konsole verwenden möchten, klicken Sie auf Speichern. Nachdem Sie das Fenster NSS-Feed hinzufügen geschlossen haben, kehren Sie zum vorherigen Fenster zurück. Die hinzugefügten Feeddetails werden dann im Bereich Feeds konfigurieren angezeigt.
  7. Verwenden Sie die Policy Admin Console oder die Analytics Admin Console:

    1. So verwenden Sie die Policy Admin Console:
      • Klicken Sie im Bereich Feeds konfigurieren auf Speichern.
      • Klicken Sie auf Jetzt aktivieren. Der Status des Ergebnisses wird in einem neuen Fenster angezeigt.
      • Klicken Sie auf Fertig.
    2. Wenn Sie die Analytics-Admin-Konsole verwenden möchten, klicken Sie auf Jetzt aktivieren. Der Status des Ergebnisses wird oben im Fenster angezeigt.

Web- und Firewall-Logfeed konfigurieren

Verwenden Sie im Feld Feedausgabeformat die folgenden Feeds:

  • Wenn der Dispatcher ein benutzerdefiniertes Format unterstützt, geben Sie den folgenden Webprotokollfeed an:

    |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
            ```
    
  • Wenn der Collector das Abonnieren von Firewall-Feeds unterstützt, geben Sie den folgenden Firewall-Feed an:

    |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
    

Zscaler Private Access konfigurieren

  1. Nutzeraktivität: Wählen Sie Protokolltyp aus.
  2. Protokollvorlage: Wählen Sie CSV aus.
  3. Protokollstream: Führen Sie den folgenden Befehl aus:

    *%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*
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
applicationname principal.application Dem UDM-Feld wird der Wert applicationname aus dem Rohprotokoll zugewiesen.
company principal.user.company_name Dem UDM-Feld wird der Wert company aus dem Rohprotokoll zugewiesen.
datetime metadata.event_timestamp Der Wert von datetime aus dem Rohprotokoll wird analysiert und in einen Zeitstempel umgewandelt, der dann diesem UDM-Feld zugewiesen wird. Der Parser verwendet mehrere Datumsformate, um Abweichungen im Rohprotokoll zu verarbeiten.
dept principal.user.department Dem UDM-Feld wird der Wert dept aus dem Rohprotokoll zugewiesen.
dlpdictcount additional.fields Wenn dlpdictcount im Rohprotokoll vorhanden ist und nicht „None“ oder leer ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „dlpdictcount“ und dem Stringwert dlpdictcount hinzugefügt.
dlpdictnames additional.fields Wenn dlpdictnames im Rohprotokoll vorhanden ist und nicht „None“ oder leer ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „dlpdictnames“ und dem Stringwert dlpdictnames hinzugefügt.
dlpenginenames additional.fields Wenn dlpenginenames im Rohprotokoll vorhanden ist und nicht „None“ oder leer ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „dlpenginenames“ und dem Stringwert dlpenginenames hinzugefügt.
event.extcollabnames additional.fields Wenn extcollabnames im Rohprotokoll vorhanden ist, wird es durch „
event.extownername additional.fields Wenn extownername im Rohprotokoll vorhanden ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „extownername“ und dem Stringwert extownername hinzugefügt.
filedownloadtimems additional.fields Wenn filedownloadtimems im Rohprotokoll vorhanden ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „Dateidownloadzeit“ und dem Stringwert filedownloadtimems hinzugefügt.
fileid additional.fields Wenn fileid im Rohprotokoll vorhanden ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „fileid“ und dem Stringwert fileid hinzugefügt.
filename principal.process.file.full_path Dem UDM-Feld wird der Wert filename aus dem Rohprotokoll zugewiesen. Der Parser verarbeitet Escape-Zeichen und Sonderfälle im Dateinamen.
filemd5 principal.process.file.md5 Wenn filemd5 im Rohprotokoll vorhanden ist und nicht „Kein“ oder leer ist, wird sein Wert diesem UDM-Feld zugewiesen.
filescantimems additional.fields Wenn filescantimems im Rohprotokoll vorhanden ist, wird dem additional.fields-Array ein neues Feld mit dem Schlüssel „Dateisuchzeit“ und dem Stringwert filescantimems hinzugefügt.
filesource additional.fields Wenn filesource im Rohprotokoll vorhanden ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „Dateiquelle“ und dem Stringwert filesource hinzugefügt. Der Parser verarbeitet Escape-Zeichen und Sonderfälle in der Dateiquelle.
fullurl principal.url Wenn fullurl im Rohprotokoll vorhanden ist und nicht „Unbekannte URL“ oder leer ist, wird sein Wert diesem UDM-Feld zugewiesen.
intcollabnames additional.fields Wenn intcollabnames im Rohprotokoll vorhanden ist, wird es durch „
lastmodtime metadata.event_timestamp Wenn lastmodtime im Rohprotokoll vorhanden ist, wird es geparst und in einen Zeitstempel umgewandelt, der dann diesem UDM-Feld zugewiesen wird. Der Parser verwendet mehrere Datumsformate, um Abweichungen im Rohprotokoll zu verarbeiten.
login principal.user.email_addresses, principal.user.userid Wenn login vorhanden ist und dem Format einer E-Mail-Adresse entspricht, wird ihr Wert sowohl principal.user.email_addresses als auch principal.user.userid zugewiesen. Wenn login vorhanden ist, aber nicht dem Format einer E-Mail-Adresse entspricht, wird sein Wert nur principal.user.userid zugewiesen. Wenn login nicht vorhanden ist, wird principal.user.userid auf „–“ festgelegt.
policy security_result.rule_name Wenn policy im Rohprotokoll vorhanden ist und nicht „Kein“ oder leer ist, wird sein Wert diesem UDM-Feld zugewiesen.
recordid metadata.product_log_id Wenn recordid im Rohprotokoll vorhanden ist, wird sein Wert diesem UDM-Feld zugewiesen.
tenant additional.fields Wenn tenant im Rohprotokoll vorhanden ist, wird dem Array additional.fields ein neues Feld mit dem Schlüssel „Tenant“ und dem Stringwert tenant hinzugefügt.
threatname security_result.threat_name Wenn threatname im Rohprotokoll vorhanden ist und nicht „Kein“ oder leer ist, wird sein Wert diesem UDM-Feld zugewiesen.
(Parser Logic) metadata.event_type Der Parser setzt dieses Feld auf „USER_UNCATEGORIZED“.
(Parser Logic) metadata.log_type Der Parser setzt dieses Feld auf „ZSCALER_CASB“.
(Parser Logic) metadata.product_name Der Parser setzt dieses Feld auf „Zscaler CASB“.
(Parser Logic) metadata.vendor_name Der Parser setzt dieses Feld auf „Zscaler“.

Änderungen

2024-06-04

  • Die Funktion „gsub“ wurde hinzugefügt, um ungültige Escape-Zeichen in den folgenden Feldern zu verarbeiten: „filename“, „fileid“, „filemd5“ und „filesource“.

2024-03-27

  • Die Funktion „gsub“ wurde hinzugefügt, um ungültige Escape-Zeichen in „filename“ zu verarbeiten.

2024-03-05

  • „event.fileid“, „event.intcollabnames“, „event.extownername“ und „event.extcollabnames“ wurden in „additional.fields“ zugeordnet.

2024-01-29

  • Die Funktion „gsubs“ wurde hinzugefügt, um das ungültige Escape-Zeichen „,“ in „filesource“ zu verarbeiten.
  • Die Funktion „gsubs“ wurde hinzugefügt, um ungültige Escape-Zeichen in „filename“ zu verarbeiten.

2023-12-21

  • Gsubs wurde hinzugefügt, um ungültige Zeichen in nicht geparsten JSON-Protokollen zu verarbeiten.

2023-09-30

  • „event.login“ wurde „principal.user.userid“ zugeordnet. Wenn nicht verfügbar, setzen Sie „principal.user.userid“ auf „–“.
  • Für den „Datum“-Filter wurde die „on_error“-Prüfung „event.lastmodtime“ hinzugefügt, ein optionaler Parameter.

2022-08-16

  • Neu erstellter Parser