Collecter les journaux Pulse Secure

Compatible avec :

Ce document explique comment collecter les journaux Pulse Secure à l'aide d'un transmetteur Google Security Operations.

Pour en savoir plus, consultez la 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 journaux brutes au format UDM structuré. Les informations de ce document s'appliquent au parseur avec le libellé d'ingestion PULSE_SECURE_VPN.

Configurer le VPN Pulse Secure

Pour configurer le VPN Pulse Secure, procédez comme suit :

  • Configurer la version 8.3R3 ou antérieure de Pulse Secure VPN
  • Configurer Pulse Secure VPN version 8.3R4 ou ultérieure

Configurer la version 8.3R3 ou antérieure de Pulse Secure VPN

  1. Connectez-vous à la console Pulse Connect Secure.
  2. Dans la console Pulse Connect Secure, sélectionnez System > Log/monitoring > Settings (Système > Journal/Surveillance > Paramètres). Vous pouvez sélectionner Paramètres dans l'onglet Événements, Accès utilisateur ou Accès administrateur.
  3. Dans la section Sélectionner les événements à enregistrer, cochez toutes les cases correspondant aux événements.
  4. Dans la section Serveurs Syslog, procédez comme suit :
    1. Dans le champ Nom/Adresse IP du serveur, spécifiez l'adresse IP du redirecteur Google Security Operations.
    2. Dans la liste Établissement, sélectionnez LOCAL0. La liste Facility fournit huit établissements : LOCAL0 à LOCAL7. Vous pouvez utiliser l'un de ces paramètres pour mapper les installations sur votre serveur syslog.
    3. Dans la liste Type, sélectionnez UDP ou TCP.
  5. Cliquez sur Ajouter.
  6. 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.
  7. Cliquez sur Enregistrer les modifications.
  8. Pour vous assurer que le format de journal standard est défini par défaut, procédez comme suit :
    1. Ouvrez la console Pulse Connect Secure.
    2. Dans les onglets Événements, Accès utilisateur et Accès administrateur, définissez Filtres sur Standard.
    3. Si le filtre standard n'est pas défini comme filtre par défaut, cliquez sur Définir par défaut.
    4. Cliquez sur Enregistrer.

Configurer Pulse Secure VPN version 8.3R4 ou ultérieure

  1. Dans la console Pulse Connect Secure, cliquez sur l'onglet Events (Événements), User access (Accès utilisateur) ou Admin access (Accès administrateur), puis définissez Filters (Filtres) sur New filter (Nouveau filtre).
  2. Dans le champ Nom du filtre, saisissez un nom pour le filtre.
  3. 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%

  4. Cliquez sur Enregistrer.

  5. En fonction de la version de votre appareil, effectuez l'une des opérations suivantes pour activer la configuration syslog :

    • Activer la journalisation syslog sur Pulse Secure VPN
    • Activer la journalisation syslog sur Ivanti Connect Secure

Activer la journalisation syslog sur Pulse Secure VPN

  1. Dans la console Pulse Connect Secure, sélectionnez System > Log/monitoring > Settings (Système > Journal/Surveillance > Paramètres). Vous pouvez sélectionner Paramètres dans l'onglet Événements, Accès utilisateur ou Accès administrateur.
  2. Dans la section Sélectionner les événements à consigner, cochez toutes les cases, à l'exception de celles Accès HTML5, Messages de contrôle des admissions et Requêtes non authentifiées.
  3. Dans le champ Serveur Syslog, saisissez des informations sur les serveurs Syslog.
  4. Dans la section Serveurs Syslog, procédez comme suit :
    1. Dans le champ Nom/Adresse IP du serveur, saisissez le nom du serveur ou l'adresse IP du redirecteur Google Security Operations.
    2. Dans la liste Établissement, sélectionnez LOCAL0.
    3. Dans la liste Filter (Filtre), sélectionnez le filtre que vous avez créé précédemment.
  5. Cliquez sur Ajouter.
  6. 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.
  7. Cliquez sur Enregistrer les modifications.

Activer la journalisation syslog sur Ivanti Connect Secure

  1. Dans la console Pulse Connect Secure, cliquez sur l'onglet Events (Événements), User access (Accès utilisateur) ou Admin access (Accès administrateur), puis sélectionnez Filters (Filtres).
  2. Cliquez sur l'onglet Nouveau filtre.
  3. 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%

  4. Cliquez sur Enregistrer.

  5. Cliquez sur Système > Journal/Surveillance, puis sélectionnez l'onglet Paramètres.

  6. Dans le champ Taille maximale du journal, spécifiez la taille maximale du journal et sélectionnez les événements à enregistrer.

  7. Spécifiez la configuration du serveur comme suit :

    1. Dans le champ Nom/Adresse IP du serveur, spécifiez le nom de domaine complet ou l'adresse IP du redirecteur 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.

    2. Dans la liste Installation, sélectionnez un niveau d'installation du serveur syslog.

    3. Dans la liste Type, sélectionnez le type de connexion au serveur syslog : UDP, TCP ou TLS. TLS utilise des protocoles cryptographiques pour fournir 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.

    4. Dans la liste Filtre, sélectionnez Personnalisé.

  8. Cliquez sur Ajouter.

Configurer le redirecteur Google Security Operations pour ingérer les journaux Pulse Secure

  1. Sélectionnez Paramètres SIEM > Transmetteurs.
  2. Cliquez sur Ajouter un nouveau transfert.
  3. Dans le champ Nom du transfert, saisissez un nom unique pour le transfert.
  4. Cliquez sur Envoyer, puis sur Confirmer. Le redirecteur est ajouté et la fenêtre Ajouter une configuration de collecteur s'affiche.
  5. Dans le champ Nom du collecteur, saisissez un nom unique pour le collecteur.
  6. Sélectionnez Pulse Secure comme Type de journal.
  7. Sélectionnez Syslog comme type de collecteur.
  8. 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.
    • Adresse : spécifiez l'adresse IP ou le nom d'hôte cible où réside le collecteur et où il écoute les données syslog.
    • Port : spécifiez le port cible sur lequel le collecteur réside et écoute les données syslog.
  9. Cliquez sur Envoyer.

Pour en savoir plus sur les répartiteurs Google Security Operations, consultez Gérer les configurations des répartiteurs dans l'interface utilisateur Google Security Operations.

Si vous rencontrez des problèmes lors de la création de redirecteurs, contactez l'assistance Google Security Operations.

Référence du mappage de champs

Cet analyseur extrait les champs des journaux Pulse Secure VPN, en gérant les formats des journaux des événements Windows et syslog. Il normalise diverses 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, et en les enrichissant avec des données contextuelles telles que les agents utilisateur, les adresses IP et les codes temporels.

Table 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 Analysé à partir du champ data_time à l'aide de différents formats d'horodatage (MM-jj-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 Directement mappé à partir du champ dstcountry s'il n'est pas "Réservé" ni 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é aux champs d'adresse IP correspondants. Sinon, il est mappé aux 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", le texte "host" est ajouté au motif de l'échec.
has_principal event.idm.read_only_udm.principal (présence) Définissez sur "true" si des champs principaux sont renseignés, ou sur "false" dans le cas contraire. Dérivé de la logique de l'analyseur.
has_target event.idm.read_only_udm.target (présence) Défini sur "true" si des champs cibles sont renseignés, ou sur "false" dans le cas contraire. Dérivé de 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é, ou "false" si ce n'est pas le cas. 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 La valeur security_result.severity est dérivée 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 des filtres grok et kv. Si le message contient "EventID", il est traité comme un journal des événements Windows.
message_info metadata.description Directement mappé 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 reste du message 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 Directement mappé à partir du champ priority_code et également utilisé pour dériver about.labels.value pour la clé "Severity" (voir la 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 et des tirets de début et de fin.
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 Directement mappé à partir du champ srccountry s'il n'est pas "Réservé" ni vide.
subtype metadata.product_event_type Utilisé 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 Analysé à partir du champ time au format "aaaa-MM-jj HH:mm:ss".
type metadata.product_event_type Utilisé 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 Dans la plupart des cas, il est associé à target.user.group_identifiers. Correspond à principal.user.group_identifiers dans les événements "Modification de l'adresse IP (USER_UNCATEGORIZED)" et "Restrictions du domaine".
user_ip principal.ip, principal.asset.ip Mappé directement à partir du champ user_ip. Si ce champ est vide et que u_event_source_ip ne l'est pas, il prend la valeur de u_event_source_ip.
nom d'utilisateur principal.user.userid ou target.user.userid Dans la plupart des cas, il est associé à principal.user.userid. Mappé sur target.user.userid dans certains cas 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".

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