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 de l'ingestion. Enregistrez-le 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 :
- Trouvez le fichier
config.yaml. Il se trouve généralement 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,viou le Bloc-notes).
- Trouvez le fichier
Modifiez le fichier
config.yamlcomme 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_labelsRemplacez 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.jsonen 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-agentPour 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 du message keep-alive 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 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 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 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é sur 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 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 égal à 1, target.platform est défini sur WINDOWS. Si osType est égal à 2, target.platform est défini sur MAC. Si osType est égal à 4, target.platform est défini sur LINUX. Si osType est égal à 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 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 égal à 0, security_result.severity_details est défini sur UNKNOWN_SEVERITY. Sinon, il est mappé sur security_result.severity selon 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 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éfinie sur STATUS_UPDATE par défaut. Définie sur EMAIL_TRANSACTION si eventType est Management Audit Logs. Définie sur 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éfinie sur Palo Alto Networks. Définie sur Cortex XDR. Définie sur PAN_EDR. Définie sur NETWORK_SUSPICIOUS si eventType est XDR Analytics BIOC ou Behavioral Threat, ou si desc est Behavioral Threat. |
Journal des modifications
Afficher le journal des modifications pour ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.