Collecter les journaux Pulse Secure
Ce document explique comment collecter les journaux Pulse Secure à l'aide d'un transfert Google Security Operations.
Pour en savoir plus, consultez la section Présentation de l'ingestion de données dans Google Security Operations.
Un libellé d'ingestion identifie l'analyseur qui normalise les données de journal brutes au format UDM structuré. Les informations de ce document s'appliquent à l'analyseur avec le libellé d'ingestion PULSE_SECURE_VPN
.
Configurer le VPN Pulse Secure
Pour configurer le VPN Pulse Secure, procédez comme suit:
- Configurer le VPN Pulse Secure version 8.3R3 et antérieure
- Configurer le VPN Pulse Secure version 8.3R4 et ultérieure
Configurer le VPN Pulse Secure version 8.3R3 et antérieure
- Connectez-vous à la console Pulse Connect Secure.
- Dans la console Pulse Connect Secure, sélectionnez System (Système) > Log/monitoring (Journalisation/Surveillance) > Settings (Paramètres). Vous pouvez sélectionner Paramètres dans l'onglet Événements, Accès des utilisateurs ou Accès des administrateurs.
- Dans la section Sélectionner les événements à consigner, cochez toutes les cases correspondant aux événements.
- Dans la section Syslog servers (Serveurs Syslog), procédez comme suit :
- Dans le champ Server name/IP (Nom/Adresse IP du serveur), spécifiez l'adresse IP du forwarder Google Security Operations.
- Dans la liste Installation, sélectionnez LOCAL0. La liste Facility (Équipement) fournit huit équipements:
LOCAL0
àLOCAL7
. Vous pouvez utiliser l'un de ces paramètres pour mapper les installations sur votre serveur syslog. - Dans la liste Type, sélectionnez UDP ou TCP.
- Cliquez sur Ajouter.
- Facultatif: Pour ajouter plusieurs serveurs syslog pour les journaux d'événements, d'accès administrateur ou d'accès utilisateur, répétez les étapes 2 à 4.
- Cliquez sur Enregistrer les modifications.
- Pour vous assurer que le format de journal standard est défini par défaut, procédez comme suit :
- Ouvrez la console Pulse Connect Secure.
- Dans les onglets Événements, Accès utilisateur et Accès administrateur, définissez Filtres sur Standard.
- Si le filtre standard n'est pas défini comme filtre par défaut, cliquez sur Définir comme valeur par défaut.
- Cliquez sur Enregistrer.
Configurer le VPN Pulse Secure version 8.3R4 et ultérieure
- Dans la console Pulse Connect sécurisé, cliquez sur l'onglet Événements, Accès utilisateur ou Accès administrateur, puis définissez Filtres sur Nouveau filtre.
- Dans le champ Nom du filtre, saisissez un nom pour le filtre.
Dans la section Format d'exportation, sélectionnez Personnalisé, puis saisissez le format suivant dans le champ:
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
Cliquez sur Enregistrer.
Selon la version de votre appareil, procédez comme suit pour activer la configuration syslog:
- Activer la journalisation syslog sur le VPN Pulse Secure
- Activer la journalisation syslog sur Ivanti Connect Secure
Activer la journalisation syslog sur le VPN Pulse Secure
- Dans la console Pulse Connect Secure, sélectionnez System (Système) > Log/monitoring (Journal/Surveillance) > Settings (Paramètres). Vous pouvez sélectionner Paramètres dans l'onglet Événements, Accès des utilisateurs ou Accès des administrateurs.
- Dans la section Sélectionner les événements à consigner, cochez toutes les cases à cocher, à l'exception de celles pour Accès HTML5, Messages de contrôle d'admission et Requêtes non authentifiées.
- Dans le champ Serveur Syslog, saisissez des informations sur les serveurs Syslog.
- Dans la section Syslog servers (Serveurs Syslog), procédez comme suit :
- Dans le champ Server name/IP (Nom/Adresse IP du serveur), saisissez le nom du serveur ou l'adresse IP du transpondeur Google Security Operations.
- Dans la liste Installation, sélectionnez LOCAL0.
- Dans la liste Filter (Filtre), sélectionnez le filtre que vous avez créé précédemment.
- Cliquez sur Ajouter.
- Facultatif: Pour ajouter plusieurs serveurs syslog pour les journaux d'événements, d'accès administrateur ou d'accès utilisateur, répétez les étapes 2 à 4.
- Cliquez sur Enregistrer les modifications.
Activer la journalisation syslog sur Ivanti Connect Secure
- Dans la console Pulse Connect sécurisé, cliquez sur l'onglet Événements, Accès utilisateur ou Accès administrateur, puis sélectionnez Filtres.
- Cliquez sur l'onglet Nouveau filtre.
Dans la section Format d'exportation, sélectionnez Personnalisé, puis saisissez le format suivant dans le champ:
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
Cliquez sur Enregistrer.
Cliquez sur System (Système) > Log/monitoring (Journal/Surveillance), puis sélectionnez l'onglet Settings (Paramètres).
Dans le champ Taille maximale des journaux, spécifiez la taille maximale des journaux et sélectionnez les événements à consigner.
Spécifiez la configuration du serveur comme suit:
Dans le champ Server name/IP (Nom/Adresse IP du serveur), spécifiez le nom de domaine complet ou l'adresse IP du forwarder Google Security Operations pour le serveur syslog.
Si vous sélectionnez Transport Layer Security (TLS) dans la liste des types, le nom du serveur doit correspondre au CN dans le subjectDN du certificat obtenu auprès du serveur.
Dans la liste Facility (Équipement), sélectionnez un niveau d'équipement de serveur syslog.
Dans la liste Type, sélectionnez le type de connexion au serveur syslog comme UDP, TCP ou TLS. TLS utilise des protocoles cryptographiques pour assurer une communication sécurisée.
Si vous sélectionnez TLS, sélectionnez le certificat client installé à utiliser pour authentifier le serveur syslog. Les certificats client sont définis dans la fenêtre Configuration > Certificats > Certificats d'authentification client. Les certificats client doivent être installés sur l'appareil avant de pouvoir être utilisés. Contactez votre autorité de certification pour obtenir le certificat.
Dans la liste Filtre, sélectionnez Personnalisé.
Cliquez sur Ajouter.
Configurer le transfert Google Security Operations pour ingérer les journaux Pulse Secure
- Sélectionnez Paramètres du SIEM > Transferts.
- Cliquez sur Ajouter un forwarder.
- Dans le champ Nom du forwarder, saisissez un nom unique pour le forwarder.
- Cliquez sur Envoyer, puis sur Confirmer. Le forwarder est ajouté, et la fenêtre Ajouter une configuration de collecteur s'affiche.
- Dans le champ Nom du collecteur, saisissez un nom unique pour le collecteur.
- Sélectionnez Pulse Secure comme Type de journal.
- Sélectionnez Syslog comme type de collecteur.
- Configurez les paramètres d'entrée obligatoires suivants :
- Protocole: spécifiez le protocole de connexion utilisé par le collecteur pour écouter les données syslog.
- Address (Adresse) : spécifiez l'adresse IP ou le nom d'hôte cible où le collecteur réside et écoute les données syslog.
- Port: spécifiez le port cible sur lequel se trouve le collecteur et qui écoute les données syslog.
- Cliquez sur Envoyer.
Pour en savoir plus sur les transferts Google Security Operations, consultez Gérer les configurations de transfert via l'interface utilisateur de Google Security Operations.
Si vous rencontrez des problèmes lors de la création de transmetteurs, contactez l'assistance Google Security Operations.
Référence de mappage de champ
Cet analyseur extrait des champs des journaux VPN Pulse Secure, et gère à la fois les formats Windows Event Logs et syslog. Il normalise les différentes structures de journaux dans un format commun, en catégorisant les événements tels que les connexions, les déconnexions, les connexions et les modifications de règles, en les enrichissant de données contextuelles telles que les agents utilisateur, les adresses IP et les codes temporels.
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
action | security_result.action_details |
Mappé directement à partir du champ action . |
application | principal.application |
Mappé directement à partir du champ application . |
bytes_read | network.received_bytes |
Mappé directement à partir du champ bytes_read et converti en entier non signé. |
bytes_written | network.sent_bytes |
Mappé directement à partir du champ bytes_written et converti en entier non signé. |
client_host | principal.hostname , principal.asset.hostname |
Mappé directement à partir du champ client_host . |
cmd | principal.process.command_line |
Mappé directement à partir du champ cmd . |
connection_status | security_result.detection_fields.value.string_value |
Mappé directement à partir du champ connection_status . |
data_time | metadata.event_timestamp.seconds |
Extrait du champ data_time à l'aide de différents formats de code temporel (MM-dd-aaaa HH:mm:ss Z, RFC 3339, ISO8601, MMM d HH:mm:ss, MMM d HH:mm:ss). |
devname | principal.hostname , principal.asset.hostname |
Mappé directement à partir du champ devname . |
dstip | target.ip , target.asset.ip |
Mappé directement à partir du champ dstip . |
dstport | target.port |
Mappé directement à partir du champ dstport et converti en entier. |
dstcountry | target.location.country_or_region |
Mappé directement à partir du champ dstcountry s'il n'est pas défini sur "Réservé" ou vide. |
duration | network.session_duration.seconds |
Mappé directement à partir du champ duration et converti en entier. |
dvc | intermediary.hostname ou intermediary.ip |
Si le champ dvc peut être converti en adresse IP, il est mappé sur intermediary.ip . Sinon, il est mappé sur intermediary.hostname . |
dvc_hostname | intermediary.hostname , principal.hostname , principal.asset.hostname ou intermediary.ip , principal.ip , principal.asset.ip |
Si le champ dvc_hostname peut être converti en adresse IP, il est mappé sur les champs IP respectifs. Sinon, il est mappé sur les champs de nom d'hôte respectifs. |
event_type | metadata.product_event_type |
Mappé directement à partir du champ event_type . |
failure_reason | security_result.description |
Mappé directement à partir du champ failure_reason . Si le message contient "because host" (en raison de l'hôte), le texte "host" est ajouté au début du motif d'échec. |
has_principal | event.idm.read_only_udm.principal (présence) |
Définissez cette valeur sur "true" si des champs principaux sont renseignés, sinon sur "false". Dérivé par la logique de l'analyseur. |
has_target | event.idm.read_only_udm.target (présence) |
Définissez cette valeur sur "true" si des champs cibles sont renseignés, sinon sur "false". Dérivé par la logique de l'analyseur. |
has_target_user | event.idm.read_only_udm.target.user.userid (présence) |
Défini sur "true" si target.user.userid est renseigné, sinon sur "false". Dérivé de la logique de l'analyseur. |
host_ip | principal.ip , principal.asset.ip |
Mappé directement à partir du champ host_ip . |
host_mac | principal.mac |
Mappé directement à partir du champ host_mac , en remplaçant les traits d'union par des deux-points. |
http_method | network.http.method |
Mappé directement à partir du champ http_method . |
http_response | network.http.response_code |
Mappé directement à partir du champ http_response et converti en entier. |
info_desc | about.labels.value |
Mappé directement à partir du champ info_desc . |
ip_new | target.ip , target.asset.ip |
Mappé directement à partir du champ ip_new . |
level | security_result.severity , security_result.severity_details |
security_result.severity est dérivé du champ level ("error"/"warning" -> HIGH, "notice" -> MEDIUM, "information"/"info" -> LOW). La valeur brute de level est également mappée sur security_result.severity_details . |
logid | metadata.product_log_id |
Mappé directement à partir du champ logid . |
locip | principal.ip , principal.asset.ip |
Mappé directement à partir du champ locip . |
message | metadata.description |
Permet d'extraire différents champs à l'aide de filtres grok et kv. Si le message contient "EventID", il est traité comme un journal des événements Windows. |
message_info | metadata.description |
Mappé directement sur metadata.description s'il n'est pas utilisé dans des modèles grok plus spécifiques. |
Message | metadata.product_event_type , metadata.description |
Si le champ msg est présent, le type de produit est extrait et mappé sur metadata.product_event_type , et le message restant est mappé sur metadata.description . |
msg_hostname | principal.hostname , principal.asset.hostname |
Mappé directement à partir du champ msg_hostname . |
msg_ip | principal.ip , principal.asset.ip |
Mappé directement à partir du champ msg_ip . |
msg_user_agent | network.http.user_agent , network.http.parsed_user_agent , metadata.product_version |
La chaîne user-agent est mappée sur network.http.user_agent , l'user-agent analysé est mappé sur network.http.parsed_user_agent et la version du produit (le cas échéant) est mappée sur metadata.product_version . |
network_duration | network.session_duration.seconds |
Mappé directement à partir du champ network_duration et converti en entier. |
policyid | security_result.rule_id |
Mappé directement à partir du champ policyid . |
policyname | security_result.rule_name |
Mappé directement à partir du champ policyname . |
policytype | security_result.rule_type |
Mappé directement à partir du champ policytype . |
priority_code | about.labels.value |
Mappé directement à partir du champ priority_code et également utilisé pour dériver about.labels.value pour la clé "Sévérité" (voir Logique). |
prod_name | metadata.product_name |
Mappé directement à partir du champ prod_name . |
product_type | metadata.product_event_type |
Mappé directement à partir du champ product_type . |
product_version | metadata.product_version |
Mappé directement à partir du champ product_version . |
proto | network.ip_protocol |
Mappé sur network.ip_protocol après avoir été converti en nom de protocole IP à l'aide d'une recherche. |
pwd | principal.process.file.full_path |
Mappé directement à partir du champ pwd . |
domaine | principal.group.attribute.labels.value |
Mappé directement à partir du champ realm . |
rcvdbyte | network.received_bytes |
Mappé directement à partir du champ rcvdbyte et converti en entier non signé. |
remip | target.ip |
Mappé directement à partir du champ remip . |
resource_name | target.resource.name |
Mappé directement à partir du champ resource_name après suppression des espaces blancs de début et de fin, ainsi que des traits d'union. |
resource_status | security_result.description |
Mappé directement à partir du champ resource_status . |
resource_user_group | principal.user.group_identifiers |
Mappé directement à partir du champ resource_user_group . |
resource_user_name | principal.user.userid |
Mappé directement à partir du champ resource_user_name . |
rôles | principal.user.group_identifiers |
Mappé directement à partir du champ roles . |
sentbyte | network.sent_bytes |
Mappé directement à partir du champ sentbyte et converti en entier non signé. |
session_id | network.session_id |
Mappé directement à partir du champ session_id . |
sessionid | network.session_id |
Mappé directement à partir du champ sessionid . |
srcip | principal.ip , principal.asset.ip |
Mappé directement à partir du champ srcip . |
srcport | principal.port |
Mappé directement à partir du champ srcport et converti en entier. |
srccountry | principal.location.country_or_region |
Mappé directement à partir du champ srccountry s'il n'est pas défini sur "Réservé" ou vide. |
subtype | metadata.product_event_type |
À utiliser conjointement avec type pour former metadata.product_event_type . |
target_file | target.file.full_path |
Mappé directement à partir du champ target_file . |
target_host | target.hostname , target.asset.hostname |
Mappé directement à partir du champ target_host . |
target_ip | target.ip , target.asset.ip |
Mappé directement à partir du champ target_ip . |
target_port | target.port |
Mappé directement à partir du champ target_port et converti en entier. |
target_url | target.url |
Mappé directement à partir du champ target_url . |
temps | metadata.event_timestamp.seconds |
Extrait du champ time au format aaaa-MM-jj HH:mm:ss. |
type | metadata.product_event_type |
À utiliser conjointement avec subtype pour former metadata.product_event_type . |
u_event_source_ip | principal.ip , principal.asset.ip ou target.ip |
Si target_ip ou target_host sont présents, u_event_source_ip est mappé sur principal.ip et principal.asset.ip . Sinon, si target_ip , target_host et target_url sont tous vides, u_event_source_ip est mappé sur target.ip . |
u_observer_ip | observer.ip |
Mappé directement à partir du champ u_observer_ip . |
u_prin_ip | principal.ip , principal.asset.ip |
Mappé directement à partir du champ u_prin_ip . |
utilisateur | target.user.userid |
Mappé directement à partir du champ user . |
user_agent | network.http.user_agent , network.http.parsed_user_agent |
La chaîne user-agent est mappée sur network.http.user_agent , et l'user-agent analysé est mappé sur network.http.parsed_user_agent . |
user_group_identifier | target.user.group_identifiers ou principal.user.group_identifiers |
Mappé sur target.user.group_identifiers dans la plupart des cas. Mappé sur principal.user.group_identifiers dans les événements de modification d'adresse IP (USER_UNCATEGORIZED) et de restrictions de domaine. |
user_ip | principal.ip , principal.asset.ip |
Mappé directement à partir du champ user_ip . Si elle est vide et que u_event_source_ip ne l'est pas, elle prend la valeur de u_event_source_ip . |
nom d'utilisateur | principal.user.userid ou target.user.userid |
Mappé sur principal.user.userid dans la plupart des cas. Mappé sur target.user.userid dans certains scénarios spécifiques (par exemple, lorsque detect_user_logout_failed est défini sur "false" et detect_policy_change_failed sur "false"). |
username_removed | target.user.userid |
Mappé directement à partir du champ username_removed . |
vd | principal.administrative_domain |
Mappé directement à partir du champ vd . |
metadata.vendor_name
, metadata.product_name
, metadata.event_type
, metadata.log_type
, network.ip_protocol
, security_result.action
, security_result.severity
et extensions.auth.type
sont dérivés ou définis par la logique de l'analyseur en fonction des conditions décrites dans la colonne "Logique".
Modifications
2024-05-27
- Mappage de "observer_hostname" sur "observer.hostname".
- Lorsque "dvc_hostname" est une adresse IP valide, il est mappé sur "principal.ip", sinon sur "principal.hostname".
- Mappage de "priority_code", "Syslog_version" et "info_desc" sur "about.labels".
- "prod_name" a été mappé sur "metadata.product_event_type".
2024-04-16
- Ajout d'un nouveau format GROK pour analyser un nouveau format de journaux SYSLOG.
- Mappage de "connection_status" sur "security_result.detection_fields".
2024-02-26
- Ajout d'un bloc "kv" pour analyser les données clé-valeur.
- "username" a été mappé sur "target.user.userid".
- Ajout d'une vérification conditionnelle pour "message_info".
- Mappage de "u_prin_ip" sur "principal.ip".
- Mappage de "u_observer_ip" sur "observer.ip".
2023-11-07
- Correction de bug:
- Modification de la mise en correspondance de "observer_host" de "observer.hostname" à "additional.fields".
2023-08-19
- Ajout d'un modèle Grok pour analyser les journaux défaillants.
2023-05-26
- Ajout d'un modèle Grok pour prendre en charge les nouveaux journaux syslog.
2023-01-06
- Modification de grok pour analyser "product_type" et mappage sur "metadata.product_event_type".
2022-10-25
- Ajout de nouveaux modèles Grok pour "message_info" afin d'extraire le session_id.
- Mappage de "session_id" sur "network.session_id".
- Modification de target.ip en principal.ip lorsque detect_policy_change_failed est défini sur "false".
- Modification de target.mac en principal.mac lorsque detect_policy_change_failed est défini sur "false".
2022-10-12
- Amélioration : ajout de mappages pour les champs suivants :
- Extraction de la valeur de l'adresse IP du champ "msg" et mappage sur "principal.ip".
- Extraction de la valeur du nom d'hôte du champ "msg" et mappage sur "principal.hostname".
- "user" a été mappé sur "target.user.userid".
- Mappage de "realm" sur "principal.group.attribute.labels".
- Mappage de "roles" sur "principal.user.group_identifiers".
- Valeur modifiée pour "metadata.event_type", de "GENERIC_EVENT" à "USER_UNCATEGORIZED".
2022-10-03
- Amélioration : analyse des journaux contenant "sudo".
- Prise en charge de nouveaux formats de journaux de type paire clé-valeur.
2022-07-01
- Amélioration : nouvel événement généré pour l'ID d'événement : 4624
- Modification de metadata.event_type de "GENERIC_EVENT" en "STATUS_UPDATE" ou "NETWORK_CONNECTION" lorsque "principal.ip", "target.ip" ou "principal.hostname" ne sont pas nuls.
2022-04-13
- Amélioration : ajout de mises en correspondance pour les nouveaux champs dans le type d'événement GENERIC_EVENT :
- user_ip à event.idm.read_only_udm.principal.ip.
- user_group_identifier à event.idm.read_only_udm.target.user.group_identifiers.
- Horodatage modifié dans tous les types d'événements pour inclure le fuseau horaire.
- Modification des champs user_ip et target_ip pour les types d'événements GENERIC et NETWORK_CONNECTION.