Forcepoint Web Security-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Forcepoint Web Security-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.
Forcepoint Web Security ist ein Webproxy und ein Sicherheitsgateway, das Syslog-Meldungen im CEF-Format (Common Event Format) für Webzugriff, Sicherheitsereignisse, Authentifizierung und Richtliniendurchsetzung generiert. Der Parser extrahiert Felder aus CEF- und Syslog-formatierten Logs und ordnet sie dem Unified Data Model (UDM) zu.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Windows Server 2016 oder höher oder Linux-Host mit
systemd - Netzwerkverbindung zwischen dem Bindplane-Agent und Forcepoint Web Security
- Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Administratorzugriff auf Forcepoint Security Manager oder die Appliance-Verwaltungsoberfläche
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter.
Speichern Sie die Datei sicher auf dem System, auf dem der BindPlane-Agent installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profile auf.
Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
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" /quietWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collectorDer Dienst sollte als RUNNING (Wird ausgeführt) angezeigt werden.
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.shWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sudo systemctl status observiq-otel-collectorDer Dienst sollte als aktiv (wird ausgeführt) angezeigt werden.
Zusätzliche Installationsressourcen
Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Sie können den Bindplane-Agent so konfigurieren, dass er Syslog-Nachrichten über TCP (empfohlen) oder UDP empfängt.
Konfigurationsdatei suchen
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Konfigurationsdatei bearbeiten
Ersetzen Sie den gesamten Inhalt von config.yaml durch die Konfiguration für das von Ihnen ausgewählte Protokoll:
Option A: TCP-Konfiguration (empfohlen)
receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/forcepoint_webproxy: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: FORCEPOINT_WEBPROXY raw_log_field: body service: pipelines: logs/forcepoint_tcp_to_chronicle: receivers: - tcplog exporters: - chronicle/forcepoint_webproxyOption B: UDP-Konfiguration
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/forcepoint_webproxy: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: FORCEPOINT_WEBPROXY raw_log_field: body service: pipelines: logs/forcepoint_udp_to_chronicle: receivers: - udplog exporters: - chronicle/forcepoint_webproxy
Konfigurationsparameter
Ersetzen Sie die folgenden Platzhalter:
Empfängerkonfiguration:
listen_address: IP-Adresse und Port, auf die gewartet werden soll:0.0.0.0, um alle Schnittstellen zu überwachen (empfohlen)- Port
514ist der Standard-Syslog-Port (erfordert Root unter Linux; verwenden Sie1514für Nicht-Root).
Exporter-Konfiguration:
creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Kunden-ID, die aus der Google SecOps Console kopiert wurdeendpoint: Regionale Endpunkt-URL:- USA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asien:
asia-southeast1-malachiteingestion-pa.googleapis.com - Eine vollständige Liste finden Sie unter Regionale Endpunkte.
- USA:
Konfigurationsdatei speichern
- Speichern Sie die Datei nach der Bearbeitung:
- Linux: Drücken Sie
Ctrl+O, dannEnterund dannCtrl+X. - Windows: Klicken Sie auf Datei > Speichern.
- Linux: Drücken Sie
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 observiq-otel-collectorPrüfen Sie, ob der Dienst ausgeführt wird:
sudo systemctl status observiq-otel-collectorLogs auf Fehler prüfen:
sudo journalctl -u observiq-otel-collector -f
Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agent unter Windows neu zu starten:
Eingabeaufforderung oder PowerShell als Administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorServices-Konsole:
- Drücken Sie
Win+R, geben Sieservices.mscein und drücken Sie die Eingabetaste. - Suchen Sie nach observIQ OpenTelemetry Collector.
- Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
Prüfen Sie, ob der Dienst ausgeführt wird:
sc query observiq-otel-collectorLogs auf Fehler prüfen:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Drücken Sie
Syslog-Weiterleitung in Forcepoint Web Security konfigurieren
Konfigurieren Sie Forcepoint Web Security so, dass Logs im CEF-Format (Common Event Format) an den BindPlane-Agenten weitergeleitet werden.
Forcepoint Security Manager verwenden
- Melden Sie sich mit Administratoranmeldedaten im Forcepoint Security Manager an.
- Gehen Sie zu den Einstellungen > „Logging“.
- Wählen Sie in der linken Navigationsleiste Log Servers (Protokollserver) aus.
- Klicken Sie auf Hinzufügen, um eine neue Logserverkonfiguration zu erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Server Type (Servertyp): Wählen Sie Syslog Server (Syslog-Server) oder CEF Server (CEF-Server) aus.
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
Google Security Operations Bindplane CEF. - Host: Geben Sie die IP-Adresse oder den Hostnamen des Bindplane-Agents ein.
- Port: Geben Sie die Portnummer des Bindplane-Agents ein, z. B.
514. - Protokoll: Wählen Sie das Protokoll aus, das Ihrer Bindplane-Konfiguration entspricht:
- Wählen Sie TCP aus, wenn Sie den
tcplog-Empfänger in Bindplane konfiguriert haben (empfohlen). - Wählen Sie UDP aus, wenn Sie den
udplog-Empfänger in Bindplane konfiguriert haben.
- Wählen Sie TCP aus, wenn Sie den
- Format: Wählen Sie CEF (Common Event Format) aus.
- Einrichtung: Wählen Sie Local0 oder eine andere verfügbare Einrichtung aus.
- Schweregrad: Wählen Sie Informational aus, um alle Logebenen zu erfassen.
- Wählen Sie unter Log Categories (Protokollkategorien) oder Event Types (Ereignistypen) die weiterzuleitenden Ereignisse aus:
- Web Access Logs (Transaktionsprotokolle)
- Sicherheitsereignisse (Bedrohungserkennung)
- Authentifizierungsereignisse (Nutzeranmeldung/-abmeldung)
- Systemereignisse (System- und Konfigurationsänderungen)
- Sie können auch Alle Ereignisse auswählen, um alle verfügbaren Protokolltypen weiterzuleiten.
- Optional: Konfigurieren Sie zusätzliche Einstellungen:
- Batchgröße: Auf
1für die Echtzeitweiterleitung oder höher für die Batchverarbeitung festlegen. - Nachrichtenformat: Achten Sie darauf, dass das CEF-Format ausgewählt ist.
- Nutzerinformationen einbeziehen: Aktivieren Sie diese Option, um die Nutzeridentität in Protokolle aufzunehmen.
- Batchgröße: Auf
- Klicken Sie auf Verbindung testen, um die Verbindung zum BindPlane-Agent zu prüfen.
- Klicken Sie auf Speichern, um die Konfiguration anzuwenden.
- Klicken Sie auf Bereitstellen, um die Konfiguration an alle Forcepoint Web Security-Gateways zu übertragen.
Forcepoint Web Security Appliance verwenden (direkte Konfiguration)
Wenn Sie die Konfiguration direkt auf der Appliance vornehmen:
- Melden Sie sich in der Verwaltungsoberfläche der Forcepoint Web Security Appliance an.
- Gehen Sie zu System > Log Server.
- Klicken Sie auf Hinzufügen oder Bearbeiten, um einen Protokollserver zu erstellen oder zu ändern.
- Geben Sie die folgenden Konfigurationsdetails an:
- Serveradresse: Geben Sie die IP-Adresse des Bindplane-Agents ein.
- Port: Geben Sie
514(oder Ihren benutzerdefinierten Port) ein. - Protokoll: Wählen Sie TCP oder UDP aus, damit die Bindplane-Konfiguration übereinstimmt.
- Format: Wählen Sie CEF oder Common Event Format aus.
- Einrichtung: Wählen Sie Local0 aus.
- Wählen Sie unter Log-Typen die weiterzuleitenden Logs aus:
- Zugriffslogs
- Sicherheitsprotokolle
- Administratorprotokolle
- Klicken Sie auf Übernehmen oder Speichern.
- Wenn Sie mehrere Geräte verwenden, wiederholen Sie diese Konfiguration auf jedem Gerät.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
action |
security_result.summary |
Wenn action_msg nicht leer ist, wird sie security_result.summary zugeordnet. Andernfalls wird action, sofern nicht leer, security_result.summary zugeordnet. Andernfalls wird act, sofern 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, sofern nicht leer, security_result.summary zugeordnet. Andernfalls wird act, sofern nicht leer, security_result.summary zugeordnet. |
app |
target.application |
Wenn destinationServiceName nicht leer ist, wird sie app_name zugeordnet. Andernfalls wird app, wenn es nicht leer ist und nicht „http“ oder „HTTP“ enthält, app_name zugeordnet. Schließlich wird app_name target.application zugeordnet. |
bytes_in |
network.received_bytes |
Wenn in nicht leer ist, wird sie bytes_in zugeordnet. Schließlich wird bytes_in network.received_bytes zugeordnet. |
bytes_out |
network.sent_bytes |
Wenn out nicht leer ist, wird sie bytes_out zugeordnet. Schließlich wird bytes_out network.sent_bytes zugeordnet. |
cat |
security_result.category_details |
Wenn cat nicht leer ist, wird sie category zugeordnet. Schließlich wird category security_result.category_details zugeordnet. |
category_no |
security_result.detection_fields.value |
Wenn category_no nicht leer ist, wird es mit dem Schlüssel Category Number security_result.detection_fields.value 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 sie 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: auf security_result.category_details abgebildet. |
cs3 |
target.file.mime_type |
cs3 wird target.file.mime_type zugeordnet. |
description |
metadata.description |
Wenn description nicht leer ist, wird sie metadata.description zugeordnet. |
destinationServiceName |
target.application |
Wenn destinationServiceName nicht leer ist, wird sie 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 auf metadata.product_event_type abgebildet. |
disposition |
security_result.detection_fields.value |
Wenn disposition nicht leer ist, wird es mit dem Schlüssel Disposition Number security_result.detection_fields.value zugeordnet. |
dst |
target.ip |
Wenn dst nicht leer und dvchost leer ist, wird dst 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 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 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 dst_port zugeordnet. Schließlich wird dst_port target.port zugeordnet. |
duration |
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 sie int_ip zugeordnet. Schließlich wird int_ip intermediary.ip zugeordnet, wenn es sich um eine gültige IP-Adresse handelt. Andernfalls wird es intermediary.hostname zugeordnet. |
file_path |
target.file.full_path |
Wenn file_path nicht leer ist, wird sie target.file.full_path zugeordnet. |
host |
principal.ip |
Wenn host nicht leer ist, wird sie src zugeordnet. Schließlich wird src principal.ip zugeordnet. |
http_method |
network.http.method |
Wenn requestMethod nicht leer ist, wird sie http_method zugeordnet. Andernfalls wird method, sofern 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 sie 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 sie int_ip zugeordnet. Schließlich wird int_ip intermediary.ip zugeordnet, wenn es sich um eine gültige IP-Adresse handelt. Andernfalls wird es intermediary.hostname zugeordnet. |
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 severity 7 ist, wird security_result.severity auf HIGH gesetzt. |
loginID |
principal.user.userid |
Wenn loginID nicht leer ist, wird sie user zugeordnet. Wenn user nicht leer und nicht - ist und LDAP nicht enthält, wird es principal.user.userid zugeordnet. |
method |
network.http.method |
Wenn requestMethod nicht leer ist, wird sie http_method zugeordnet. Andernfalls wird method, sofern 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 es mit dem Schlüssel NatRuleId security_result.detection_fields.value zugeordnet. |
out |
network.sent_bytes |
Wenn out nicht leer ist, wird sie bytes_out zugeordnet. Schließlich wird bytes_out network.sent_bytes zugeordnet. |
pid |
target.process.pid |
Wenn pid nicht leer ist, wird sie target.process.pid zugeordnet. |
policy |
target_role.description |
Wenn Policy nicht leer ist, wird sie policy zugeordnet. Wenn policy nicht leer und nicht - ist, wird es target_role.description zugeordnet. |
Policy |
target_role.description |
Wenn Policy nicht leer ist, wird sie policy zugeordnet. Wenn policy nicht leer und nicht - ist, wird es target_role.description zugeordnet. |
product_event |
metadata.product_event_type |
Wenn product nicht leer ist, wird sie 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 auf metadata.product_event_type abgebildet. |
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 es 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 sie 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 sie http_method zugeordnet. Schließlich wird http_method network.http.method zugeordnet. |
role |
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 es network.http.response_code zugeordnet. |
severity |
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 severity 7 ist, wird security_result.severity auf HIGH gesetzt. |
spt |
principal.port |
Wenn spt nicht leer ist, wird sie src_port zugeordnet. Schließlich wird src_port principal.port zugeordnet. |
src |
principal.ip |
Wenn src_host nicht leer ist, wird sie source_ip_temp zugeordnet. Wenn source_ip_temp eine gültige IP-Adresse und src leer ist, wird sie src zugeordnet. Wenn host nicht leer ist, wird sie src zugeordnet. Schließlich wird src principal.ip zugeordnet. |
src_host |
principal.hostname |
Wenn src_host nicht leer ist, wird sie 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 sie 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 user zugeordnet. Wenn suser nicht leer ist, wird sie user zugeordnet. Wenn user nicht leer und nicht - ist und LDAP nicht enthält, wird es principal.user.userid zugeordnet. |
url |
target.url |
Wenn url nicht leer ist, wird sie target.url zugeordnet. |
user |
principal.user.userid |
Wenn loginID nicht leer ist, wird sie user zugeordnet. Wenn suser nicht leer ist, wird sie user zugeordnet. Andernfalls wird usrName, sofern nicht leer, user zugeordnet. Wenn user nicht leer und nicht - ist und LDAP nicht enthält, wird es principal.user.userid zugeordnet. |
usrName |
principal.user.userid |
Wenn loginID nicht leer ist, wird sie user zugeordnet. Wenn suser nicht leer ist, wird sie user zugeordnet. Andernfalls wird usrName, sofern nicht leer, user zugeordnet. Wenn user nicht leer und nicht - ist und LDAP nicht enthält, wird es principal.user.userid zugeordnet. |
when |
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 gesetzt. Wenn dst_port 443 ist, wird network.application_protocol auf HTTPS gesetzt. |
| – | principal.user.group_identifiers |
Wenn user nicht leer und nicht - ist 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 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.detection_fields.key |
Der Wert Disposition Number ist in security_result.detection_fields.key fest codiert, wenn disposition oder cn1 zugeordnet wird. Der Wert NatRuleId ist beim Zuordnen von NatRuleId in security_result.detection_fields.key hartcodiert. Der Wert Category Number ist beim Zuordnen von category_no in security_result.detection_fields.key hartcodiert. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten