Forcepoint-Proxy-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie mit Bindplane Forcepoint-Proxy-Logs in Google Security Operations aufnehmen. Der Parser bereinigt zuerst die Eingabeprotokollnachricht und extrahiert Schlüssel/Wert-Paare mithilfe von Grok-Mustern und regulären Ausdrücken. Anschließend werden die extrahierten Felder basierend auf bestimmten Bedingungen und Feldwerten dem einheitlichen Datenmodell (Unified Data Model, UDM) zugeordnet. Dabei werden verschiedene Protokollformate und Grenzfälle berücksichtigt, um eine einheitliche Datendarstellung zu gewährleisten.

Hinweise

  • 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 erhöhte Zugriffsrechte für den Forcepoint-Proxy.

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
    

Weitere Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

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

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: FORCEPOINT_WEBPROXY
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                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.

Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden

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

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Forcepoint Web Security Suite konfigurieren

  1. Melden Sie sich in der Forcepoint-Konsole an.
  2. Gehen Sie zu Web > Einstellungen > Allgemein.
  3. Klicken Sie auf SIEM-Integration.
  4. Klicken Sie auf das Kästchen SIEM-Integration für diesen Richtlinienserver aktivieren.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • IP-Adresse oder Hostname: Geben Sie die IP-Adresse des Bindplane-Agents ein.
    • Portnummer: Geben Sie die Portnummer ein, die auf dem Bindplane-Agenten konfiguriert ist, z. B. 514.
    • Transportprotokoll: Wählen Sie das Protokoll UDP aus.
    • SIEM-Format: Wählen Sie Syslog/CEF (Arcsight) aus.
  6. Klicken Sie auf OK.
  7. Klicken Sie auf Speichern und bereitstellen.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Aktion security_result.summary Wenn „action_msg“ nicht leer ist, wird es „security_result.summary“ zugeordnet. Andernfalls, wenn „action“ nicht leer ist, wird es security_result.summary zugeordnet. Andernfalls, wenn „act“ nicht leer ist, wird es security_result.summary zugeordnet.
action_msg security_result.summary Wenn „action_msg“ nicht leer ist, wird es auf „security_result.summary“ zugeordnet. Andernfalls, wenn „action“ nicht leer ist, wird es security_result.summary zugeordnet. Andernfalls, wenn „act“ nicht leer ist, wird es security_result.summary zugeordnet.
App target.application Wenn „destinationServiceName“ nicht leer ist, wird es „app_name“ zugeordnet. Andernfalls, wenn „app“ nicht leer ist und weder http noch HTTP enthält, wird es auf „app_name“ zugeordnet. Schließlich wird „app_name“ mit „target.application“ abgeglichen.
bytes_in network.received_bytes Wenn „in“ nicht leer ist, wird es auf „bytes_in“ zugeordnet. Schließlich wird „bytes_in“ auf „network.received_bytes“ zugeordnet.
bytes_out network.sent_bytes Wenn „out“ nicht leer ist, wird es „bytes_out“ zugeordnet. Schließlich wird „bytes_out“ zu „network.sent_bytes“ zugeordnet.
Katze security_result.category_details Wenn „cat“ nicht leer ist, wird es „category“ zugeordnet. Schließlich wird „category“ auf „security_result.category_details“ zugeordnet.
cn1 security_result.detection_fields.value Wenn cn1 nicht leer ist, wird es mit dem Schlüssel Disposition Number security_result.detection_fields.value zugeordnet.
ContentType target.file.mime_type Wenn „contentType“ nicht leer ist, wird es „ContentType“ zugeordnet. Schließlich wird „ContentType“ auf „target.file.mime_type“ zugeordnet.
cs1 target_role.description cs1 ist target_role.description zugeordnet.
cs2 security_result.category_details Wenn „cs2“ nicht leer und nicht „0“ ist, wird es mit dem Präfix „Dynamic Category:“ zu „security_result.category_details“ zugeordnet.
cs3 target.file.mime_type cs3 wird target.file.mime_type zugeordnet.
description metadata.description Wenn „description“ nicht leer ist, wird es mit „metadata.description“ abgeglichen.
destinationServiceName target.application Wenn „destinationServiceName“ nicht leer ist, wird es „app_name“ zugeordnet. Schließlich wird „app_name“ mit „target.application“ verknüpft.
deviceFacility metadata.product_event_type Wenn „product_event“ und „deviceFacility“ nicht leer sind, werden sie mit - zusammengeführt und metadata.product_event_type zugeordnet. Andernfalls wird „product_event“ mit „metadata.product_event_type“ abgeglichen.
disposition security_result.detection_fields.value Wenn „disposition“ nicht leer ist, wird es dem Schlüssel „security_result.detection_fields.value“ mit dem Schlüssel „Disposition Number“ zugeordnet.
dst target.ip Wenn „dst“ nicht leer ist und „dvchost“ leer ist, wird es auf „dst_ip“ zugeordnet. Schließlich wird „dst_ip“ mit „target.ip“ abgeglichen.
dst_host target.hostname Wenn „dst“ nicht leer ist und „dvchost“ leer ist, wird es „dst_host“ zugeordnet. Schließlich wird „dst_host“ mit „target.hostname“ abgeglichen.
dst_ip target.ip Wenn „dst“ nicht leer ist und „dvchost“ leer ist, wird es auf „dst_ip“ zugeordnet. Schließlich wird „dst_ip“ mit „target.ip“ abgeglichen.
dst_port target.port Wenn „dst“ nicht leer ist und „dvchost“ leer ist, wird es dst_port zugeordnet. Schließlich wird „dst_port“ dem „target.port“ zugeordnet.
Dauer network.session_duration.seconds Wenn „Dauer“ nicht leer und nicht 0 ist, wird es auf „network.session_duration.seconds“ zugeordnet.
dvchost intermediary.ip Wenn „dvchost“ nicht leer ist, wird es auf „int_ip“ zugeordnet. Schließlich wird „int_ip“ der Variablen „intermediary.ip“ zugeordnet, wenn es sich um eine gültige IP-Adresse handelt. Andernfalls wird „intermediary.hostname“ verwendet.
file_path target.file.full_path Wenn „file_path“ nicht leer ist, wird es auf „target.file.full_path“ zugeordnet.
Host principal.ip Wenn „host“ nicht leer ist, wird es „src“ zugeordnet. Schließlich wird „src“ mit „principal.ip“ abgeglichen.
http_method network.http.method Wenn „requestMethod“ nicht leer ist, wird es „http_method“ zugeordnet. Andernfalls, wenn „method“ nicht leer ist, wird es „http_method“ zugeordnet. Schließlich wird „http_method“ mit „network.http.method“ abgeglichen.
http_proxy_status_code network.http.response_code Wenn „http_response“ leer oder „0“ oder „-“ ist und „http_proxy_status_code“ nicht leer ist, wird es „network.http.response_code“ zugeordnet.
http_response network.http.response_code Wenn „http_response“ nicht leer ist und weder „0“ noch „-“ ist, wird es „network.http.response_code“ zugeordnet.
http_user_agent network.http.user_agent Wenn „http_user_agent“ nicht leer und nicht „-“ ist, wird es auf „network.http.user_agent“ zugeordnet.
in network.received_bytes Wenn „in“ nicht leer ist, wird es auf „bytes_in“ zugeordnet. Schließlich wird „bytes_in“ auf „network.received_bytes“ zugeordnet.
int_host intermediary.hostname Wenn „int_ip“ nicht leer ist und „int_host“ nicht leer ist und sich von „int_ip“ unterscheidet, wird es mit „intermediary.hostname“ abgeglichen.
int_ip intermediary.ip Wenn „dvchost“ nicht leer ist, wird es auf „int_ip“ zugeordnet. Schließlich wird „int_ip“ mit „intermediary.ip“ verknüpft, wenn es sich um eine gültige IP-Adresse handelt, andernfalls mit „intermediary.hostname“.
level target_role.name Wenn „Ebene“ nicht leer ist und „Rolle“ leer ist, wird „Ebene“ der Rolle zugeordnet. Schließlich wird „role“ mit „target_role.name“ abgeglichen.
log_level security_result.severity Wenn „severity“ den Wert „1“ hat oder „log_level“ den Wert „info“ oder „message“ den Wert „notice“ enthält, wird „security_result.severity“ auf „INFORMATIONAL“ festgelegt. Wenn „severity“ 7 ist, wird „security_result.severity“ auf HIGH gesetzt.
loginID principal.user.userid Wenn „loginID“ nicht leer ist, wird sie dem Nutzer zugeordnet. Wenn „user“ nicht leer ist und nicht „-“ lautet und auch keine „LDAP“ enthält, wird es „principal.user.userid“ zugeordnet.
Methode network.http.method Wenn „requestMethod“ nicht leer ist, wird es „http_method“ zugeordnet. Andernfalls, wenn „method“ nicht leer ist, wird es „http_method“ zugeordnet. Schließlich wird „http_method“ mit „network.http.method“ abgeglichen.
NatRuleId security_result.detection_fields.value Wenn „NatRuleId“ nicht leer ist, wird es dem Schlüssel „NatRuleId“ von „security_result.detection_fields.value“ zugeordnet.
out network.sent_bytes Wenn „out“ nicht leer ist, wird es „bytes_out“ zugeordnet. Schließlich wird „bytes_out“ zu „network.sent_bytes“ zugeordnet.
pid target.process.pid Wenn „pid“ nicht leer ist, wird sie auf „target.process.pid“ zugeordnet.
Richtlinie target_role.description Wenn „Richtlinie“ nicht leer ist, wird es der Richtlinie zugeordnet. Wenn „Richtlinie“ nicht leer und nicht „-“ ist, wird sie „target_role.description“ zugeordnet.
Richtlinie target_role.description Wenn „Richtlinie“ nicht leer ist, wird es der Richtlinie zugeordnet. Wenn „Richtlinie“ nicht leer und nicht „-“ ist, wird sie „target_role.description“ zugeordnet.
product_event metadata.product_event_type Wenn „product“ nicht leer ist, wird es „product_event“ zugeordnet. Wenn „product_event“ und „deviceFacility“ nicht leer sind, werden sie mit - zusammengeführt und „metadata.product_event_type“ zugeordnet. Andernfalls wird „product_event“ mit „metadata.product_event_type“ abgeglichen.
proxyStatus-Code network.http.response_code Wenn „http_response“ leer ist oder „0“ oder „-“ enthält und „http_proxy_status_code“ leer ist und „proxyStatus-code“ nicht leer ist, wird es „network.http.response_code“ zugeordnet.
refererUrl network.http.referral_url Wenn „referer_url“ nicht leer und nicht „-“ ist, wird es „network.http.referral_url“ zugeordnet.
requestClientApplication network.http.user_agent Wenn „requestMethod“ nicht leer ist, wird es „http_user_agent“ zugeordnet. Schließlich wird „http_user_agent“ auf „network.http.user_agent“ zugeordnet.
requestMethod network.http.method Wenn „requestMethod“ nicht leer ist, wird es „http_method“ zugeordnet. Schließlich wird „http_method“ mit „network.http.method“ abgeglichen.
Rolle target_role.name Wenn „Ebene“ nicht leer ist und „Rolle“ leer ist, wird „Ebene“ der Rolle zugeordnet. Schließlich wird „role“ mit „target_role.name“ abgeglichen.
RuleID security_result.rule_id Wenn „RuleID“ nicht leer ist, wird sie auf „security_result.rule_id“ zugeordnet.
serverStatus-code network.http.response_code Wenn „http_response“ leer ist oder „0“ oder „-“ enthält und „http_proxy_status_code“ leer ist und „proxyStatus-code“ nicht leer ist, wird es „network.http.response_code“ zugeordnet.
die Ausprägung security_result.severity Wenn „severity“ den Wert „1“ hat oder „log_level“ den Wert „info“ oder „message“ den Wert „notice“ enthält, wird „security_result.severity“ auf „INFORMATIONAL“ festgelegt. Wenn „severity“ 7 ist, wird „security_result.severity“ auf HIGH gesetzt.
spt principal.port Wenn „spt“ nicht leer ist, wird es „src_port“ zugeordnet. Schließlich wird „src_port“ mit „principal.port“ abgeglichen.
src principal.ip Wenn „src_host“ nicht leer ist, wird es „source_ip_temp“ zugeordnet. Wenn „source_ip_temp“ eine gültige IP-Adresse ist und „src“ leer ist, wird sie dieser zugeordnet. Wenn „host“ nicht leer ist, wird es „src“ zugeordnet. Schließlich wird „src“ mit „principal.ip“ abgeglichen.
src_host principal.hostname Wenn „src_host“ nicht leer ist, wird es „source_ip_temp“ zugeordnet. Wenn „source_ip_temp“ keine gültige IP-Adresse ist, wird sie „principal.hostname“ zugeordnet. Wenn „source_ip_temp“ eine gültige IP-Adresse ist und „src“ leer ist, wird sie dieser zugeordnet. Schließlich wird „src“ mit „principal.ip“ abgeglichen.
src_port principal.port Wenn „src_port“ nicht leer ist, wird es „principal.port“ zugeordnet.
Nutzer principal.user.userid Wenn „loginID“ nicht leer ist, wird sie dem Nutzer zugeordnet. Wenn „suser“ nicht leer ist, wird es „user“ zugeordnet. Wenn „user“ nicht leer ist und nicht „-“ lautet und auch keine „LDAP“ enthält, wird es „principal.user.userid“ zugeordnet.
URL target.url Wenn „url“ nicht leer ist, wird es „target.url“ zugeordnet.
Nutzer principal.user.userid Wenn „loginID“ nicht leer ist, wird sie dem Nutzer zugeordnet. Wenn „suser“ nicht leer ist, wird es „user“ zugeordnet. Andernfalls, wenn „usrName“ nicht leer ist, wird es „user“ zugeordnet. Wenn „user“ nicht leer ist und nicht „-“ lautet und auch keine „LDAP“ enthält, wird es „principal.user.userid“ zugeordnet.
usrName principal.user.userid Wenn „loginID“ nicht leer ist, wird sie dem Nutzer zugeordnet. Wenn „suser“ nicht leer ist, wird es „user“ zugeordnet. Andernfalls, wenn „usrName“ nicht leer ist, wird es „user“ zugeordnet. Wenn „user“ nicht leer ist und nicht „-“ lautet und auch keine „LDAP“ enthält, wird es „principal.user.userid“ zugeordnet.
Wann? metadata.event_timestamp Wenn „when“ nicht leer ist, wird es analysiert und metadata.event_timestamp zugeordnet.
metadata.log_type Der Wert FORCEPOINT_WEBPROXY ist in „metadata.log_type“ hartcodiert.
metadata.product_name Der Wert Forcepoint Webproxy ist in „metadata.product_name“ hartcodiert.
metadata.vendor_name Der Wert Forcepoint ist in „metadata.vendor_name“ hartcodiert.
network.application_protocol Wenn dst_port 80 ist, wird „network.application_protocol“ auf HTTP festgelegt. Wenn dst_port 443 ist, wird „network.application_protocol“ auf HTTPS festgelegt.
principal.user.group_identifiers Wenn „user“ nicht leer ist und nicht „-“ und „LDAP“ enthält, wird der OU-Teil des Nutzerstrings extrahiert und „principal.user.group_identifiers“ zugeordnet.
principal.user.user_display_name Wenn „user“ nicht leer und nicht „-“ ist und „LDAP“ enthält, wird der Teil „username“ des Nutzerstrings extrahiert und „principal.user.user_display_name“ zugeordnet.
security_result.action Wenn „action_msg“, „action“ oder „act“ nicht leer sind, wird „sec_action“ basierend auf ihren Werten auf „ALLOW“ oder „BLOCK“ gesetzt. Schließlich wird „sec_action“ auf „security_result.action“ zugeordnet.
security_result.category_details Wenn „cat“ nicht leer ist, wird es „category“ zugeordnet. Schließlich wird „category“ auf „security_result.category_details“ zugeordnet. Wenn „cs2“ nicht leer und nicht „0“ ist, wird es mit dem Präfix „Dynamic Category:“ zu „security_result.category_details“ zugeordnet.
security_result.detection_fields.key Der Wert Disposition Number ist in security_result.detection_fields.key hartcodiert, wenn „disposition“ oder „cn1“ zugeordnet wird. Der Wert NatRuleId ist bei der Zuordnung von NatRuleId hartcodiert in security_result.detection_fields.key. Der Wert Category Number ist bei der Zuordnung von „category_no“ in „security_result.detection_fields.key“ hartcodiert.
security_result.severity Wenn „severity“ den Wert „1“ hat oder „log_level“ den Wert „info“ oder „message“ den Wert „notice“ enthält, wird „security_result.severity“ auf „INFORMATIONAL“ festgelegt. Wenn „severity“ 7 ist, wird „security_result.severity“ auf HIGH gesetzt.
target_role.description Wenn „Richtlinie“ nicht leer ist, wird es dieser zugeordnet. Wenn „Richtlinie“ nicht leer und nicht „-“ ist, wird sie „target_role.description“ zugeordnet.
target_role.name Wenn „Ebene“ nicht leer ist und „Rolle“ leer ist, wird „Ebene“ der Rolle zugeordnet. Schließlich wird „role“ mit „target_role.name“ abgeglichen.
category_no security_result.detection_fields.value Wenn „category_no“ nicht leer ist, wird es dem Schlüssel „security_result.detection_fields.value“ mit dem Schlüssel „Category Number“ zugeordnet.

Änderungen

2025-01-16

Optimierung:

  • security_result.action wurde BLOCK zugeordnet, wenn s-action = TCP_DENIED.

2024-10-18

Optimierung:

  • Unterstützung für das Parsen nicht geparster CSV-Protokolle hinzugefügt.
  • Unterstützung für das Löschen ungültiger CSV-Protokolle hinzugefügt
  • host-url wurde principal.url zugeordnet.

2024-07-10

Optimierung:

  • Grok-Muster für neue Protokolle im KV-Format hinzugefügt.
  • username wurde principal.user.userid zugeordnet.
  • cs-uri wurde target.url zugeordnet.
  • cs-uri-query , time-taken , filter-category , cs-uri-path , cs-uri-extension und rs_content_type wurden additional.fields zugeordnet.
  • Wenn sc-filter-result = OBSERVED ist , setzen Sie security_result.action auf ALLOW. Ist sc-filter-result = DENIED , setzen Sie security_result.action auf BLOCK. Andernfalls setzen Sie security_result.action auf ALLOW.
  • cs-auth-group wurde principal.user_group_identifiers zugeordnet.
  • cs-method wurde network.http.method zugeordnet.
  • sc-status wurde response_code zugeordnet.
  • s-action wurde security_result.detection_fields zugeordnet.
  • srcport wurde principal.port zugeordnet.
  • dstport wurde target.port zugeordnet.
  • sc-bytes wurde network.received_bytes zugeordnet.
  • cs-bytes wurde network.sent_bytes zugeordnet.
  • cs wurde security_result.summary zugeordnet.
  • cs_referer wurde network.http.referral_url zugeordnet.
  • cs-host wurde target.hostname zugeordnet.

2024-06-10

Optimierung:

  • Unterstützung für Protokolle im CSV-Format hinzugefügt.

2023-06-12

Optimierung:

  • Das Grok-Muster wurde geändert, um fehlgeschlagene Protokolle zu parsen, in denen einige Werte als „-“ vorliegen.
  • Bedingungsüberprüfung für das Feld „http_response“ vor der Zuordnung hinzugefügt.

2022-08-11

Optimierung:

  • Grok wurde so geändert, dass CEF-Logs ohne syslog-Header geparst werden.

2022-05-16

Optimierung:

  • Zugeordnete Kategorienummer zu „security_result.detection_fields“

2022-05-05

Optimierung:

  • Zuordnung für Felder hinzugefügt: requestClientApplication zu http.user_agent, proxyStatus-code zu http.response_code, disposition und cn1 zu security_result.detection_fields.
  • Das Feld „cs2“ wurde „security_result.category_details“ zugeordnet, wenn der Wert von „cs2Label“ „DynCat“ ist.
  • Das Feld „cs2“ wurde dem Feld „security_result.detection_fields“ zugeordnet, wenn der Wert von „cs2Label“ „NatRuleId“ ist.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten