Collecter les journaux Citrix StoreFront

Compatible avec :

Ce document explique comment ingérer des journaux Citrix StoreFront dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les champs des journaux mis en forme du journal des événements Windows Citrix StoreFront. Il utilise la collecte du journal d'événements Windows pour analyser le message du journal, puis mappe ces valeurs au modèle de données unifié (UDM, Unified Data Model). Il définit également les valeurs de métadonnées par défaut pour la source et le type d'événement. Le parseur extrait les données des journaux JSON Citrix StoreFront en décomposant le champ de message en entités individuelles telles que Session, User, AppInstance, App, Connection et Machine à l'aide d'une série de modèles grok. Il mappe ensuite les champs extraits à une structure de modèle de données unifié (UDM), en l'enrichissant avec des informations sur le réseau, le principal, l'intermédiaire et la cible en fonction de la logique conditionnelle et des transformations de données.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps.
  • Un hôte Windows 2016 ou version ultérieure avec systemd sur lequel Bindplane sera installé
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié au serveur Citrix StoreFront et à la console de gestion
  • Accès administrateur au serveur Windows hébergeant StoreFront

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

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

Ressources d'installation supplémentaires

Configurer l'agent Bindplane pour ingérer les journaux d'événements Windows et les envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    1. Trouvez le fichier config.yaml. En règle générale, il se trouve dans le répertoire /etc/bindplane-agent/ sous Linux ou dans le répertoire d'installation sous Windows.
    2. Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou le Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    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
    

Redémarrez l'agent Bindplane pour appliquer les modifications.

  1. Pour redémarrer l'agent BindPlane dans Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer la journalisation des événements StoreFront

  1. Connectez-vous au serveur StoreFront avec des droits d'administrateur.
  2. Ouvrez PowerShell en tant qu'administrateur.
  3. Chargez le module PowerShell StoreFront :

    Add-PSSnapin Citrix.DeliveryServices.Framework.Commands
    
  4. Activez la journalisation détaillée pour le dépannage (facultatif) :

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    
  5. Vérifiez que la journalisation d'événements Windows est activée :

    • Ouvrez l'Observateur d'événements sur le serveur StoreFront.
    • Accédez à Journaux des applications et des services > Services de livraison Citrix.
    • Vérifiez que les événements sont consignés dans les journaux pour le service d'authentification, les magasins et les sites Receiver pour Web.

Facultatif : Configurer la limitation du journal des événements

  1. Accédez aux répertoires de configuration StoreFront :
    • Service d'authentification : C:/inetpub/wwwroot/Citrix/Authentication
    • Magasin : C:/inetpub/wwwroot/Citrixstorename
    • Récepteur pour le site Web : C:/inetpub/wwwroot/Citrixstorename/Web
  2. Ouvrez le fichier web.config dans chaque répertoire à l'aide d'un éditeur de texte.
  3. Localisez l'élément du journaliseur et configurez-le si nécessaire :

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
  4. duplicateInterval : définissez la période en heures, minutes et secondes pendant laquelle les entrées de journaux en double sont surveillées.

  5. duplicateLimit : définissez le nombre d'entrées en double qui doivent être consignées dans l'intervalle de temps spécifié pour déclencher la limitation du journal.

  6. Enregistrez les fichiers de configuration.

Vérifier la collecte des journaux

  1. Ouvrez la Visionneuse d'événements Windows sur le serveur StoreFront.
  2. Accédez à Journaux Windows > Application ou Journaux des applications et services > Citrix Delivery Services.
  3. Vérifiez que les événements StoreFront sont générés.
  4. Consultez les journaux de l'agent Bindplane pour confirmer que les journaux sont transférés à Google SecOps.

Table de mappage UDM

Champ du journal Mappage UDM Logique
App.PublishedName _principal.application La valeur est extraite du champ App.PublishedName.
Connection.ClientAddress _principal.asset.ip La valeur est extraite du champ Connection.ClientAddress.
Connection.ClientName _principal.asset.hostname La valeur est extraite du champ Connection.ClientName.
Connection.ClientPlatform _principal.asset.platform_software.platform La valeur est extraite du champ "Connection.ClientPlatform" et convertie en majuscules. Si la valeur est "WINDOWS", "MAC" ou "LINUX", elle est utilisée directement. Sinon, la valeur est définie sur "UNKNOWN_PLATFORM".
Connection.ConnectedViaHostName src.hostname La valeur est extraite du champ "Connection.ConnectedViaHostName".
Connection.LaunchedViaHostName _intermediary.hostname La valeur est extraite du champ "Connection.LaunchedViaHostName". L'espace de noms est défini sur "Serveur StoreFront".
Connection.LaunchedViaIPAddress _intermediary.ip La valeur est extraite du champ "Connection.LaunchedViaIPAddress".
Connection.Protocol network.application_protocol La valeur est extraite du champ "Connection.Protocol". Si la valeur est "HDX", elle est définie sur "UNKNOWN_APPLICATION_PROTOCOL".
Machine.AgentVersion metadata.product_version La valeur est extraite du champ "Machine.AgentVersion".
Machine.AssociatedUserNames _intermediary.user.userid La valeur est extraite du champ Machine.AssociatedUserNames. Chaque nom est extrait et utilisé comme ID utilisateur pour un objet utilisateur intermédiaire.
Machine.AssociatedUserUPNs _target.group.email_addresses La valeur est extraite du champ Machine.AssociatedUserUPNs. Chaque adresse e-mail est extraite et ajoutée au champ "email_addresses" du groupe cible.
Machine.ControllerDnsName _intermediary.hostname La valeur est extraite du champ "Machine.ControllerDnsName". L'espace de noms est défini sur "Controller".
Machine.CreatedDate _target.asset.attribute.creation_time La valeur est extraite du champ "Machine.CreatedDate" et convertie en code temporel.
Machine.DesktopGroupId _target.group.product_object_id La valeur est extraite du champ Machine.DesktopGroupId.
Machine.DnsName _target.asset.network_domain La valeur est extraite du champ Machine.DnsName.
Machine.HostedMachineName _target.asset.hostname La valeur est extraite du champ "Machine.HostedMachineName".
Machine.HostingServerName _intermediary.hostname La valeur est extraite du champ Machine.HostingServerName. L'espace de noms est défini sur "Hypervisor".
Machine.IPAddress _target.asset.ip La valeur est extraite du champ Machine.IPAddress.
Machine.LastDeregisteredDate _target.asset.last_discover_time La valeur est extraite du champ "Machine.LastDeregisteredDate" et convertie en code temporel.
Machine.ModifiedDate _target.asset.system_last_update_time La valeur est extraite du champ "Machine.ModifiedDate" et convertie en code temporel.
Machine.Name _target.asset.asset_id, _target.administrative_domain La valeur est extraite du champ "Machine.Name" et divisée en parties "domaine" et "ressource". La partie domaine est utilisée comme domaine administratif cible, et la partie composant est utilisée pour construire l'ID de composant cible au format "machine:".
Machine.OSType _target.asset.platform_software.platform_version La valeur est extraite du champ Machine.OSType.
Machine.PoweredOnDate _target.asset.last_boot_time La valeur est extraite du champ "Machine.PoweredOnDate" et convertie en code temporel.
Machine.RegistrationStateChangeDate _target.asset.first_discover_time La valeur est extraite du champ "Machine.RegistrationStateChangeDate" et convertie en code temporel.
Session.EndDate _vulns.last_found La valeur est extraite du champ "Session.EndDate" et convertie en code temporel.
Session.LifecycleState extensions.auth.auth_details La valeur est extraite du champ Session.LifecycleState. Si la valeur est définie sur 0, elle est définie sur "ACTIVE". Si la valeur est 1, elle est définie sur "DELETED". Si la valeur est 2 ou 3, elle est définie sur "UNKNOWN_AUTHENTICATION_STATUS".
Session.LogOnDuration network.session_duration.seconds La valeur est extraite du champ "Session.LogOnDuration" et convertie en entier.
Session.SessionKey network.session_id La valeur est extraite du champ Session.SessionKey.
Session.StartDate _vulns.first_found La valeur est extraite du champ "Session.StartDate" et convertie en code temporel.
User.Domain _principal.user.company_name, _principal.administrative_domain La valeur est extraite du champ "User.Domain" et utilisée à la fois comme nom de l'entreprise de l'utilisateur principal et comme domaine administratif principal.
User.FullName _principal.user.user_display_name La valeur est extraite du champ "User.FullName".
User.Sid _principal.user.windows_sid La valeur est extraite du champ User.Sid.
User.Upn _principal.user.email_addresses La valeur est extraite du champ User.Upn et ajoutée au champ email_addresses de l'utilisateur principal.
User.UserName _principal.user.userid La valeur est extraite du champ User.UserName.
metadata.event_type La valeur est définie sur "USER_LOGIN".
metadata.vendor_name La valeur est définie sur "Citrix".
metadata.product_name La valeur est définie sur "Monitor Service OData".
extensions.auth.type La valeur est définie sur "MACHINE".
_intermediary.namespace La valeur est définie sur "Serveur StoreFront", "Contrôleur" ou "Hyperviseur" en fonction de l'objet intermédiaire.
_target.asset.type La valeur est définie sur "WORKSTATION".

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.