Collecter les journaux Pulse Secure
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
- Connectez-vous à la console Pulse Connect Secure.
- 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.
- Dans la section Sélectionner les événements à enregistrer, cochez toutes les cases correspondant aux événements.
- Dans la section Serveurs Syslog, procédez comme suit :
- Dans le champ Nom/Adresse IP du serveur, spécifiez l'adresse IP du redirecteur Google Security Operations.
- 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. - 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 par défaut.
- Cliquez sur Enregistrer.
Configurer Pulse Secure VPN version 8.3R4 ou ultérieure
- 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).
- 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.
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
- 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.
- 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.
- Dans le champ Serveur Syslog, saisissez des informations sur les serveurs Syslog.
- Dans la section Serveurs Syslog, procédez comme suit :
- Dans le champ Nom/Adresse IP du serveur, saisissez le nom du serveur ou l'adresse IP du redirecteur Google Security Operations.
- Dans la liste Établissement, 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 Secure, cliquez sur l'onglet Events (Événements), User access (Accès utilisateur) ou Admin access (Accès administrateur), puis sélectionnez Filters (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 Système > Journal/Surveillance, puis sélectionnez l'onglet Paramètres.
Dans le champ Taille maximale du journal, spécifiez la taille maximale du journal et sélectionnez les événements à enregistrer.
Spécifiez la configuration du serveur comme suit :
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.
Dans la liste Installation, sélectionnez un niveau d'installation du serveur syslog.
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.
Dans la liste Filtre, sélectionnez Personnalisé.
Cliquez sur Ajouter.
Configurer le redirecteur Google Security Operations pour ingérer les journaux Pulse Secure
- Sélectionnez Paramètres SIEM > Transmetteurs.
- Cliquez sur Ajouter un nouveau transfert.
- Dans le champ Nom du transfert, saisissez un nom unique pour le transfert.
- Cliquez sur Envoyer, puis sur Confirmer. Le redirecteur 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.
- 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.
- 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.