CrowdStrike Falcon-Streamlogs erfassen
In diesem Dokument wird beschrieben, wie Sie CrowdStrike Falcon Stream-Logs mit Bindplane erfassen. Der Parser extrahiert Schlüssel/Wert-Paare und ordnet sie dem Unified Data Model (UDM) zu. Dabei werden verschiedene Trennzeichen verarbeitet und die Daten werden mit zusätzlichem Kontext wie Schweregrad und Ereignistypen angereichert. Außerdem werden bestimmte Transformationen für bestimmte Ereignistypen und Felder ausgeführt, z. B. für Nutzeranmeldungen und Sicherheitsergebnisse.
Vorbereitung
- 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.
- Sie benötigen privilegierten Zugriff auf die CrowdStrike Falcon-Konsole.
- API-Anmeldedaten für Falcon Stream abrufen (Client-ID und Clientschlüssel).
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
Windows-Installation
- Ö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: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:54525" 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: SYSLOG namespace: cs_stream raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog 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
CrowdStrike-API-Schlüssel konfigurieren und abrufen
- Melden Sie sich mit einem privilegierten Konto bei CrowdStrike Falcon an.
- Gehen Sie zum Menü > Support.
- Klicken Sie auf API-Clients> Schlüssel auswählen.
- Klicken Sie auf Neuen API-Client hinzufügen.
- Wählen Sie im Abschnitt API-Bereiche die Option Event-Streams aus und aktivieren Sie dann die Option Lesen.
- Klicken Sie auf Hinzufügen.
- Kopieren und speichern Sie die Client-ID, das Client-Secret und die Basis-URL.
Falcon SIEM Connector installieren
- Laden Sie das RPM-Installationspaket für Ihr Betriebssystem herunter.
Paketinstallation:
CentOS-Betriebssystem:
sudo rpm -Uvh <installer package>
Ubuntu-Betriebssystem:
sudo dpkg -i <installer package>
Standardinstallationsverzeichnisse:
- Falcon SIEM Connector –
/opt/crowdstrike/
. - Dienst:
/etc/init.d/cs.falconhoseclientd/
- Falcon SIEM Connector –
SIEM Connector so konfigurieren, dass Ereignisse an Bindplane weitergeleitet werden
- Melden Sie sich auf dem Computer, auf dem der SIEM Connector installiert ist, als
sudo
-Nutzer an. - Wechseln Sie zum Verzeichnis
/opt/crowdstrike/etc/
. - Benennen Sie
cs.falconhoseclient.leef.cfg
incs.falconhoseclient.cfg
um.- Der SIEM-Connector verwendet standardmäßig die
cs.falconhoseclient.cfg
-Konfiguration.
- Der SIEM-Connector verwendet standardmäßig die
- Bearbeiten Sie die Datei
cs.falconhoseclient.cfg
und ändern oder legen Sie die folgenden Parameter fest:api_url:
: Ihre CrowdStrike Falcon-Basis-URL, die Sie im vorherigen Schritt kopiert haben.app_id:
: Beliebiger String als Kennung für die Verbindung zur Falcon Streaming API, z. B.app_id: SECOPS-LEEF
.client_id:
: Der Wertclient_id
, der im vorherigen Schritt kopiert wurde.client_secret:
: Der Wertclient_secret
, der im vorherigen Schritt kopiert wurde.send_to_syslog_server: true
– Push-Benachrichtigungen an den Syslog-Server aktivieren.host:
: Die IP-Adresse oder der Hostname des Bindplane-Agents.port:
: Der Port des BindPlane-Agents.
- Speichern Sie die Datei
cs.falconhoseclient.cfg
. Starten Sie den SIEM Connector-Dienst:
CentOS-Betriebssystem:
sudo service cs.falconhoseclientd start
Ubuntu 16.04 oder höher:
sudo systemctl start cs.falconhoseclientd.service
Optional: SIEM Connector-Dienst beenden:
CentOS-Betriebssystem:
sudo service cs.falconhoseclientd stop
Ubuntu 16.04 oder höher:
sudo systemctl stop cs.falconhoseclientd.service
Optional: SIEM Connector-Dienst neu starten:
CentOS-Betriebssystem:
sudo service cs.falconhoseclientd restart
Ubuntu 16.04 oder höher:
sudo systemctl restart cs.falconhoseclientd.service
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
cat |
security_result.category_details |
Der Wert des Felds cat wird direkt dem Feld security_result.category_details zugeordnet. |
commandLine |
target.process.command_line |
Der Wert des Felds commandLine wird direkt dem Feld target.process.command_line zugeordnet. |
cs1 |
security_result.summary |
Wenn cs1Label „incidentType“ ist, wird der Wert von cs1 security_result.summary zugeordnet. Andernfalls wird sie als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel aus cs1Label und dem Wert aus cs1 zugeordnet. |
cs1Label |
security_result.detection_fields.key |
Wird als Schlüssel in security_result.detection_fields verwendet, wenn cs1 kein Vorfalltyp ist. |
cs2 |
security_result.detection_fields.value |
Als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel aus cs2Label und dem Wert aus cs2 zugeordnet. |
cs2Label |
security_result.detection_fields.key |
Wird zusammen mit cs2 als Schlüssel in security_result.detection_fields verwendet. |
cs3 |
security_result.detection_fields.value |
Als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel aus cs3Label und dem Wert aus cs3 zugeordnet. |
cs3Label |
security_result.detection_fields.key |
Wird zusammen mit cs3 als Schlüssel in security_result.detection_fields verwendet. |
cs4 |
security_result.about.url |
Wenn cs4Label „falconHostLink“ ist, wird der Wert von cs4 security_result.about.url zugeordnet. Andernfalls wird sie als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel aus cs4Label und dem Wert aus cs4 zugeordnet. |
cs4Label |
security_result.detection_fields.key |
Wird als Schlüssel in security_result.detection_fields verwendet, wenn cs4 kein „falconHostLink“ ist. |
description |
metadata.description |
Der Wert des Felds description wird direkt dem Feld metadata.description zugeordnet. Wenn das Feld leer ist, werden stattdessen incidentDescription , msg oder serviceName verwendet. |
devTime |
metadata.event_timestamp |
Der Wert des Felds devTime wird geparst und dem Feld metadata.event_timestamp zugeordnet. |
deviceCustomDate1 |
metadata.event_timestamp |
Wenn devTime nicht vorhanden ist, wird der Wert des Felds deviceCustomDate1 geparst und dem Feld metadata.event_timestamp zugeordnet. |
domain |
principal.administrative_domain |
Wird mithilfe eines regulären Ausdrucks aus dem Feld userName extrahiert und principal.administrative_domain zugeordnet. |
duser |
principal.user.userid |
Falls vorhanden, wird der Wert von duser in das Feld usrName geschrieben und dann zum Ausfüllen der Nutzerfelder verwendet. |
endpointName |
security_result.detection_fields.value |
Wird als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel „endpointName“ zugeordnet. |
eventType |
metadata.product_event_type |
Der Wert des Felds eventType wird direkt dem Feld metadata.product_event_type zugeordnet. |
falconHostLink |
security_result.about.url |
Der Wert des Felds falconHostLink wird direkt dem Feld security_result.about.url zugeordnet. |
filePath |
target.process.file.full_path |
Der Wert des Felds filePath wird direkt dem Feld target.process.file.full_path zugeordnet. |
identityProtectionIncidentId |
security_result.detection_fields.value |
Wird als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel „identityProtectionIncidentId“ zugeordnet. |
incidentDescription |
metadata.description |
Wenn description leer ist, wird der Wert des Felds incidentDescription dem Feld metadata.description zugeordnet. |
incidentType |
security_result.summary |
Der Wert des Felds incidentType wird direkt dem Feld security_result.summary zugeordnet. |
log_type |
metadata.log_type |
Der Wert des Felds log_type wird direkt dem Feld metadata.log_type zugeordnet. |
msg |
metadata.description |
Wenn description und incidentDescription leer sind, wird der Wert des Felds msg dem Feld metadata.description zugeordnet. |
numbersOfAlerts |
security_result.detection_fields.value |
Als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel „numbersOfAlerts“ zugeordnet. |
numberOfCompromisedEntities |
security_result.detection_fields.value |
Als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel „numberOfCompromisedEntities“ zugeordnet. |
product |
metadata.product_name |
Der Wert des Felds product wird direkt dem Feld metadata.product_name zugeordnet. |
resource |
target.resource.name |
Der Wert des Felds resource wird direkt dem Feld target.resource.name zugeordnet. |
serviceName |
target.application |
Der Wert des Felds serviceName wird direkt dem Feld target.application zugeordnet. Wird auch als Fallback für metadata.description verwendet. |
severityName |
security_result.severity |
Der Wert des Felds severityName wird dem Feld security_result.severity zugeordnet, nachdem er in Großbuchstaben umgewandelt wurde. Die Zuordnungslogik umfasst spezifische Umrechnungen für verschiedene Schweregradnamen. |
sha256 |
target.file.sha256 |
Der Wert des Felds sha256 wird direkt dem Feld target.file.sha256 zugeordnet. |
src |
principal.ip |
Der Wert des Felds src wird direkt dem Feld principal.ip zugeordnet. |
srcMAC |
principal.mac |
Der Wert des Felds srcMAC wird direkt dem Feld principal.mac zugeordnet, nachdem Bindestriche durch Doppelpunkte ersetzt wurden. |
state |
security_result.detection_fields.value |
Wird als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel „state“ zugeordnet. |
success |
security_result.action |
Wenn success „true“ ist, wird security_result.action auf „ALLOW“ gesetzt. Wenn success „false“ ist, wird security_result.action auf „BLOCK“ gesetzt. |
userName |
principal.user.userid |
Wenn usrName nicht vorhanden ist, wird der Wert des Felds userName verwendet, um die Nutzerfelder zu füllen. Die Domain wird extrahiert, sofern vorhanden. |
usrName |
principal.user.userid /target.user.userid |
Falls vorhanden, wird der Wert des Felds usrName je nach eventType entweder principal.user.userid oder target.user.userid zugeordnet. Wenn es sich um eine E-Mail-Adresse handelt, wird sie auch dem entsprechenden email_addresses -Feld hinzugefügt. |
vendor |
metadata.vendor_name |
Der Wert des Felds vendor wird direkt dem Feld metadata.vendor_name zugeordnet. |
version |
metadata.product_version |
Der Wert des Felds version wird direkt dem Feld metadata.product_version zugeordnet. |
(Parserlogik) | extensions.auth.mechanism |
Auf „USERNAME_PASSWORD“ festlegen, wenn eventType „saml2Assert“ oder „twoFactorAuthenticate“ ist. |
(Parserlogik) | extensions.auth.type |
Auf „AUTHTYPE_UNSPECIFIED“ festgelegt, wenn eventType „assert“ oder „userAuthenticate“ ist. |
(Parserlogik) | metadata.event_timestamp |
Der Zeitstempel aus dem Feld collection_time oder timestamp des Rohlogs wird als Ereigniszeitstempel verwendet. |
(Parserlogik) | metadata.event_type |
Wird anhand von eventType und anderen Feldern bestimmt. Der Standardwert ist „GENERIC_EVENT“. Er kann in „USER_LOGIN“, „GROUP_MODIFICATION“, „GROUP_DELETION“, „SERVICE_STOP“, „SERVICE_START“ oder „USER_UNCATEGORIZED“ geändert werden. |
(Parserlogik) | target.resource.type |
Auf „GROUP“ festlegen, wenn eventType „remove_group“, „update_group“ oder „delete_group“ ist. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten