Raccogliere i log di Citrix StoreFront

Supportato in:

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

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. 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

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. 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

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Risorse aggiuntive per l'installazione

Configura l'agente Bindplane per importare i log eventi di Windows e inviarli a Google SecOps

  1. Accedi al file di configurazione:

    1. Individua il file config.yaml. In genere, si trova nella directory /etc/bindplane-agent/ su Linux o nella directory di installazione su Windows.
    2. Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. 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
    

Riavvia l'agente Bindplane per applicare le modifiche

  1. 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

  1. Accedi al server StoreFront con privilegi amministrativi.
  2. Apri PowerShell come amministratore.
  3. Carica il modulo PowerShell di StoreFront:

    Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
    
  4. (Facoltativo) Attiva il logging dettagliato per la risoluzione dei problemi:

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    
  5. 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

  1. 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
  2. Apri il file web.config in ogni directory utilizzando un editor di testo.
  3. Individua l'elemento logger e configuralo in base alle esigenze:

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
  4. duplicateInterval: imposta il periodo di tempo in ore, minuti e secondi durante il quale vengono monitorate le voci di log duplicate.

  5. duplicateLimit: imposta il numero di voci duplicate che devono essere registrate entro l'intervallo di tempo specificato per attivare la limitazione dei log.

  6. Salva i file di configurazione.

Verificare la raccolta dei log

  1. Apri il Visualizzatore eventi di Windows sul server StoreFront.
  2. Vai a Registri di Windows > Applicazione o Registri applicazioni e servizi > Citrix Delivery Services.
  3. Verifica che gli eventi StoreFront vengano generati.
  4. 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.