Recopilar registros de Pulse Secure
En este documento se describe cómo puede recoger registros de Pulse Secure mediante un reenviador de Google Security Operations.
Para obtener más información, consulta el artículo Información general sobre la ingestión de datos en Google Security Operations.
Una etiqueta de ingestión identifica el analizador que normaliza los datos de registro sin procesar en formato UDM estructurado. La información de este documento se aplica al analizador con la etiqueta de ingestión PULSE_SECURE_VPN
.
Configurar la VPN de Pulse Secure
Para configurar la VPN de Pulse Secure, haz una de las siguientes acciones:
- Configurar la versión 8.3R3 y anteriores de Pulse Secure VPN
- Configurar Pulse Secure VPN versión 8.3R4 y posteriores
Configurar la versión 8.3R3 y anteriores de Pulse Secure VPN
- Inicia sesión en la consola Pulse Connect Secure.
- En la consola Pulse Connect Secure, selecciona System > Log/monitoring > Settings. Puede seleccionar Configuración en las pestañas Eventos, Acceso de usuario o Acceso de administrador.
- En la sección Seleccionar eventos que se registrarán, marca todas las casillas correspondientes a los eventos.
- En la sección Servidores Syslog, haga lo siguiente:
- En el campo Nombre de servidor o IP, especifica la dirección IP del reenviador de Google Security Operations.
- En la lista Facility (Instalación), selecciona LOCAL0. La lista Instalación ofrece ocho instalaciones: de
LOCAL0
aLOCAL7
. Puedes usar uno de estos ajustes para asignar las instalaciones de tu servidor syslog. - En la lista Tipo, selecciona UDP o TCP.
- Haz clic en Añadir.
- Opcional: Para añadir varios servidores syslog para los registros de eventos, de acceso de administrador o de acceso de usuario, repite los pasos del 2 al 4.
- Haz clic en Guardar cambios.
- Para asegurarte de que el formato de registro estándar esté definido como predeterminado, haz lo siguiente:
- Abre la consola Pulse Connect Secure.
- En las pestañas Eventos, Acceso de usuario y Acceso de administrador, defina Filtros como Estándar.
- Si el filtro estándar no está definido como filtro predeterminado, haga clic en Convertir en predeterminado.
- Haz clic en Guardar.
Configurar Pulse Secure VPN versión 8.3R4 y posteriores
- En la consola Pulse Connect Secure, haz clic en la pestaña Events (Eventos), User access (Acceso de usuario) o Admin access (Acceso de administrador) y, a continuación, en Filters (Filtros) > New filter (Nuevo filtro).
- En el campo Nombre del filtro, introduce un nombre para el filtro.
En la sección Formato de exportación, selecciona Personalizado e introduce el siguiente formato en el campo:
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
Haz clic en Guardar.
En función de la versión de tu dispositivo, sigue uno de estos pasos para habilitar la configuración de syslog:
- Habilitar el registro syslog en Pulse Secure VPN
- Habilitar el registro syslog en Ivanti Connect Secure
Habilitar el registro de syslog en Pulse Secure VPN
- En la consola Pulse Connect Secure, selecciona System > Log/monitoring > Settings. Puede seleccionar Configuración en las pestañas Eventos, Acceso de usuario o Acceso de administrador.
- En la sección Seleccionar eventos que se registrarán, marca todas las casillas excepto Acceso HTML5, Mensajes de control de acceso y Solicitudes no autenticadas.
- En el campo Servidor Syslog, introduce información sobre los servidores Syslog.
- En la sección Servidores Syslog, haga lo siguiente:
- En el campo Nombre de servidor o IP, introduce el nombre del servidor o la dirección IP del reenviador de Google Security Operations.
- En la lista Facility (Instalación), selecciona LOCAL0.
- En la lista Filtro, selecciona el que has creado antes.
- Haz clic en Añadir.
- Opcional: Para añadir varios servidores syslog para eventos, acceso de administrador o registros de acceso de usuario, repite los pasos del 2 al 4.
- Haz clic en Guardar cambios.
Habilitar el registro syslog en Ivanti Connect Secure
- En la consola Pulse Connect Secure, haga clic en la pestaña Events (Eventos), User access (Acceso de usuario) o Admin access (Acceso de administrador) y, a continuación, seleccione Filters (Filtros).
- Haz clic en la pestaña Nuevo filtro.
En la sección Formato de exportación, selecciona Personalizado e introduce el siguiente formato en el campo:
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
Haz clic en Guardar.
Haz clic en Sistema > Registro/monitorización y, a continuación, selecciona la pestaña Configuración.
En el campo Tamaño máximo del registro, especifica el tamaño máximo del registro y selecciona los eventos que se registrarán.
Especifica la configuración del servidor de la siguiente manera:
En el campo Nombre de servidor/IP, especifica el nombre de dominio completo o la dirección IP del reenviador de Google Security Operations del servidor syslog.
Si selecciona Seguridad de la capa de transporte (TLS) en la lista de tipos, el nombre del servidor debe coincidir con el CN del subjectDN del certificado obtenido del servidor.
En la lista Facility (Instalación), seleccione un nivel de instalación del servidor syslog.
En la lista Type (Tipo), selecciona el tipo de conexión al servidor syslog: UDP, TCP o TLS. TLS usa protocolos criptográficos para proporcionar una comunicación segura.
Si seleccionas TLS, elige el certificado de cliente instalado que quieras usar para autenticar el servidor syslog. Los certificados de cliente se definen en la ventana Configuración > Certificados > Certificados de autenticación de cliente. Los certificados de cliente deben instalarse en el dispositivo para poder usarse. Ponte en contacto con tu autoridad de certificación para obtener el certificado.
En la lista Filtrar, selecciona Personalizado.
Haz clic en Añadir.
Configurar el reenviador de Google Security Operations para ingerir registros de Pulse Secure
- Seleccione Configuración de SIEM > Reenviadores.
- Haz clic en Añadir nuevo remitente.
- En el campo Nombre del reenviador, introduce un nombre único para el reenviador.
- Haz clic en Enviar y, a continuación, en Confirmar. Se añade el reenviador y se muestra la ventana Añadir configuración de recopilador.
- En el campo Nombre del recolector, escriba un nombre único para el recolector.
- Seleccione Pulse Secure como Tipo de registro.
- Seleccione Syslog como Tipo de recogida.
- Configure los siguientes parámetros de entrada obligatorios:
- Protocol: especifica el protocolo de conexión que usa el recopilador para escuchar los datos de syslog.
- Dirección: especifica la dirección IP o el nombre de host de destino donde reside el recopilador y escucha los datos de syslog.
- Puerto: especifica el puerto de destino en el que reside el recopilador y escucha los datos de syslog.
- Haz clic en Enviar.
Para obtener más información sobre los reenviadores de Google Security Operations, consulta Gestionar configuraciones de reenviadores a través de la interfaz de usuario de Google Security Operations.
Si tienes problemas al crear reenviadores, ponte en contacto con el equipo de Asistencia de Google Security Operations.
Referencia de asignación de campos
Este analizador extrae campos de los registros de VPN de Pulse Secure y gestiona los formatos de registros de eventos de Windows y syslog. Normaliza diversas estructuras de registro en un formato común, categorizando eventos como inicios y cierres de sesión, conexiones y cambios en las políticas, y los enriquece con datos contextuales como agentes de usuario, direcciones IP y marcas de tiempo.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
acción | security_result.action_details |
Se asigna directamente desde el campo action . |
página | principal.application |
Se asigna directamente desde el campo application . |
bytes_read | network.received_bytes |
Se asigna directamente desde el campo bytes_read y se convierte en un entero sin signo. |
bytes_written | network.sent_bytes |
Se asigna directamente desde el campo bytes_written y se convierte en un entero sin signo. |
client_host | principal.hostname , principal.asset.hostname |
Se asigna directamente desde el campo client_host . |
cmd | principal.process.command_line |
Se asigna directamente desde el campo cmd . |
connection_status | security_result.detection_fields.value.string_value |
Se asigna directamente desde el campo connection_status . |
data_time | metadata.event_timestamp.seconds |
Se analiza a partir del campo data_time con varios formatos de marca de tiempo (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 |
Se asigna directamente desde el campo devname . |
dstip | target.ip , target.asset.ip |
Se asigna directamente desde el campo dstip . |
dstport | target.port |
Se ha asignado directamente desde el campo dstport y se ha convertido en un número entero. |
dstcountry | target.location.country_or_region |
Se asigna directamente desde el campo dstcountry si no está vacío o no tiene el valor "Reserved". |
duración | network.session_duration.seconds |
Se ha asignado directamente desde el campo duration y se ha convertido en un número entero. |
dvc | intermediary.hostname o intermediary.ip |
Si el campo dvc se puede convertir en una dirección IP, se asigna a intermediary.ip . De lo contrario, se asigna a intermediary.hostname . |
dvc_hostname | intermediary.hostname , principal.hostname , principal.asset.hostname o intermediary.ip , principal.ip , principal.asset.ip |
Si el campo dvc_hostname se puede convertir en una dirección IP, se asigna a los campos IP correspondientes. De lo contrario, se asigna a los campos de nombre de host correspondientes. |
event_type | metadata.product_event_type |
Se asigna directamente desde el campo event_type . |
failure_reason | security_result.description |
Se asigna directamente desde el campo failure_reason . Si el mensaje contiene "because host", el texto "host" se añade al principio del motivo del fallo. |
has_principal | event.idm.read_only_udm.principal (presencia) |
Se asigna el valor "true" si se rellena algún campo principal; de lo contrario, se asigna el valor "false". Derivado de la lógica del analizador. |
has_target | event.idm.read_only_udm.target (presencia) |
Se asigna el valor "true" si se rellena algún campo de destino; de lo contrario, se asigna el valor "false". Derivado de la lógica del analizador. |
has_target_user | event.idm.read_only_udm.target.user.userid (presencia) |
Se le asigna el valor "true" si target.user.userid se rellena. De lo contrario, se le asigna el valor "false". Derivado de la lógica del analizador. |
host_ip | principal.ip , principal.asset.ip |
Se asigna directamente desde el campo host_ip . |
host_mac | principal.mac |
Se asigna directamente desde el campo host_mac , sustituyendo los guiones por dos puntos. |
http_method | network.http.method |
Se asigna directamente desde el campo http_method . |
http_response | network.http.response_code |
Se ha asignado directamente desde el campo http_response y se ha convertido en un número entero. |
info_desc | about.labels.value |
Se asigna directamente desde el campo info_desc . |
ip_new | target.ip , target.asset.ip |
Se asigna directamente desde el campo ip_new . |
nivel | security_result.severity , security_result.severity_details |
El security_result.severity se deriva del campo level ("error"/"warning" -> HIGH, "notice" -> MEDIUM, "information"/"info" -> LOW). El valor sin formato de level también se asigna a security_result.severity_details . |
logid | metadata.product_log_id |
Se asigna directamente desde el campo logid . |
locip | principal.ip , principal.asset.ip |
Se asigna directamente desde el campo locip . |
mensaje | metadata.description |
Se usa para extraer varios campos mediante los filtros grok y kv. Si el mensaje contiene "EventID", se procesa como un registro de eventos de Windows. |
message_info | metadata.description |
Se asigna directamente a metadata.description si no se usa en patrones grok más específicos. |
msg | metadata.product_event_type , metadata.description |
Si el campo msg está presente, el tipo de producto se extrae y se asigna a metadata.product_event_type , y el resto del mensaje se asigna a metadata.description . |
msg_hostname | principal.hostname , principal.asset.hostname |
Se asigna directamente desde el campo msg_hostname . |
msg_ip | principal.ip , principal.asset.ip |
Se asigna directamente desde el campo msg_ip . |
msg_user_agent | network.http.user_agent , network.http.parsed_user_agent , metadata.product_version |
La cadena de user-agent se asigna a network.http.user_agent , el user-agent analizado se asigna a network.http.parsed_user_agent y la versión del producto (si está presente) se asigna a metadata.product_version . |
network_duration | network.session_duration.seconds |
Se ha asignado directamente desde el campo network_duration y se ha convertido en un número entero. |
policyid | security_result.rule_id |
Se asigna directamente desde el campo policyid . |
policyname | security_result.rule_name |
Se asigna directamente desde el campo policyname . |
policytype | security_result.rule_type |
Se asigna directamente desde el campo policytype . |
priority_code | about.labels.value |
Se asigna directamente desde el campo priority_code y también se usa para obtener about.labels.value para la clave "Severity" (consulta la lógica). |
prod_name | metadata.product_name |
Se asigna directamente desde el campo prod_name . |
product_type | metadata.product_event_type |
Se asigna directamente desde el campo product_type . |
product_version | metadata.product_version |
Se asigna directamente desde el campo product_version . |
proto | network.ip_protocol |
Se asigna a network.ip_protocol después de convertirse en un nombre de protocolo IP mediante una búsqueda. |
pwd | principal.process.file.full_path |
Se asigna directamente desde el campo pwd . |
dominio | principal.group.attribute.labels.value |
Se asigna directamente desde el campo realm . |
rcvdbyte | network.received_bytes |
Se asigna directamente desde el campo rcvdbyte y se convierte en un entero sin signo. |
remip | target.ip |
Se asigna directamente desde el campo remip . |
nombre_recurso | target.resource.name |
Se asigna directamente desde el campo resource_name después de eliminar los espacios en blanco y los guiones iniciales y finales. |
resource_status | security_result.description |
Se asigna directamente desde el campo resource_status . |
resource_user_group | principal.user.group_identifiers |
Se asigna directamente desde el campo resource_user_group . |
resource_user_name | principal.user.userid |
Se asigna directamente desde el campo resource_user_name . |
roles | principal.user.group_identifiers |
Se asigna directamente desde el campo roles . |
sentbyte | network.sent_bytes |
Se asigna directamente desde el campo sentbyte y se convierte en un entero sin signo. |
session_id | network.session_id |
Se asigna directamente desde el campo session_id . |
sessionid | network.session_id |
Se asigna directamente desde el campo sessionid . |
srcip | principal.ip , principal.asset.ip |
Se asigna directamente desde el campo srcip . |
srcport | principal.port |
Se ha asignado directamente desde el campo srcport y se ha convertido en un número entero. |
srccountry | principal.location.country_or_region |
Se asigna directamente desde el campo srccountry si no está vacío o no tiene el valor "Reserved". |
subtype | metadata.product_event_type |
Se usa junto con type para formar metadata.product_event_type . |
target_file | target.file.full_path |
Se asigna directamente desde el campo target_file . |
target_host | target.hostname , target.asset.hostname |
Se asigna directamente desde el campo target_host . |
target_ip | target.ip , target.asset.ip |
Se asigna directamente desde el campo target_ip . |
target_port | target.port |
Se ha asignado directamente desde el campo target_port y se ha convertido en un número entero. |
target_url | target.url |
Se asigna directamente desde el campo target_url . |
Tiempo | metadata.event_timestamp.seconds |
Se analiza a partir del campo time con el formato "aaaa-MM-dd HH:mm:ss". |
tipo | metadata.product_event_type |
Se usa junto con subtype para formar metadata.product_event_type . |
u_event_source_ip | principal.ip , principal.asset.ip o target.ip |
Si se incluyen target_ip o target_host , u_event_source_ip se asigna a principal.ip y principal.asset.ip . De lo contrario, si target_ip , target_host y target_url están vacíos, u_event_source_ip se asigna a target.ip . |
u_observer_ip | observer.ip |
Se asigna directamente desde el campo u_observer_ip . |
u_prin_ip | principal.ip , principal.asset.ip |
Se asigna directamente desde el campo u_prin_ip . |
usuario | target.user.userid |
Se asigna directamente desde el campo user . |
user_agent | network.http.user_agent , network.http.parsed_user_agent |
La cadena de user-agent se asigna a network.http.user_agent y el user-agent analizado se asigna a network.http.parsed_user_agent . |
user_group_identifier | target.user.group_identifiers o principal.user.group_identifiers |
Se asigna a target.user.group_identifiers en la mayoría de los casos. Se asigna a principal.user.group_identifiers en los eventos de cambio de IP (USER_UNCATEGORIZED) y de restricciones de dominio. |
user_ip | principal.ip , principal.asset.ip |
Se asigna directamente desde el campo user_ip . Si está vacío y u_event_source_ip no lo está, toma el valor de u_event_source_ip . |
nombre de usuario | principal.user.userid o target.user.userid |
Se asigna a principal.user.userid en la mayoría de los casos. Se asigna a target.user.userid en algunos casos concretos (por ejemplo, cuando detect_user_logout_failed es false y detect_policy_change_failed es false). |
username_removed | target.user.userid |
Se asigna directamente desde el campo username_removed . |
vd | principal.administrative_domain |
Se asigna directamente desde el campo vd . |
metadata.vendor_name
, metadata.product_name
, metadata.event_type
, metadata.log_type
, network.ip_protocol
, security_result.action
, security_result.severity
y extensions.auth.type
se derivan o se definen mediante la lógica del analizador en función de las condiciones descritas en la columna Lógica.
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.