Forcepoint Proxy-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Forcepoint Proxy-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser bereinigt zuerst die eingehende Log-Nachricht und extrahiert Schlüssel/Wert-Paare mithilfe von Grok-Mustern und regulären Ausdrücken. Anschließend werden die extrahierten Felder anhand bestimmter Bedingungen und Feldwerte dem Unified Data Model (UDM) zugeordnet. Dabei werden verschiedene Logformate und Grenzfälle berücksichtigt, um eine einheitliche Darstellung der Daten zu gewährleisten.
Hinweise
- Prüfen Sie, ob Sie eine Google Security Operations-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
- Prüfen Sie, ob Sie privilegierten Zugriff auf Forcepoint Proxy haben.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Fenstereinbau
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
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
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
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
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Greifen Sie auf die Konfigurationsdatei zu:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Forcepoint Web Security Suite konfigurieren
- Melden Sie sich in der Forcepoint-Konsole an.
- Gehen Sie zu Web> Einstellungen> Allgemein.
- Klicken Sie auf SIEM-Integration.
- Klicken Sie das Kästchen SIEM-Integration für diesen Richtlinienserver aktivieren an.
- 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 für den Bindplane-Agent konfiguriert ist, z. B.
514
. - Transportprotokoll: Wählen Sie das Protokoll UDP aus.
- SIEM-Format: Wählen Sie Syslog/CEF (Arcsight) aus.
- Klicken Sie auf OK.
- Klicken Sie auf Speichern und bereitstellen.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
Aktion | security_result.summary | Wenn action_msg nicht leer ist, wird sie security_result.summary zugeordnet. Andernfalls wird „action“ (falls nicht leer) „security_result.summary“ zugeordnet. Andernfalls wird „act“ (falls nicht leer) „security_result.summary“ zugeordnet. |
action_msg | security_result.summary | Wenn action_msg nicht leer ist, wird sie security_result.summary zugeordnet. Andernfalls wird „action“ (falls nicht leer) „security_result.summary“ zugeordnet. Andernfalls wird „act“ (falls nicht leer) „security_result.summary“ zugeordnet. |
App | target.application | Wenn „destinationServiceName“ nicht leer ist, wird es „app_name“ zugeordnet. Andernfalls wird „app“ (wenn nicht leer und ohne http oder HTTP ) „app_name“ zugeordnet. Schließlich wird „app_name“ „target.application“ zugeordnet. |
bytes_in | network.received_bytes | Wenn „in“ nicht leer ist, wird es „bytes_in“ zugeordnet. Schließlich wird „bytes_in“ „network.received_bytes“ zugeordnet. |
bytes_out | network.sent_bytes | Wenn „out“ nicht leer ist, wird es „bytes_out“ zugeordnet. Schließlich wird „bytes_out“ „network.sent_bytes“ zugeordnet. |
Katze | security_result.category_details | Wenn „cat“ nicht leer ist, wird es „category“ zugeordnet. Schließlich wird die Kategorie security_result.category_details zugeordnet. |
cn1 | security_result.detection_fields.value | Wenn „cn1“ nicht leer ist, wird es „security_result.detection_fields.value“ mit dem Schlüssel Disposition Number zugeordnet. |
ContentType | target.file.mime_type | Wenn „contentType“ nicht leer ist, wird es „ContentType“ zugeordnet. Schließlich wird ContentType target.file.mime_type zugeordnet. |
cs1 | target_role.description | cs1 wird 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: security_result.category_details zugeordnet. |
cs3 | target.file.mime_type | cs3 wird target.file.mime_type zugeordnet. |
description | metadata.description | Wenn die Beschreibung nicht leer ist, wird sie metadata.description zugeordnet. |
destinationServiceName | target.application | Wenn „destinationServiceName“ nicht leer ist, wird es „app_name“ zugeordnet. Schließlich wird „app_name“ „target.application“ zugeordnet. |
deviceFacility | metadata.product_event_type | Wenn „product_event“ und „deviceFacility“ nicht leer sind, werden sie mit - verkettet und „metadata.product_event_type“ zugeordnet. Andernfalls wird „product_event“ „metadata.product_event_type“ zugeordnet. |
disposition | security_result.detection_fields.value | Wenn „disposition“ nicht leer ist, wird es „security_result.detection_fields.value“ mit dem Schlüssel Disposition Number zugeordnet. |
dst | target.ip | Wenn „dst“ nicht leer und „dvchost“ leer ist, wird „dst_ip“ zugeordnet. Schließlich wird „dst_ip“ „target.ip“ zugeordnet. |
dst_host | target.hostname | Wenn „dst“ nicht leer und „dvchost“ leer ist, wird „dst_host“ zugeordnet. Schließlich wird „dst_host“ „target.hostname“ zugeordnet. |
dst_ip | target.ip | Wenn „dst“ nicht leer und „dvchost“ leer ist, wird „dst_ip“ zugeordnet. Schließlich wird „dst_ip“ „target.ip“ zugeordnet. |
dst_port | target.port | Wenn „dst“ nicht leer und „dvchost“ leer ist, wird „dst_port“ zugeordnet. Schließlich wird „dst_port“ „target.port“ zugeordnet. |
Dauer | network.session_duration.seconds | Wenn „duration“ nicht leer und nicht 0 ist, wird es network.session_duration.seconds zugeordnet. |
dvchost | intermediary.ip | Wenn „dvchost“ nicht leer ist, wird es „int_ip“ zugeordnet. Schließlich wird „int_ip“ der Variablen „intermediary.ip“ zugewiesen, sofern es sich um eine gültige IP-Adresse handelt. Andernfalls wird es „intermediary.hostname“ zugewiesen. |
file_path | target.file.full_path | Wenn file_path nicht leer ist, wird er target.file.full_path zugeordnet. |
Host | principal.ip | Wenn „host“ nicht leer ist, wird es „src“ zugeordnet. Schließlich wird „src“ „principal.ip“ zugeordnet. |
http_method | network.http.method | Wenn „requestMethod“ nicht leer ist, wird es „http_method“ zugeordnet. Andernfalls wird „method“ (falls nicht leer) „http_method“ zugeordnet. Schließlich wird „http_method“ „network.http.method“ zugeordnet. |
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, nicht 0 und nicht - 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 network.http.user_agent zugeordnet. |
in | network.received_bytes | Wenn „in“ nicht leer ist, wird es „bytes_in“ zugeordnet. Schließlich wird „bytes_in“ „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 „intermediary.hostname“ zugeordnet. |
int_ip | intermediary.ip | Wenn „dvchost“ nicht leer ist, wird es „int_ip“ zugeordnet. Schließlich wird „int_ip“ der Variablen „intermediary.ip“ zugewiesen, sofern es sich um eine gültige IP-Adresse handelt. Andernfalls wird es „intermediary.hostname“ zugewiesen. |
level | target_role.name | Wenn „level“ nicht leer und „role“ leer ist, wird „level“ „role“ zugeordnet. Schließlich wird „role“ „target_role.name“ zugeordnet. |
log_level | security_result.severity | Wenn „severity“ 1 ist oder „log_level“ info enthält oder „message“ notice enthält, wird „security_result.severity“ auf INFORMATIONAL festgelegt. Wenn der Schweregrad 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 und nicht - ist und nicht LDAP enthält, wird es „principal.user.userid“ zugeordnet. |
Methode | network.http.method | Wenn „requestMethod“ nicht leer ist, wird es „http_method“ zugeordnet. Andernfalls wird „method“ (falls nicht leer) „http_method“ zugeordnet. Schließlich wird „http_method“ „network.http.method“ zugeordnet. |
NatRuleId | security_result.detection_fields.value | Wenn „NatRuleId“ nicht leer ist, wird sie mit dem Schlüssel NatRuleId dem Feld „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“ „network.sent_bytes“ zugeordnet. |
pid | target.process.pid | Wenn „pid“ nicht leer ist, wird es „target.process.pid“ zugeordnet. |
Richtlinie | target_role.description | Wenn „Policy“ nicht leer ist, wird sie „policy“ zugeordnet. Wenn die Richtlinie nicht leer und nicht - ist, wird sie target_role.description zugeordnet. |
Richtlinie | target_role.description | Wenn „Policy“ nicht leer ist, wird sie „policy“ zugeordnet. Wenn die 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 - verkettet und „metadata.product_event_type“ zugeordnet. Andernfalls wird „product_event“ „metadata.product_event_type“ zugeordnet. |
proxyStatus-Code | network.http.response_code | Wenn http_response leer oder 0 oder - ist und http_proxy_status_code leer und proxyStatus-Code nicht leer ist, wird er network.http.response_code zugeordnet. |
refererUrl | network.http.referral_url | Wenn „refererUrl“ 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“ „network.http.user_agent“ zugeordnet. |
requestMethod | network.http.method | Wenn „requestMethod“ nicht leer ist, wird es „http_method“ zugeordnet. Schließlich wird „http_method“ „network.http.method“ zugeordnet. |
Rolle | target_role.name | Wenn „level“ nicht leer und „role“ leer ist, wird „level“ „role“ zugeordnet. Schließlich wird „role“ „target_role.name“ zugeordnet. |
RuleID | security_result.rule_id | Wenn RuleID nicht leer ist, wird sie security_result.rule_id zugeordnet. |
serverStatus-Code | network.http.response_code | Wenn http_response leer oder 0 oder - ist und http_proxy_status_code leer und proxyStatus-Code nicht leer ist, wird er network.http.response_code zugeordnet. |
die Ausprägung | security_result.severity | Wenn „severity“ 1 ist oder „log_level“ info enthält oder „message“ notice enthält, wird „security_result.severity“ auf INFORMATIONAL festgelegt. Wenn der Schweregrad 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“ „principal.port“ zugeordnet. |
src | principal.ip | Wenn „src_host“ nicht leer ist, wird es „source_ip_temp“ zugeordnet. Wenn „source_ip_temp“ eine gültige IP-Adresse und „src“ leer ist, wird „source_ip_temp“ „src“ zugeordnet. Wenn „host“ nicht leer ist, wird es „src“ zugeordnet. Schließlich wird „src“ „principal.ip“ zugeordnet. |
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 und „src“ leer ist, wird „source_ip_temp“ „src“ zugeordnet. Schließlich wird „src“ „principal.ip“ zugeordnet. |
src_port | principal.port | Wenn src_port nicht leer ist, wird sie principal.port zugeordnet. |
suser | 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 und nicht - ist und nicht 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 wird usrName, sofern nicht leer, user zugeordnet. Wenn „user“ nicht leer und nicht - ist und nicht 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 wird usrName, sofern nicht leer, user zugeordnet. Wenn „user“ nicht leer und nicht - ist und nicht LDAP enthält, wird es „principal.user.userid“ zugeordnet. |
Wann? | metadata.event_timestamp | Wenn „when“ nicht leer ist, wird es geparst 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 und nicht - ist und LDAP enthält, wird der OU-Teil des Nutzer-Strings 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 Nutzername aus dem Nutzerstring 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“ „security_result.action“ zugeordnet. |
|
security_result.category_details | Wenn „cat“ nicht leer ist, wird es „category“ zugeordnet. Schließlich wird die Kategorie security_result.category_details zugeordnet. Wenn „cs2“ nicht leer und nicht 0 ist, wird es mit dem Präfix Dynamic Category: security_result.category_details zugeordnet. |
|
security_result.detection_fields.key | Der Wert Disposition Number ist in security_result.detection_fields.key hartcodiert, wenn die Disposition oder cn1 zugeordnet wird. Der Wert NatRuleId ist beim Zuordnen von NatRuleId in security_result.detection_fields.key fest codiert. Der Wert Category Number ist beim Zuordnen von category_no in security_result.detection_fields.key hartcodiert. |
|
security_result.severity | Wenn „severity“ 1 ist oder „log_level“ info enthält oder „message“ notice enthält, wird „security_result.severity“ auf INFORMATIONAL festgelegt. Wenn der Schweregrad 7 ist, wird security_result.severity auf HIGH gesetzt. |
|
target_role.description | Wenn „Policy“ nicht leer ist, wird sie „policy“ zugeordnet. Wenn die Richtlinie nicht leer und nicht - ist, wird sie target_role.description zugeordnet. |
|
target_role.name | Wenn „level“ nicht leer und „role“ leer ist, wird „level“ „role“ zugeordnet. Schließlich wird „role“ „target_role.name“ zugeordnet. | |
category_no | security_result.detection_fields.value | Wenn „category_no“ nicht leer ist, wird es „security_result.detection_fields.value“ mit dem Schlüssel Category Number zugeordnet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten