Symantec CloudSOC CASB-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Symantec CloudSOC-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert Logs aus Syslog oder JSON-formatierten Nachrichten. Dabei werden mehrere wichtige Vorgänge ausgeführt: Das Feld „message“ wird geparst, die Nachricht wird bei Bedarf in JSON konvertiert, Felder werden extrahiert, sie werden dem Unified Data Model (UDM) zugeordnet und das Ereignis wird mit zusätzlichem Kontext wie Zeitstempeln und Details zu Sicherheitsergebnissen angereichert. Der Parser verarbeitet auch verschiedene Logformate und führt basierend auf dem Feld activity_type
bestimmte Aktionen aus, um das Ereignis richtig zu kategorisieren.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Windows 2016 oder höher oder ein Linux-Host mit
systemd
- Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
- Privilegierter Zugriff auf Symantec CloudSOC
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 im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Rufen Sie die Konfigurationsdatei auf:
- 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: 'SYMANTEC_CASB' 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 Authentifizierungsdatei für die Google SecOps-Aufnahme 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
Syslog in Symantec CASB konfigurieren
- Melden Sie sich beim Symantec CloudSOC-Host an.
Führen Sie den folgenden Befehl aus, um herauszufinden, welchen Logger das System verwendet:
ls –d /etc/*syslog*
Rufen Sie den entsprechenden Abschnitt auf, je nach Antwort auf den vorherigen Befehl:
- syslog.conf: Legacy-Syslog.
- syslog-ng.conf: Syslog-ng.
Alte Syslog-Konfiguration
Öffnen Sie die Datei
syslogd
, die sich normalerweise im Verzeichnis/etc/default
befindet, mit dem Editorvi
.vi /etc/default/syslogd
Der
SYSLOGD
-Wert muss das Flag-r
enthalten.SYSLOGD="-r"
Speichern Sie die Datei und beenden Sie den Editor:
- Wechseln Sie in den Befehlsmodus, indem Sie die Esc-Taste drücken.
- Drücken Sie
:
(Doppelpunkt), um die Eingabeaufforderungsleiste zu öffnen. - Geben Sie
wq
nach dem Doppelpunkt ein und drücken Sie die Eingabetaste.
Öffnen Sie die Datei
services
, die sich normalerweise im Verzeichnis/etc
befindet, mit dem Editorvi
.vi /etc/services
Bearbeiten Sie den Portwert für den Syslog-Dienst:
syslog 514/udp
Speichern Sie die Datei und beenden Sie den Editor:
- Wechseln Sie in den Befehlsmodus, indem Sie die Esc-Taste drücken.
- Drücken Sie
:
(Doppelpunkt), um die Eingabeaufforderungsleiste zu öffnen. - Geben Sie
wq
nach dem Doppelpunkt ein und drücken Sie die Eingabetaste.
Öffnen Sie die Datei
syslog.conf
, die sich normalerweise im Verzeichnis/etc
befindet, mit dem Editorvi
.vi /etc/syslog.conf
Aktualisieren Sie die Konfiguration, um alle Logs an Google SecOps weiterzuleiten.
*.* @bindplane_agent_host
Speichern Sie die Datei und beenden Sie den Editor:
- Wechseln Sie in den Befehlsmodus, indem Sie die Esc-Taste drücken.
- Drücken Sie
:
(Doppelpunkt), um die Eingabeaufforderungsleiste zu öffnen. - Geben Sie
wq
nach dem Doppelpunkt ein und drücken Sie die Eingabetaste.
Öffnen Sie die Datei
hosts
, die sich normalerweise im Verzeichnis/etc
befindet, mit dem Editorvi
.vi /etc/hosts
Erstellen Sie einen lokalen DNS-Eintrag für
bindplane_agent_host
.0.0.0.0 bindplane_agent_host
Speichern Sie die Datei und beenden Sie den Editor:
- Wechseln Sie in den Befehlsmodus, indem Sie die Esc-Taste drücken.
- Drücken Sie
:
(Doppelpunkt), um die Eingabeaufforderungsleiste zu öffnen. - Geben Sie
wq
nach dem Doppelpunkt ein und drücken Sie die Eingabetaste.
Starten Sie den Syslog-Daemon-Dienst neu.
Syslog-ng-Konfiguration
Öffnen Sie die Datei
syslog-ng.conf
, die sich normalerweise im Verzeichnis/etc
befindet, mit dem Editorvi
.vi /etc/syslog-ng.conf
Fügen Sie am Ende der Datei den folgenden Code ein:
destination d____ { udp("bindplane_agent_host" port(514));}; log {source(s_src); destination(d____);};
Öffnen Sie die Datei
hosts
, die sich normalerweise im Verzeichnis/etc
befindet, mit dem Editorvi
.vi /etc/hosts
Erstellen Sie einen lokalen DNS-Eintrag für
bindplane_agent_host
.0.0.0.0 bindplane_agent_host
Speichern Sie die Datei und beenden Sie den Editor:
- Wechseln Sie in den Befehlsmodus, indem Sie die Esc-Taste drücken.
- Drücken Sie
:
(Doppelpunkt), um die Eingabeaufforderungsleiste zu öffnen. - Geben Sie
wq
nach dem Doppelpunkt ein und drücken Sie die Eingabetaste.
Starten Sie den syslog-ng-Daemon-Dienst neu.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
_domain |
target.hostname |
Der Wert des Felds _domain |
_domain |
target.asset.hostname |
Der Wert des Felds _domain |
_id |
metadata.product_log_id |
Der Wert des Felds _id |
actions_taken |
security_result.detection_fields[].value |
Der Wert des Felds actions_taken . Der Schlüssel wird dynamisch als Action_ + Index generiert. |
activity_type |
metadata.product_event_type |
Der Wert des Felds activity_type , wenn product_data.activity_type leer ist, oder der Wert von product_data.activity_type , wenn es nicht leer ist. |
collector_device_ip |
principal.ip |
Der Wert des Felds collector_device_ip , sofern nicht Unknown IP . |
collector_device_ip |
principal.asset.ip |
Der Wert des Felds collector_device_ip , sofern nicht Unknown IP . |
collector_device_name |
principal.hostname |
Der Wert des Felds collector_device_name . |
collector_device_name |
principal.asset.hostname |
Der Wert des Felds collector_device_name . |
content_checks.dlp.raw_response.contentdetails[].contentBlockId |
security_result.detection_fields[].value |
Der Wert von content_checks.dlp.raw_response.contentdetails[].contentBlockId . Der Schlüssel wird dynamisch als contentBlockId_ + Index generiert. |
content_checks.dlp.raw_response.contentdetails[].topLevelFileType |
security_result.detection_fields[].value |
Der Wert von content_checks.dlp.raw_response.contentdetails[].topLevelFileType . Der Schlüssel wird dynamisch als topLevelFileType_ + Index generiert. |
content_checks.dlp.raw_response.requestid |
security_result.detection_fields[].value |
Der Wert von content_checks.dlp.raw_response.requestid . Der Schlüssel ist Request ID . |
content_checks.dlp.raw_response.responseaction |
security_result.detection_fields[].value |
Der Wert von content_checks.dlp.raw_response.responseaction . Der Schlüssel ist Response Action . |
content_checks.dlp.raw_response.violation[].name |
security_result.detection_fields[].value |
Der Wert von content_checks.dlp.raw_response.violation[].name . Der Schlüssel wird dynamisch als Violation_Policy_Name_ + Index generiert. |
content_checks.dlp.raw_response.violation[].policyId |
security_result.detection_fields[].value |
Der Wert von content_checks.dlp.raw_response.violation[].policyId . Der Schlüssel wird dynamisch als Violation_Policy_ID_ + Index generiert. |
content_checks.dlp.updated_timestamp |
additional.fields[].value.string_value |
Der Wert von content_checks.dlp.updated_timestamp . Der Schlüssel ist Updated TimeStamp . |
content_checks.filename |
target.file.full_path |
Der Wert von content_checks.filename . |
content_checks.mimetype |
target.file.mime_type |
Der Wert von content_checks.mimetype . |
content_checks.risktype_list[] |
security_result.detection_fields[].value |
Der Wert von content_checks.risktype_list[] . Der Schlüssel wird dynamisch als RiskType_ + Index generiert. |
content_checks.vba_macros.expressions[].values[].key |
security_result.detection_fields[].key |
Der Wert von content_checks.vba_macros.expressions[].values[].key , verkettet mit Indexen. |
content_checks.vba_macros.expressions[].values[].value |
security_result.detection_fields[].value |
Der Wert von content_checks.vba_macros.expressions[].values[].value . |
content_checks.vk_content_iq_violations[] |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_content_iq_violations[] . Der Schlüssel wird dynamisch als content_violation_ + Index generiert. |
content_checks.vk_dlp_policy_violations[] |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_dlp_policy_violations[] . Der Schlüssel wird dynamisch als dlp_policy_violation_ + Index generiert. |
content_checks.vk_encryption |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_encryption . Der Schlüssel ist vk_encryption . |
content_checks.vk_glba |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_glba . Der Schlüssel ist vk_glba . |
content_checks.vk_hipaa |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_hipaa . Der Schlüssel ist vk_hipaa . |
content_checks.vk_pci |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_pci . Der Schlüssel ist vk_pci . |
content_checks.vk_pii |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_pii . Der Schlüssel ist vk_pii . |
content_checks.vk_source_code |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_source_code . Der Schlüssel ist vk_source_code . |
content_checks.vk_vba_macros |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_vba_macros . Der Schlüssel ist vk_vba_macros . |
content_checks.vk_virus |
security_result.detection_fields[].value |
Der Wert von content_checks.vk_virus . Der Schlüssel ist vk_virus . |
content_checks.violations |
security_result.detection_fields[].value |
Der Wert von content_checks.violations . Der Schlüssel ist violations . |
created_timestamp |
additional.fields[].value.string_value |
Der Wert von created_timestamp . Der Schlüssel ist Created TimeStamp . |
date |
metadata.event_timestamp.seconds |
Aus dem Feld date extrahierte Epochensekunden. |
device_ip |
target.ip |
Der Wert des Felds device_ip , sofern nicht Unknown IP . |
device_ip |
target.asset.ip |
Der Wert des Felds device_ip , sofern nicht Unknown IP . |
file_size |
target.file.size |
Der Wert von file_size oder product_data.file_size , wenn file_size leer ist. In eine vorzeichenlose Ganzzahl konvertiert. |
file_url |
target.file.full_path |
Der Wert von product_data.file_url . |
group_name |
target.group.group_display_name |
Der Anzeigename, der aus dem Feld group_name extrahiert wurde. |
hosts[] |
principal.ip |
Die durch Kommas getrennten Werte des Felds hosts . |
inserted_timestamp |
additional.fields[].value.string_value |
Der Wert von inserted_timestamp . Der Schlüssel ist Inserted TimeStamp . |
instance |
principal.hostname |
Der erste Wert des Felds instance , wenn es sich um ein Array handelt, oder der Wert des Felds instance , wenn es sich um einen String handelt. |
instance |
principal.asset.hostname |
Der erste Wert des Felds instance , wenn es sich um ein Array handelt, oder der Wert des Felds instance , wenn es sich um einen String handelt. |
ioi_code |
security_result.summary |
Der Wert des Felds ioi_code . |
_latency |
security_result.detection_fields[].value |
Der Wert des Felds _latency . Der Schlüssel ist Latency . |
locations |
security_result.detection_fields[].value |
Der Wert des Felds locations . Der Schlüssel ist Locations . |
log_name |
intermediary.asset.asset_id |
Die aus dem Feld log_name extrahierte Log-ID mit dem Präfix logid: . |
mailbox_owner |
target.user.userid |
Der Wert von product_data.mailbox owner . |
metadata.log_type |
metadata.log_type |
Hartcodiert auf SYMANTEC_CASB . |
metadata.product_name |
metadata.product_name |
Hartcodiert auf SYMANTEC_CASB . |
metadata.vendor_name |
metadata.vendor_name |
Hartcodiert auf SYMANTEC . |
msg |
metadata.description |
Der Wert des Felds msg oder des Felds message , falls msg nicht vorhanden ist. |
name |
security_result.detection_fields[].value |
Der Wert des Felds name . Der Schlüssel ist Name . |
object_name |
security_result.detection_fields[].value |
Der Wert des Felds object_name . Der Schlüssel ist Object Name . |
object_type |
target.resource.name |
Der Wert des Felds object_type . |
org_unit |
security_result.detection_fields[].value |
Der Wert des Felds org_unit . Der Schlüssel ist org_unit ID . |
policy_action |
security_result.action_details |
Der Wert des Felds policy_action . |
policy_type |
security_result.detection_fields[].value |
Der Wert des Felds policy_type . Der Schlüssel ist policy_type . |
policy_violated |
security_result.detection_fields[].value |
Der Wert des Felds policy_violated . Der Schlüssel ist policy_violated . |
product_data._domain |
target.hostname |
Der Wert von product_data._domain . |
product_data._domain |
target.asset.hostname |
Der Wert von product_data._domain . |
product_data.activity_type |
metadata.product_event_type |
Der Wert von product_data.activity_type . |
product_data.file url |
target.file.full_path |
Der Wert von product_data.file url . |
product_data.file_size |
target.file.size |
Der Wert von product_data.file_size . |
product_data.group |
target.group.group_display_name |
Der Wert von product_data.group . |
product_data.location |
principal.location.country_or_region |
Der Wert von product_data.location . |
product_data.logon error |
security_result.summary |
Der Wert von product_data.logon error . |
product_data.mailbox owner |
target.user.userid |
Der Wert von product_data.mailbox owner . |
product_data.name |
target.file.full_path |
Der Wert von product_data.name . |
product_data.object_name |
target.file.full_path |
Der Wert von product_data.object_name . |
product_data.originatingserver product_data.service |
target.application |
Der Wert von product_data.service . |
product_data.site url |
target.url |
Der Wert von product_data.site url . |
product_data.target |
target.user.userid |
Der Wert von product_data.target . |
product_data.useragent |
network.http.user_agent |
Der Wert von product_data.useragent . |
product_name |
intermediary.application |
Der Wert des Felds product_name . |
product_uid |
metadata.product_name |
Der Wert des Felds product_uid . |
responsible_logs |
additional.fields[].value.string_value |
Der Wert des Felds responsible_logs . Der Schlüssel ist responsible_logs . |
resource_id |
target.resource.product_object_id |
Der Wert des Felds resource_id . |
risks |
security_result.detection_fields[].value |
Der Wert des Felds risks . Der Schlüssel ist Risks . |
security_result.action |
security_result.action |
Abgeleitet von product_data.logon error . Wird auf BLOCK gesetzt, wenn product_data.logon error gleich BlockedByConditionalAccess ist. |
security_result.severity |
security_result.severity |
Der in Großbuchstaben geschriebene Wert des Felds severity , sofern es sich um eine der unterstützten Schweregrade handelt. |
security_result.severity_details |
security_result.severity_details |
Der Wert des Felds severity , wenn er nicht einer der unterstützten Schweregrade entspricht. |
security_result.summary |
security_result.summary |
Der Wert des Felds ioi_code oder product_data.logon error , wenn ioi_code nicht vorhanden ist. |
service |
target.application |
Der Wert des Felds service , wenn product_data.service leer ist. |
site_url |
target.url |
Der Wert von product_data.site url . |
source |
principal.resource.attribute.labels[].value |
Der Wert des Felds source . Der Schlüssel ist Source . |
sub_feature |
additional.fields[].value.string_value |
Der Wert des Felds sub_feature . Der Schlüssel ist Sub Feature . |
target.application |
target.application |
Abgeleitet basierend auf product_data.activity_type und dem Vorhandensein von Hauptkonto und Ziel. |
target.resource.name |
target.resource.name |
Abgeleitet basierend auf product_data.activity_type und dem Vorhandensein von Hauptkonto und Ziel. |
threat_score |
security_result.detection_fields[].value |
Der Wert des Felds threat_score . Der Schlüssel ist Threat Score . |
transaction_id |
security_result.detection_fields[].value |
Der Wert des Felds transaction_id . Der Schlüssel ist Transaction ID . |
updated_timestamp |
additional.fields[].value.string_value |
Der Wert von updated_timestamp oder content_checks.dlp.updated_timestamp , wenn updated_timestamp leer ist. Der Schlüssel ist Updated TimeStamp . |
user |
principal.user.userid |
Der Wert des Felds user . |
user_email |
target.user.userid |
Der Wert des Felds user_email . |
user_mail |
target.user.userid |
Der Wert des Felds user_mail , der aus dem Feld msg extrahiert wurde. |
user_name |
principal.user.user_display_name |
Der Wert des Felds user_name . |
user_uid |
principal.user.userid oder target.user.userid |
Der Wert des Felds user_uid . Wird principal.user.userid zugeordnet, wenn product_data.activity_type nicht InvalidLogin oder Login ist, andernfalls target.user.userid . |
uuid |
intermediary.asset.product_object_id |
Der Wert des Felds uuid . |
version |
metadata.product_version |
Der Wert des Felds version . |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten