Collecter les journaux Citrix StoreFront

Version de l'analyseur : 1.0

Compatible avec :

Ce document explique comment ingérer des journaux Citrix StoreFront dans Google Security Operations à l'aide de Bindplane.

Citrix StoreFront est une application Web qui fournit un magasin d'applications d'entreprise pour les applications et bureaux virtuels Citrix. Il authentifie les utilisateurs sur les sites Citrix Virtual Apps and Desktops et regroupe les ressources disponibles sur un seul portail. StoreFront écrit les événements d'authentification, de lancement de session et de service dans le journal des événements Windows sous des sources d'événements précédées du préfixe "Citrix".

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows Server 2016 ou version ultérieure avec systemd
  • Connectivité réseau entre l'agent BindPlane et Internet
  • 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 administrateur au serveur Windows hébergeant Citrix StoreFront
  • Citrix StoreFront 2308 ou version ultérieure installé et configuré

Obtenir les identifiants Google SecOps pour l'agent Bindplane

Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :

  • Nouveaux déploiements : utilisez l'API Chronicle (option 1).
  • Anciens déploiements : continuez à utiliser le fichier d'authentification d'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez un nom pour le compte (par exemple, bindplane-ingest).
    • Description du compte de service : saisissez une description (par exemple, Bindplane agent log ingestion).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur Bindplane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)

  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.
  4. Enregistrez le fichier de manière sécurisée sur le système sur lequel l'agent 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 dans la section Détails de l'organisation.

Installer l'agent BindPlane

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

Installation de Windows

  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
    
  3. Attendez que l'installation se termine.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

Le service doit s'afficher comme étant EN COURS D'EXÉCUTION.

Autres ressources d'installation

Pour obtenir des options d'installation et de dépannage supplémentaires, consultez le guide d'installation de l'agent Bindplane.

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

Localiser le fichier de configuration

  1. Ouvrez l'invite de commande en tant qu'administrateur.
  2. Accédez au répertoire d'installation de l'agent BindPlane et ouvrez le fichier de configuration :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    receivers:
      windowseventlog/storefront_application:
        channel: Application
        raw: true
        start_at: end
        operators:
          - type: filter
            expr: 'record["source_name"] matches "^Citrix"'
    
    processors:
      batch:
    
    exporters:
      chronicle/storefront:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds: '{
          "type": "service_account",
          "project_id": "YOUR_PROJECT_ID",
          "private_key_id": "YOUR_PRIVATE_KEY_ID",
          "private_key": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
          "client_email": "YOUR_CLIENT_EMAIL",
          "client_id": "YOUR_CLIENT_ID",
          "auth_uri": "https://accounts.google.com/o/oauth2/auth",
          "token_uri": "https://oauth2.googleapis.com/token",
          "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
          "client_x509_cert_url": "YOUR_CERT_URL"
        }'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: 'CITRIX_STOREFRONT'
        override_log_type: false
        raw_log_field: body
    
    service:
      pipelines:
        logs/storefront:
          receivers:
            - windowseventlog/storefront_application
          processors:
            - batch
          exporters:
            - chronicle/storefront
    

Paramètres de configuration

Remplacez les espaces réservés suivants par vos valeurs réelles :

  • Configuration de l'exportateur :

    • YOUR_PROJECT_ID : ID du projet à partir de votre fichier d'authentification pour l'ingestion
    • YOUR_PRIVATE_KEY_ID : ID de clé privée de votre fichier d'authentification pour l'ingestion
    • YOUR_PRIVATE_KEY : clé privée de votre fichier d'authentification pour l'ingestion (assurez-vous d'échapper correctement les sauts de ligne)
    • YOUR_CLIENT_EMAIL : adresse e-mail du client figurant dans votre fichier d'authentification pour l'ingestion
    • YOUR_CLIENT_ID : ID client de votre fichier d'authentification pour l'ingestion
    • YOUR_CERT_URL : URL du certificat client x509 de votre fichier d'authentification pour l'ingestion
    • YOUR_CUSTOMER_ID : ID client Google SecOps
  • Remplacez <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur ajoute cette valeur en préfixe à chronicle.googleapis.com. Pour obtenir la liste complète, consultez Points de terminaison régionaux.

  • Remplacez <PROJECT_NUMBER> par le numéro de projet indiqué dans IAM et administration > Paramètres.

  • Exemple :

    exporters:
      chronicle/storefront:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: 'CITRIX_STOREFRONT'
        override_log_type: false
        raw_log_field: body
    

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par ce qui suit. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification de l'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par votre point de terminaison régional (par exemple, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/storefront:
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'CITRIX_STOREFRONT'
        override_log_type: false
        raw_log_field: body
    

Enregistrez le fichier de configuration.

  • Après avoir modifié le fichier, enregistrez-le :
    • Cliquez sur Fichier > Enregistrer.
    • Fermer le bloc-notes

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

Pour redémarrer l'agent BindPlane sous Windows :

  1. Choisissez l'une des options suivantes :

    • Invite de commande ou PowerShell en tant qu'administrateur :
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Console Services :
      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Localisez observIQ OpenTelemetry Collector.
      3. Effectuez un clic droit, puis sélectionnez Redémarrer.
  2. Vérifiez que le service est en cours d'exécution :

    sc query observiq-otel-collector
    
  3. Recherchez les erreurs dans les journaux :

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Configurer la journalisation des événements Citrix StoreFront

Par défaut, StoreFront 2311 et les versions ultérieures enregistrent les messages de journal de niveau "Erreur", "Avertissement" et "Info". Pour les versions antérieures (2308 et versions antérieures), seuls les messages de journal de niveau "Erreur" sont enregistrés par défaut.

Activer la journalisation détaillée (facultatif)

Pour augmenter les détails de journalisation à des fins de dépannage :

  1. Connectez-vous au serveur StoreFront avec des droits d'administrateur local.
  2. Ouvrez PowerShell en tant qu'administrateur.
  3. Exécutez la commande suivante pour activer la journalisation détaillée pour tous les services :

    Set-STFDiagnostics -All -TraceLevel "Verbose" -confirm:$False
    
  4. Après le dépannage, rétablissez le niveau de journalisation par défaut :

    Set-STFDiagnostics -All -TraceLevel "Info" -confirm:$False
    

Vérifier les événements du journal des événements Windows

  1. Appuyez sur Win+R, saisissez eventvwr.msc, puis appuyez sur Entrée pour ouvrir l'Observateur d'événements.
  2. Accédez à Journaux des applications et des services > Citrix Delivery Services.
  3. Vérifiez que les événements sont bien consignés pour l'authentification, les magasins et les sites Receiver pour le Web.
  4. Accédez à Journaux Windows>Application.
  5. Filtrez les événements par nom de source commençant par Citrix pour vérifier que des événements au niveau de l'application sont générés.

Configurer la limitation du journal des événements (facultatif)

StoreFront prend en charge la limitation du nombre d'événements du journal des événements pour limiter le nombre d'événements en double. Pour configurer la limitation :

  1. Accédez aux répertoires de configuration du service StoreFront sur le serveur :
    • Service d'authentification : C:\inetpub\wwwroot\Citrix\Authentication
    • Magasin : C:\inetpub\wwwroot\Citrix\<storename>
    • Site Web du récepteur : C:\inetpub\wwwroot\Citrix\<storename>\Web
  2. Ouvrez le fichier web.config dans chaque répertoire à l'aide d'un éditeur de texte.
  3. Localisez l'élément logger et configurez les paramètres de limitation :

    <logger duplicateInterval="00:01:00" duplicateLimit="10">
    
    • duplicateInterval : période (heures:minutes:secondes) pendant laquelle les entrées de journal en double sont surveillées
    • duplicateLimit : nombre d'entrées en double qui doivent être enregistrées dans l'intervalle pour déclencher la limitation du débit
  4. Enregistrez les fichiers de configuration.

Pour en savoir plus, consultez la documentation sur les fichiers journaux Citrix StoreFront.

Table de mappage UDM

Champ du journal Mappage UDM Logique
OpcodeValue_label additional.fields Fusionné
Opcode_label additional.fields Fusionné
ThreadID_label additional.fields Fusionné
X-Citrix-Via_label additional.fields Fusionné
XCitrixGateway_label additional.fields Fusionné
keyword_label additional.fields Fusionné
_vulns extensions.vulns.vulnerabilities Fusionné
_intermediary intermediary Fusionné
_intermediary_controller intermediary Fusionné
_intermediary_hypervisor intermediary Fusionné
_intermediary_storefront intermediary Fusionné
description metadata.description Mappage direct
EventTime metadata.event_timestamp Analysé en tant que RFC 3339
Machine.CreatedDate metadata.event_timestamp Analysé en tant que RFC 3339
Machine.LastDeregisteredDate metadata.event_timestamp Analysé en tant que RFC 3339
Machine.ModifiedDate metadata.event_timestamp Analysé en tant que RFC 3339
Machine.PoweredOnDate metadata.event_timestamp Analysé en tant que RFC 3339
Machine.RegistrationStateChangeDate metadata.event_timestamp Analysé en tant que RFC 3339
Session.EndDate metadata.event_timestamp Analysé en tant que RFC 3339
Session.StartDate metadata.event_timestamp Analysé en tant que RFC 3339
event_date metadata.event_timestamp Analysé en tant que RFC 3339
has_principal metadata.event_type Mapped: true → NETWORK_CONNECTION, true → STATUS_UPDATE
EventID metadata.product_event_type Mappage direct
RecordNumber metadata.product_log_id Mappage direct
Machine.AgentVersion metadata.product_version Renommé/Mappé
_network network Renommé/Mappé
_principal principal Renommé/Mappé
Channel_label security_result.about.resource.attribute.labels Fusionné
severity security_result.severity Mappé : (?i)Info → INFORMATIONAL, (?i)Error → ERROR, (?i)Warning → MEDIUM
SeverityValue security_result.severity_details Mappage direct
Connection.ConnectedViaHostName src.hostname Mappage direct
_target target Renommé/Mappé
N/A extensions.auth.auth_details Constante : ACTIVE
N/A extensions.auth.type Constante : MACHINE
N/A metadata.event_type Constante : GENERIC_EVENT
N/A metadata.product_name Constante : Monitor Service OData
N/A metadata.vendor_name Constante : Citrix
N/A security_result.severity Constante : INFORMATIONAL
OpcodeValue","X-Citrix-Via","ThreadID","XCitrixGateway","Opcode","Keywords", "OpcodeValue additional.fields Mappé à partir du journal des modifications
X-Citrix-Via-VIP _target.ip Mappé à partir du journal des modifications
Remoteadresse taregt.ip Mappé à partir du journal des modifications
invalid_X-Forwarded-For _principal.ip Mappé à partir du journal des modifications
Task _target.resource.type Mappé à partir du journal des modifications
Hostname _principal.hostname Mappé à partir du journal des modifications
SourceModuleName target.resource.name Mappé à partir du journal des modifications
SourceModuleType _principal.resource.attribute.labels Mappé à partir du journal des modifications
Machine.AssociatedUserUPNs target.group.email_addresses Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications de cet analyseur

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