Citrix StoreFront-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Citrix StoreFront-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert Felder aus Logs, die im Windows-Ereignisprotokoll von Citrix StoreFront formatiert sind. Dabei wird die Windows-Ereignisprotokollsammlung verwendet, um die Protokollnachricht zu parsen. Anschließend werden diese Werte dem Unified Data Model (UDM) zugeordnet. Außerdem werden Standardmetadatenwerte für die Ereignisquelle und den Ereignistyp festgelegt. Der Parser extrahiert Daten aus Citrix StoreFront-JSON-Logs, indem er das Feld „message“ mithilfe einer Reihe von grok
-Mustern in einzelne Einheiten wie Session
, User
, AppInstance
, App
, Connection
und Machine
aufteilt. Anschließend werden die extrahierten Felder einer UDM-Struktur (Unified Data Model) zugeordnet und anhand von bedingter Logik und Datentransformationen mit Informationen zu Netzwerk, Auftraggeber, Vermittler und Ziel angereichert.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz.
- Ein Host mit Windows 2016 oder höher mit
systemd
, auf dem Bindplane installiert wird - Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Privilegierter Zugriff auf den Citrix StoreFront-Server und die Verwaltungskonsole
- Administratorzugriff auf den Windows-Server, auf dem StoreFront gehostet wird
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 BindPlane 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" /quiet
Zusätzliche Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Windows-Ereignisprotokollen und Senden an Google SecOps konfigurieren
Konfigurationsdatei aufrufen:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet sie 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: windowseventlog/storefront: channel: Application operators: - type: filter expr: 'record["source_name"] matches "^Citrix"' exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: 'C:/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: CUSTOMER_ID_PLACEHOLDER endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'CITRIX_STOREFRONT' raw_log_field: body ingestion_labels: service: pipelines: logs/storefront: receivers: - windowseventlog/storefront exporters: - chronicle/chronicle_w_labels
- Ersetzen Sie
CUSTOMER_ID_PLACEHOLDER
durch die tatsächliche Kundennummer. - Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.
- Ersetzen Sie
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Um den BindPlane-Agenten in Windows neu zu starten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
StoreFront-Ereignisprotokollierung konfigurieren
- Melden Sie sich mit Administratorberechtigungen auf dem StoreFront-Server an.
- Öffnen Sie PowerShell als Administrator.
Laden Sie das StoreFront-PowerShell-Modul:
Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
Ausführliches Logging zur Fehlerbehebung aktivieren (optional):
Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
Prüfen Sie, ob die Windows-Ereignisprotokollierung aktiviert ist:
- Öffnen Sie die Ereignisanzeige auf dem StoreFront-Server.
- Gehen Sie zu Anwendungs- und Dienstprotokolle>Citrix Delivery Services.
- Prüfen Sie, ob Ereignisse für den Authentifizierungsdienst, die Stores und Receiver für Websites protokolliert werden.
Optional: Drosselung von Ereignisprotokollen konfigurieren
- Rufen Sie die StoreFront-Konfigurationsverzeichnisse auf:
- Authentifizierungsdienst:
C:/inetpub/wwwroot/Citrix/Authentication
- Händler:
C:/inetpub/wwwroot/Citrixstorename
- Empfänger für Website:
C:/inetpub/wwwroot/Citrixstorename/Web
- Authentifizierungsdienst:
- Öffnen Sie die Datei
web.config
in jedem Verzeichnis mit einem Texteditor. Suchen Sie das Logger-Element und konfigurieren Sie es nach Bedarf:
<logger duplicateInterval="00:01:00" duplicateLimit="10">
duplicateInterval: Legen Sie den Zeitraum in Stunden, Minuten und Sekunden fest, in dem doppelte Logeinträge überwacht werden.
duplicateLimit: Legen Sie die Anzahl der doppelten Einträge fest, die innerhalb des angegebenen Zeitintervalls protokolliert werden müssen, um die Protokolldrosselung auszulösen.
Speichern Sie die Konfigurationsdateien.
Logerfassung prüfen
- Öffnen Sie die Windows-Ereignisanzeige auf dem StoreFront-Server.
- Gehen Sie zu Windows-Protokolle> Anwendung oder Anwendungs- und Dienstprotokolle> Citrix Delivery Services.
- Prüfen Sie, ob StoreFront-Ereignisse generiert werden.
- Prüfen Sie die Bindplane-Agent-Logs, um zu bestätigen, dass Logs an Google SecOps weitergeleitet werden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
App.PublishedName | _principal.application | Der Wert wird aus dem Feld „App.PublishedName“ übernommen. |
Connection.ClientAddress | _principal.asset.ip | Der Wert wird aus dem Feld „Connection.ClientAddress“ übernommen. |
Connection.ClientName | _principal.asset.hostname | Der Wert wird aus dem Feld „Connection.ClientName“ übernommen. |
Connection.ClientPlatform | _principal.asset.platform_software.platform | Der Wert wird aus dem Feld „Connection.ClientPlatform“ übernommen und in Großbuchstaben umgewandelt. Wenn der Wert „WINDOWS“, „MAC“ oder „LINUX“ ist, wird er direkt verwendet. Andernfalls wird der Wert auf „UNKNOWN_PLATFORM“ gesetzt. |
Connection.ConnectedViaHostName | src.hostname | Der Wert stammt aus dem Feld „Connection.ConnectedViaHostName“. |
Connection.LaunchedViaHostName | _intermediary.hostname | Der Wert wird aus dem Feld „Connection.LaunchedViaHostName“ übernommen. Der Namespace ist auf „StoreFront-Server“ festgelegt. |
Connection.LaunchedViaIPAddress | _intermediary.ip | Der Wert wird aus dem Feld „Connection.LaunchedViaIPAddress“ übernommen. |
Connection.Protocol | network.application_protocol | Der Wert wird aus dem Feld „Connection.Protocol“ übernommen. Wenn der Wert „HDX“ ist, wird er auf „UNKNOWN_APPLICATION_PROTOCOL“ gesetzt. |
Machine.AgentVersion | metadata.product_version | Der Wert wird aus dem Feld „Machine.AgentVersion“ übernommen. |
Machine.AssociatedUserNames | _intermediary.user.userid | Der Wert wird aus dem Feld „Machine.AssociatedUserNames“ übernommen. Jeder Name wird extrahiert und als User-ID für ein zwischengeschaltetes Nutzerobjekt verwendet. |
Machine.AssociatedUserUPNs | _target.group.email_addresses | Der Wert wird aus dem Feld „Machine.AssociatedUserUPNs“ übernommen. Jede E-Mail-Adresse wird extrahiert und dem Feld „email_addresses“ der Zielgruppe hinzugefügt. |
Machine.ControllerDnsName | _intermediary.hostname | Der Wert wird aus dem Feld „Machine.ControllerDnsName“ übernommen. Der Namespace ist auf „Controller“ festgelegt. |
Machine.CreatedDate | _target.asset.attribute.creation_time | Der Wert wird aus dem Feld „Machine.CreatedDate“ übernommen und in einen Zeitstempel konvertiert. |
Machine.DesktopGroupId | _target.group.product_object_id | Der Wert wird aus dem Feld „Machine.DesktopGroupId“ übernommen. |
Machine.DnsName | _target.asset.network_domain | Der Wert wird aus dem Feld „Machine.DnsName“ übernommen. |
Machine.HostedMachineName | _target.asset.hostname | Der Wert wird aus dem Feld „Machine.HostedMachineName“ übernommen. |
Machine.HostingServerName | _intermediary.hostname | Der Wert wird aus dem Feld „Machine.HostingServerName“ übernommen. Der Namespace ist auf „Hypervisor“ festgelegt. |
Machine.IPAddress | _target.asset.ip | Der Wert wird aus dem Feld „Machine.IPAddress“ übernommen. |
Machine.LastDeregisteredDate | _target.asset.last_discover_time | Der Wert wird aus dem Feld „Machine.LastDeregisteredDate“ übernommen und in einen Zeitstempel konvertiert. |
Machine.ModifiedDate | _target.asset.system_last_update_time | Der Wert wird aus dem Feld „Machine.ModifiedDate“ übernommen und in einen Zeitstempel konvertiert. |
Machine.Name | _target.asset.asset_id, _target.administrative_domain | Der Wert wird aus dem Feld „Machine.Name“ übernommen und in Domain- und Asset-Teile aufgeteilt. Der Domainteil wird als administrative Zieldomain und der Asset-Teil zum Erstellen der Ziel-Asset-ID im Format „machine: |
Machine.OSType | _target.asset.platform_software.platform_version | Der Wert wird aus dem Feld „Machine.OSType“ übernommen. |
Machine.PoweredOnDate | _target.asset.last_boot_time | Der Wert wird aus dem Feld „Machine.PoweredOnDate“ übernommen und in einen Zeitstempel konvertiert. |
Machine.RegistrationStateChangeDate | _target.asset.first_discover_time | Der Wert wird aus dem Feld „Machine.RegistrationStateChangeDate“ übernommen und in einen Zeitstempel konvertiert. |
Session.EndDate | _vulns.last_found | Der Wert wird aus dem Feld „Session.EndDate“ übernommen und in einen Zeitstempel konvertiert. |
Session.LifecycleState | extensions.auth.auth_details | Der Wert wird aus dem Feld „Session.LifecycleState“ übernommen. Wenn der Wert 0 ist, wird er auf „ACTIVE“ gesetzt. Wenn der Wert 1 ist, wird er auf „DELETED“ gesetzt. Wenn der Wert 2 oder 3 ist, wird er auf „UNKNOWN_AUTHENTICATION_STATUS“ festgelegt. |
Session.LogOnDuration | network.session_duration.seconds | Der Wert wird aus dem Feld „Session.LogOnDuration“ übernommen und in eine Ganzzahl konvertiert. |
Session.SessionKey | network.session_id | Der Wert wird aus dem Feld „Session.SessionKey“ übernommen. |
Session.StartDate | _vulns.first_found | Der Wert wird aus dem Feld „Session.StartDate“ übernommen und in einen Zeitstempel konvertiert. |
User.Domain | _principal.user.company_name, _principal.administrative_domain | Der Wert wird aus dem Feld „User.Domain“ übernommen und sowohl als Unternehmensname des Hauptnutzers als auch als primäre Administratordomain verwendet. |
User.FullName | _principal.user.user_display_name | Der Wert wird aus dem Feld „User.FullName“ übernommen. |
User.Sid | _principal.user.windows_sid | Der Wert wird aus dem Feld „User.Sid“ übernommen. |
User.Upn | _principal.user.email_addresses | Der Wert wird aus dem Feld „User.Upn“ übernommen und dem Feld „email_addresses“ des Hauptnutzers hinzugefügt. |
User.UserName | _principal.user.userid | Der Wert wird aus dem Feld „User.UserName“ übernommen. |
metadata.event_type | Der Wert ist auf „USER_LOGIN“ festgelegt. | |
metadata.vendor_name | Der Wert wird auf „Citrix“ festgelegt. | |
metadata.product_name | Der Wert ist auf „Monitor Service OData“ festgelegt. | |
extensions.auth.type | Der Wert ist auf „MACHINE“ festgelegt. | |
_intermediary.namespace | Der Wert wird je nach Zwischenobjekt auf „StoreFront server“, „Controller“ oder „Hypervisor“ festgelegt. | |
_target.asset.type | Der Wert ist auf „WORKSTATION“ festgelegt. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten