Collecter les journaux d'événements Palo Alto Cortex XDR

Compatible avec :

Ce document explique comment ingérer les journaux d'événements Palo Alto Cortex XDR dans Google Security Operations à l'aide de Google Cloud Storage. L'analyseur extrait les données d'événements de sécurité des journaux JSON Palo Alto Networks Cortex XDR. Il normalise les données dans le modèle de données unifié (UDM) en mappant les champs, en convertissant les types de données et en enrichissant les événements avec des métadonnées telles que le fournisseur, le produit et les types d'événements en fonction de la logique conditionnelle liée aux champs event_type et event_sub_type. Il gère également les connexions réseau, les opérations sur les fichiers et le registre, les informations sur les processus et l'activité des utilisateurs.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Google Cloud Storage est configuré et actif dans votre environnement Google Cloud .
  • Accès privilégié à Google Cloud et autorisations appropriées
  • Accès privilégié à Palo Alto Cortex XDR

Créer un bucket de stockage Google Cloud

  1. Connectez-vous à la console Google Cloud .
  2. Accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  3. Cliquez sur Créer.

  4. Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Après chacune de ces étapes, cliquez sur Continuer pour passer à l'étape suivante :

  5. Dans la section Premiers pas, procédez comme suit : * Saisissez un nom unique qui répond aux exigences de dénomination des buckets (par exemple, cortex-xdr-events-googlesecops). * Pour activer l'espace de noms hiérarchique, cliquez sur la flèche d'expansion pour développer la section Optimiser pour les charges de travail orientées fichiers et à forte intensité de données, puis sélectionnez Activer l'espace de noms hiérarchique sur ce bucket.

    Note: You can't enable hierarchical namespace in an existing bucket.
    
    * To add a bucket label, click the expander arrow to expand the **Labels** section.
    * Click **Add label** and specify a key and a value for your label.
    
  6. Dans la section Choisir l'emplacement de stockage de vos données, procédez comme suit : * Sélectionnez un type d'emplacement. * Utilisez le menu du type d'emplacement pour sélectionner un emplacement où les données d'objets de votre bucket seront stockées de manière permanente.

    Note: If you select the **dual-region** location type, you can also choose to enable **turbo replication** by selecting the relevant checkbox.
    
    * To set up cross-bucket replication, expand the **Set up cross-bucket replication** section.
    
  7. Dans la section Choisir une classe de stockage pour vos données, sélectionnez une classe de stockage par défaut pour le bucket, ou bien classe automatique pour une gestion automatique des classes de stockage des données de votre bucket.

  8. Dans la section Choisir comment contrôler l'accès aux objets, sélectionnez non pour appliquer la protection contre l'accès public, puis sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.

  9. Dans la section Choisir comment protéger les données d'objet, procédez comme suit : * Sélectionnez l'une des options sous Protection des données que vous souhaitez définir pour votre bucket. * Pour choisir comment vos données d'objet seront chiffrées, cliquez sur la flèche d'expansion Chiffrement des données, puis sélectionnez une méthode de chiffrement des données.

  10. Cliquez sur Créer.

Configurer le transfert d'événements Cortex XDR

  1. Connectez-vous à l'interface utilisateur Web Cortex XDR.
  2. Accédez à Paramètres > Configurations > Gestion des données > Transfert d'événements.
  3. Activez les licences dans la section Activation.
  4. Activez l'envoi d'événements GB pour exporter les journaux analysés pour Cortex XDR Pro par Go vers un SIEM externe à des fins de stockage.
  5. Activez Endpoints Event Forwarding pour exporter les données brutes des points de terminaison pour Cortex XDR Pro EP et Cloud Endpoints.
  6. Enregistrez la sélection.
  7. Copiez le chemin de stockage affiché.
  8. Générez et téléchargez le jeton Web JSON du compte de service, qui contient la clé d'accès.
  9. Enregistrez-le dans un emplacement sécurisé.

Configurer Google Cloud Secret Manager

  1. Connectez-vous à GCP.
  2. Accédez à la page Secret Manager.
  3. Si c'est la première fois, vous serez invité à activer l'API Secret Manager.
  4. Créez un secret appelé EVENT_FRWD_CRTX_KEY et copiez le contenu du fichier JSON xdr_sa_key.json que vous avez téléchargé en tant que valeur du secret.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux d'événements PANW Cortex XDR).
  5. Sélectionnez Google Cloud Storage comme Type de source.
  6. Sélectionnez Événements Palo Alto Cortex XDR comme Type de journal.
  7. Cliquez sur Obtenir un compte de service en tant que compte de service Chronicle.
  8. Cliquez sur Suivant.
  9. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URI du bucket Storage : URL du bucket Storage (par exemple, gs://cortex-xdr-events-chronicle). Google Cloud
    • URI Is A (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
  10. Cliquez sur Suivant.

  11. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

  12. Une fois le flux créé, recherchez-le dans la liste Flux, puis cliquez sur les trois points d'action à droite de la ligne.

  13. Sélectionnez Désactiver le flux.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • URI du bucket Storage : URL du bucket Storage (par exemple, gs://cortex-xdr-events-chronicle). Google Cloud
  • URI Is A (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
  • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Configurer l'accès JSON secret à Cloud Storage

  1. Connectez-vous à GCP.
  2. Accédez à la page Secret Manager.
  3. Sélectionnez le secret EVENT_FRWD_CRTX_KEY.
  4. Accédez à l'onglet Autorisations.
  5. Accordez l'accès Administrateur d'objets Storage et Lecteur des anciens buckets Storage au bucket cortex-xdr-events-chronicle créé précédemment.

Configurer les autorisations Google SecOps pour Cloud Storage

  1. Accédez à IAM et administration> IAM.
  2. Recherchez le compte de service Chronicle.
  3. Accordez l'accès Lecteur des objets Storage (roles/storage.objectViewer) au bucket cortex-xdr-events-chronicle créé précédemment.

Configurer l'ingestion des journaux d'événements PANW Cortex XDR dans Project Cloud Storage

  1. Dans Google Cloud, accédez à API et services > Bibliothèque.
  2. Activez les API Cloud Run et Artifact Registry.
  3. Ouvrez Cloud Shell en cliquant sur l'icône dans la barre de navigation supérieure.
  4. Téléchargez un code personnalisé à l'aide de la commande suivante :

    git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.git
    
  5. Accédez au répertoire en exécutant la commande suivante :

    cd google-cloud-cortex-chronicle/
    
  6. Ouvrez le fichier env.properties avec un éditeur tel que vi.

  7. Fournissez les informations de configuration suivantes :

    REGION=us-central1 # Update according to your project region
    REPO_NAME=panw-chronicle
    IMAGE_NAME=sync_cortex_bucket
    GCP_PROJECT_ID=chrxxxxxxxxx # Update according to your project ID
    JOB_NAME=cloud-run-job-cortex-data-sync # The Cloud Job name 
    ROJECT_NUMBER=80xxxxx9 # Update according to your project number
    # JOB ENV VARIABLES
    SRC_BUCKET=xdr-us-xxxxx-event-forwarding # Update with the Cortex XDR GCS bucket name
    DEST_BUCKET=cortex-xdr-events-chronicle # Update with the GCS name of the bucket you created
    SECRET_NAME=EVENT_FRWD_CRTX_KEY # Need to match the secret you created
    JOB_SCHEDULE_MINS=30
    
  8. Accordez les autorisations nécessaires au script deploy.sh :

    chmod 744 deploy.sh
    
  9. Exécutez le script deploy.sh :

    ./deploy.sh
    
  10. Identifiez le compte de service Cloud Jobs utilisé à partir de la sortie du script.

  11. Accordez au compte de service Cloud Job l'autorisation Ancêtre secret Secret Manager pour accéder au secret que vous avez créé précédemment (EVENT_FRWD_CRTX_KEY dans notre exemple).

  12. Accédez à Secret Manager > EVENT_FRWD_CRTX_KEY (secret) > Autorisations.

  13. Dans la plate-forme Google SecOps, accédez à Paramètres du SIEM > Flux > Nom du flux d'événements XDR > Activer le flux.

Table de mappage UDM

Champ de journal Mappage UDM Logique
action_file_path target.file.full_path Mappé directement
action_file_size target.file.size Mappé directement et converti en entier non signé
action_local_ip principal.ip Mappées directement et fusionnées avec d'autres adresses IP
action_local_port principal.port Mappé directement et converti en entier
action_module_path target.process.file.full_path Mappé directement
action_network_connection_id network.session_id Mappé directement
action_network_protocol network.ip_protocol Renommé protocol_number_src, analysé à l'aide de parse_ip_protocol.include et mappé à network.ip_protocol
action_process_image_command_line target.process.command_line Mappé directement
action_process_image_md5 target.process.file.md5 Mappé directement
action_process_image_path target.process.file.full_path Mappé directement
action_process_image_sha256 target.process.file.sha256 Mappé directement
action_process_os_pid target.process.pid Mappé directement et converti en chaîne
action_process_user_sid target.user.windows_sid Mappé directement
action_process_username target.user.userid, target.administrative_domain Mises en minuscules, analysées pour le domaine et l'utilisateur, et mappées en conséquence
action_registry_data target.registry.registry_value_data Mappé directement
action_registry_key_name target.registry.registry_key Mappé directement
action_registry_value_name target.registry.registry_value_name Mappé directement
action_remote_ip target.ip Mappées directement et fusionnées avec d'autres adresses IP
action_remote_port target.port Mappé directement et converti en entier
action_total_download network.received_bytes Mappé directement et converti en entier non signé
action_total_upload network.sent_bytes Mappé directement et converti en entier non signé
agent_hostname principal.hostname, observer.hostname En minuscules et mappé
agent_ip_addresses observer.ip Analysées au format JSON, divisées en adresses IP individuelles et fusionnées
agent_os_sub_type target.platform_version Mappé directement
event_id metadata.product_log_id Mappé directement
event_sub_type metadata.product_event_type Converti en chaîne et utilisé pour le mappage conditionnel de metadata.event_type et metadata.product_event_type
event_timestamp metadata.event_timestamp, timestamp Converti en chaîne, analysé en tant que code temporel UNIX_MS et mappé
event_type metadata.event_type Converti en chaîne et utilisé pour le mappage conditionnel de metadata.event_type et metadata.product_event_type
os_actor_process_command_line principal.process.command_line Mappé directement
os_actor_process_image_md5 principal.process.file.md5 Mappé directement
os_actor_process_image_path principal.process.file.full_path Mappé directement
os_actor_process_image_sha256 principal.process.file.sha256 Mappé directement
os_actor_process_instance_id principal.process.product_specific_process_id Préfixé par "PAN:" et mappé
os_actor_process_os_pid principal.process.pid Converti en chaîne et mappé
os_actor_primary_user_sid principal.user.windows_sid Mappé s'il commence par "S-" ou "s-"
os_actor_primary_username principal.user.userid, principal.administrative_domain Mises en minuscules, analysées pour le domaine et l'utilisateur, et mappées en conséquence
_action security_result.action Fusionné dans _security_result, puis mappé
metadata.log_type metadata.log_type Codé en dur sur "PAN_CORTEX_XDR_EVENTS"
metadata.product_name metadata.product_name Codé en dur sur "Cortex XDR"
metadata.vendor_name metadata.vendor_name Codé en dur sur "PAN"
target.platform target.platform Défini sur "WINDOWS" si agent_os_sub_type contient "Windows"

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