Raccogliere i log di Citrix StoreFront
Questo documento spiega come importare i log di Citrix StoreFront in Google Security Operations utilizzando Bindplane. L'analizzatore sintattico estrae i campi dai log formattati del log eventi di Windows di Citrix StoreFront. Utilizza la raccolta dei log eventi di Windows per analizzare il messaggio di log e poi mappa questi valori al modello di dati unificato (UDM). Imposta anche i valori predefiniti dei metadati per l'origine e il tipo di evento. Il parser estrae i dati dai log JSON di Citrix StoreFront suddividendo il campo del messaggio in singole entità come Session
, User
, AppInstance
, App
, Connection
e Machine
utilizzando una serie di pattern grok
. Successivamente, mappa i campi estratti in una struttura Unified modello dei dati (UDM), arricchendola con informazioni su rete, principale, intermediario e target in base alla logica condizionale e alle trasformazioni dei dati.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps.
- Un host Windows 2016 o versioni successive con
systemd
in cui verrà installato Bindplane - Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso con privilegi al server Citrix StoreFront e alla console di gestione
- Accesso amministrativo al server Windows che ospita StoreFront
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Risorse aggiuntive per l'installazione
- Per ulteriori opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare i log eventi di Windows e inviarli a Google SecOps
Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere, si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue: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
- Sostituisci
CUSTOMER_ID_PLACEHOLDER
con l'ID cliente effettivo. - Aggiorna
/path/to/ingestion-authentication-file.json
al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.
- Sostituisci
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente BindPlane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurare la registrazione degli eventi StoreFront
- Accedi al server StoreFront con privilegi amministrativi.
- Apri PowerShell come amministratore.
Carica il modulo PowerShell di StoreFront:
Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
(Facoltativo) Attiva il logging dettagliato per la risoluzione dei problemi:
Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
Verifica che i log eventi di Windows siano attivati:
- Apri Visualizzatore eventi sul server StoreFront.
- Vai a Application and Services Logs > Citrix Delivery Services.
- Verifica che gli eventi vengano registrati per il servizio di autenticazione, gli store e Receiver per i siti web.
(Facoltativo) Configura la limitazione dei log eventi
- Vai alle directory di configurazione di StoreFront:
- Servizio di autenticazione:
C:/inetpub/wwwroot/Citrix/Authentication
- Negozio:
C:/inetpub/wwwroot/Citrixstorename
- Destinatario per il sito web:
C:/inetpub/wwwroot/Citrixstorename/Web
- Servizio di autenticazione:
- Apri il file
web.config
in ogni directory utilizzando un editor di testo. Individua l'elemento logger e configuralo in base alle esigenze:
<logger duplicateInterval="00:01:00" duplicateLimit="10">
duplicateInterval: imposta il periodo di tempo in ore, minuti e secondi durante il quale vengono monitorate le voci di log duplicate.
duplicateLimit: imposta il numero di voci duplicate che devono essere registrate entro l'intervallo di tempo specificato per attivare la limitazione dei log.
Salva i file di configurazione.
Verificare la raccolta dei log
- Apri il Visualizzatore eventi di Windows sul server StoreFront.
- Vai a Registri di Windows > Applicazione o Registri applicazioni e servizi > Citrix Delivery Services.
- Verifica che gli eventi StoreFront vengano generati.
- Controlla i log dell'agente Bindplane per verificare che vengano inoltrati a Google SecOps.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
App.PublishedName | _principal.application | Il valore viene estratto dal campo App.PublishedName. |
Connection.ClientAddress | _principal.asset.ip | Il valore viene estratto dal campo Connection.ClientAddress. |
Connection.ClientName | _principal.asset.hostname | Il valore viene estratto dal campo Connection.ClientName. |
Connection.ClientPlatform | _principal.asset.platform_software.platform | Il valore viene estratto dal campo Connection.ClientPlatform e convertito in maiuscolo. Se il valore è "WINDOWS", "MAC" o "LINUX", viene utilizzato direttamente. In caso contrario, il valore viene impostato su "UNKNOWN_PLATFORM". |
Connection.ConnectedViaHostName | src.hostname | Il valore viene estratto dal campo Connection.ConnectedViaHostName. |
Connection.LaunchedViaHostName | _intermediary.hostname | Il valore viene estratto dal campo Connection.LaunchedViaHostName. Lo spazio dei nomi è impostato su "Server StoreFront". |
Connection.LaunchedViaIPAddress | _intermediary.ip | Il valore viene estratto dal campo Connection.LaunchedViaIPAddress. |
Connection.Protocol | network.application_protocol | Il valore viene estratto dal campo Connection.Protocol. Se il valore è "HDX", viene impostato su "UNKNOWN_APPLICATION_PROTOCOL". |
Machine.AgentVersion | metadata.product_version | Il valore viene estratto dal campo Machine.AgentVersion. |
Machine.AssociatedUserNames | _intermediary.user.userid | Il valore viene estratto dal campo Machine.AssociatedUserNames. Ogni nome viene estratto e utilizzato come User-ID per un oggetto utente intermedio. |
Machine.AssociatedUserUPNs | _target.group.email_addresses | Il valore viene estratto dal campo Machine.AssociatedUserUPNs. Ogni indirizzo email viene estratto e aggiunto al campo email_addresses del gruppo di destinazione. |
Machine.ControllerDnsName | _intermediary.hostname | Il valore viene estratto dal campo Machine.ControllerDnsName. Lo spazio dei nomi è impostato su "Controller". |
Machine.CreatedDate | _target.asset.attribute.creation_time | Il valore viene estratto dal campo Machine.CreatedDate e convertito in un timestamp. |
Machine.DesktopGroupId | _target.group.product_object_id | Il valore viene preso dal campo Machine.DesktopGroupId. |
Machine.DnsName | _target.asset.network_domain | Il valore viene estratto dal campo Machine.DnsName. |
Machine.HostedMachineName | _target.asset.hostname | Il valore viene estratto dal campo Machine.HostedMachineName. |
Machine.HostingServerName | _intermediary.hostname | Il valore viene estratto dal campo Machine.HostingServerName. Lo spazio dei nomi è impostato su "Hypervisor". |
Machine.IPAddress | _target.asset.ip | Il valore viene estratto dal campo Machine.IPAddress. |
Machine.LastDeregisteredDate | _target.asset.last_discover_time | Il valore viene estratto dal campo Machine.LastDeregisteredDate e convertito in un timestamp. |
Machine.ModifiedDate | _target.asset.system_last_update_time | Il valore viene estratto dal campo Machine.ModifiedDate e convertito in un timestamp. |
Machine.Name | _target.asset.asset_id, _target.administrative_domain | Il valore viene preso dal campo Machine.Name e suddiviso in dominio e asset. La parte del dominio viene utilizzata come dominio amministrativo di destinazione, mentre la parte dell'asset viene utilizzata per creare l'ID risorsa di destinazione nel formato "machine: |
Machine.OSType | _target.asset.platform_software.platform_version | Il valore viene preso dal campo Machine.OSType. |
Machine.PoweredOnDate | _target.asset.last_boot_time | Il valore viene estratto dal campo Machine.PoweredOnDate e convertito in un timestamp. |
Machine.RegistrationStateChangeDate | _target.asset.first_discover_time | Il valore viene estratto dal campo Machine.RegistrationStateChangeDate e convertito in un timestamp. |
Session.EndDate | _vulns.last_found | Il valore viene estratto dal campo Session.EndDate e convertito in un timestamp. |
Session.LifecycleState | extensions.auth.auth_details | Il valore viene estratto dal campo Session.LifecycleState. Se il valore è 0, viene impostato su "ACTIVE". Se il valore è 1, è impostato su "DELETED". Se il valore è 2 o 3, viene impostato su "UNKNOWN_AUTHENTICATION_STATUS". |
Session.LogOnDuration | network.session_duration.seconds | Il valore viene estratto dal campo Session.LogOnDuration e convertito in un numero intero. |
Session.SessionKey | network.session_id | Il valore viene estratto dal campo Session.SessionKey. |
Session.StartDate | _vulns.first_found | Il valore viene estratto dal campo Session.StartDate e convertito in un timestamp. |
User.Domain | _principal.user.company_name, _principal.administrative_domain | Il valore viene estratto dal campo User.Domain e utilizzato sia come nome della società dell'utente principale sia come dominio amministrativo principale. |
User.FullName | _principal.user.user_display_name | Il valore viene estratto dal campo User.FullName. |
User.Sid | _principal.user.windows_sid | Il valore viene estratto dal campo User.Sid. |
User.Upn | _principal.user.email_addresses | Il valore viene estratto dal campo User.Upn e aggiunto al campo email_addresses dell'utente principale. |
User.UserName | _principal.user.userid | Il valore viene estratto dal campo User.UserName. |
metadata.event_type | Il valore è impostato su "USER_LOGIN". | |
metadata.vendor_name | Il valore è impostato su "Citrix". | |
metadata.product_name | Il valore è impostato su "Monitor Service OData". | |
extensions.auth.type | Il valore è impostato su "MACHINE". | |
_intermediary.namespace | Il valore è impostato su "StoreFront server", "Controller" o "Hypervisor" a seconda dell'oggetto intermedio. | |
_target.asset.type | Il valore è impostato su "WORKSTATION". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.