Collecter les journaux Palo Alto Networks Traps
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
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
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- 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. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
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
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.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
- Connectez-vous à la console Cortex XDR ESM.
- Sélectionnez Paramètres > ESM > Syslog.
- Cochez la case Activer syslog.
- 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.
- 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
- 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.