Collecter les journaux Palo Alto Networks Traps

Compatible avec :

Ce document explique comment collecter les journaux Palo Alto Networks Traps dans Google Security Operations à l'aide de Bindplane. L'analyseur gère les journaux aux formats CSV et clé-valeur, et les transforme en UDM. Il utilise l'analyse grok et CSV pour extraire les champs, effectue une logique conditionnelle basée sur des messages de journaux ou des valeurs de champ spécifiques pour mapper les champs UDM et gère différents types d'événements tels que les mises à jour d'état, les analyses réseau et les créations de processus.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec systemd.
  • Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
  • Assurez-vous de disposer d'un accès privilégié à Cortex XDR.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du 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

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
    

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Ressources d'installation supplémentaires

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    1. Recherchez 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:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: PAN_EDR
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.

  4. Remplacez <customer_id> par le numéro client réel.

  5. Mettez à jour /path/to/ingestion-authentication-file.json en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.

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

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

    sudo systemctl restart bindplane-agent
    
  • Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer Palo Alto Networks Traps

  1. Connectez-vous à la console Cortex XDR ESM.
  2. Sélectionnez Paramètres > ESM > Syslog.
  3. Cochez la case Activer syslog.
  4. Fournissez les informations de configuration suivantes :
    • Serveur Syslog : saisissez l'adresse IP de l'agent Bindplane.
    • Port Syslog : saisissez le numéro de port configuré dans Bindplane (par exemple, 514).
    • Protocole Syslog : sélectionnez CEF.
    • Définissez Délai avant expiration de la connexion persistante sur 0.
    • Protocole de communication : sélectionnez UDP.
  5. Dans la section Événements de sécurité, cochez les cases suivantes :
    • Événement de prévention
    • Événement de notification
    • Après un événement de détection
  6. Cliquez sur Vérifier la connectivité > Enregistrer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
agentId event.idm.read_only_udm.additional.fields.value.string_value La valeur de agentId du journal brut est mappée au champ string_value dans une structure imbriquée sous additional.fields. La valeur key de ce champ est définie sur Agent ID.
agentIp event.idm.read_only_udm.target.ip La valeur de agentIp du journal brut est mappée au champ target.ip.
cat event.idm.read_only_udm.security_result.rule_name La valeur de cat du journal brut est mappée au champ security_result.rule_name.
class event.idm.read_only_udm.security_result.category_details Utilisé conjointement avec subClass pour remplir security_result.category_details au format class: subClass.
cs1 event.idm.read_only_udm.principal.application, event.idm.read_only_udm.principal.user.email_addresses Si cs1Label est défini sur email et que cs1 est une adresse e-mail valide, il est mappé sur principal.user.email_addresses. Si cs1Label est Initiated by, il est mappé sur principal.application.
cs2 event.idm.read_only_udm.principal.process.command_line, event.idm.read_only_udm.security_result.description Si cs2Label est subtype, il est mappé sur security_result.description. Si cs2Label est Initiator CMD, il est mappé sur principal.process.command_line.
cs3 event.idm.read_only_udm.security_result.action_details Si cs3Label est result, il est mappé sur security_result.action_details.
customerId event.idm.read_only_udm.additional.fields.value.string_value La valeur de customerId du journal brut est mappée au champ string_value dans une structure imbriquée sous additional.fields. La valeur key de ce champ est définie sur Customer ID.
date_time event.idm.read_only_udm.metadata.event_timestamp.seconds Analysé et converti en code temporel, puis mappé à metadata.event_timestamp.seconds.
desc event.idm.read_only_udm.metadata.description La valeur de desc du journal brut est mappée au champ metadata.description.
deviceName event.idm.read_only_udm.target.hostname La valeur de deviceName du journal brut est mappée au champ target.hostname.
email_receiver event.idm.read_only_udm.network.email.to Extrait du champ msg s'il contient une adresse e-mail et mappé à network.email.to.
endpoint_desc event.idm.read_only_udm.target.resource.attribute.labels.value Dérivé de isEndpoint : Yes, host is an endpoint. si isEndpoint est défini sur 1, No, host is not an endpoint si isEndpoint est défini sur 0. La valeur de key est définie sur Is Endpoint.
eventType event.idm.read_only_udm.metadata.product_event_type, event.idm.read_only_udm.metadata.event_type La valeur de eventType du journal brut est mappée au champ metadata.product_event_type. Également utilisé pour dériver metadata.event_type en fonction de sa valeur (par exemple, Management Audit Logs donne EMAIL_TRANSACTION, XDR Analytics BIOC ou Behavioral Threat donne SCAN_NETWORK).
facility event.idm.read_only_udm.additional.fields.value.string_value La valeur de facility du journal brut est mappée au champ string_value dans une structure imbriquée sous additional.fields. La valeur key de ce champ est définie sur Facility.
fileHash event.idm.read_only_udm.principal.process.file.sha256 La valeur de fileHash du journal brut, convertie en minuscules, est mappée au champ principal.process.file.sha256.
filePath event.idm.read_only_udm.principal.process.file.full_path La valeur de filePath du journal brut est mappée au champ principal.process.file.full_path.
friendlyName event.idm.read_only_udm.metadata.description La valeur de friendlyName du journal brut est mappée au champ metadata.description.
interm_ip event.idm.read_only_udm.intermediary.ip La valeur de interm_ip du journal brut est mappée au champ intermediary.ip.
isEndpoint event.idm.read_only_udm.target.resource.attribute.labels.value Utilisé pour dériver target.resource.attribute.labels.value.
isVdi event.idm.read_only_udm.target.resource.resource_type Si isVdi est défini sur 1, target.resource.resource_type est défini sur VIRTUAL_MACHINE.
msg event.idm.read_only_udm.security_result.summary La valeur de msg du journal brut est mappée au champ security_result.summary. Également utilisé pour extraire email_receiver.
msgTextEn event.idm.read_only_udm.security_result.description La valeur de msgTextEn du journal brut est mappée au champ security_result.description.
osType event.idm.read_only_udm.target.platform, event.idm.read_only_udm.target.resource.attribute.labels.value Si osType est défini sur 1, target.platform est défini sur WINDOWS. Si osType est défini sur 2, target.platform est défini sur MAC. Si osType est défini sur 4, target.platform est défini sur LINUX. Si osType est défini sur 3, sa valeur est mappée sur target.resource.attribute.labels.value avec key OS.
osVersion event.idm.read_only_udm.target.platform_version La valeur de osVersion du journal brut est mappée au champ target.platform_version.
product_version event.idm.read_only_udm.metadata.product_version La valeur de product_version du journal brut est mappée au champ metadata.product_version.
proto event.idm.read_only_udm.network.ip_protocol Si proto est défini sur udp, network.ip_protocol est défini sur UDP.
recordType event.idm.read_only_udm.additional.fields.value.string_value La valeur de recordType du journal brut est mappée au champ string_value dans une structure imbriquée sous additional.fields. La valeur key de ce champ est définie sur Record Type.
regionId event.idm.read_only_udm.principal.location.country_or_region Si regionId est défini sur 10, principal.location.country_or_region est défini sur Americas (N. Virginia). Si regionId est défini sur 70, principal.location.country_or_region est défini sur EMEA (Frankfurt).
request event.idm.read_only_udm.target.url La valeur de request du journal brut est mappée au champ target.url.
sec_category_details event.idm.read_only_udm.security_result.category_details La valeur de sec_category_details du journal brut est mappée au champ security_result.category_details.
sec_desc event.idm.read_only_udm.security_result.description La valeur de sec_desc du journal brut est mappée au champ security_result.description.
serverHost event.idm.read_only_udm.principal.hostname La valeur de serverHost du journal brut est mappée au champ principal.hostname.
severity event.idm.read_only_udm.security_result.severity Mappé sur security_result.severity avec la logique suivante : 2 -> CRITICAL, 3 -> ERROR, 4 -> MEDIUM, 5 -> LOW, 6 -> INFORMATIONAL.
severity_val event.idm.read_only_udm.security_result.severity, event.idm.read_only_udm.security_result.severity_details Si severity_val est défini sur 0, security_result.severity_details est défini sur UNKNOWN_SEVERITY. Sinon, il est mappé sur security_result.severity avec la logique suivante : 6 → FAIBLE, 8 → MOYEN, 9 → ÉLEVÉ.
shost event.idm.read_only_udm.principal.hostname La valeur de shost du journal brut est mappée au champ principal.hostname.
src_ip event.idm.read_only_udm.principal.ip La valeur de src_ip du journal brut est mappée au champ principal.ip.
subClass event.idm.read_only_udm.security_result.category_details Utilisé conjointement avec class pour remplir security_result.category_details.
suser event.idm.read_only_udm.principal.user.user_display_name La valeur de suser du journal brut, sans crochets, barres obliques inverses ni guillemets simples, est mappée au champ principal.user.user_display_name.
targetprocesscmd event.idm.read_only_udm.target.process.command_line La valeur de targetprocesscmd du journal brut est mappée au champ target.process.command_line.
targetprocessname event.idm.read_only_udm.target.application La valeur de targetprocessname du journal brut est mappée au champ target.application.
targetprocesssha256 event.idm.read_only_udm.target.process.file.sha256 La valeur de targetprocesssha256 du journal brut, convertie en minuscules, est mappée au champ target.process.file.sha256.
tenantname event.idm.read_only_udm.target.resource.attribute.labels.value La valeur de tenantname du journal brut est mappée au champ value dans une structure imbriquée sous target.resource.attribute.labels. La valeur key de ce champ est définie sur Tenant name.
event.idm.read_only_udm.metadata.event_type Défini sur STATUS_UPDATE par défaut. Définie sur EMAIL_TRANSACTION, si eventType est Management Audit Logs. SCAN_NETWORK si eventType est XDR Analytics BIOC ou Behavioral Threat, ou si desc est Behavioral Threat. Définie sur SCAN_PROCESS, si desc est Suspicious Process Creation. Définissez cet élément sur Palo Alto Networks. Définissez cet élément sur Cortex XDR. Définissez cet élément sur PAN_EDR. Définie sur NETWORK_SUSPICIOUS si eventType est XDR Analytics BIOC ou Behavioral Threat, ou si desc est Behavioral Threat.

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