Recopilar registros de eventos de Cortex XDR de Palo Alto
En este documento se explica cómo ingerir registros de eventos de Palo Alto Cortex XDR en Google Security Operations mediante Google Cloud Storage. El analizador extrae datos de eventos de seguridad de los registros JSON de Palo Alto Networks Cortex XDR. Normaliza los datos en el modelo de datos unificado (UDM) asignando campos, convirtiendo tipos de datos y enriqueciendo eventos con metadatos como el proveedor, el producto y los tipos de evento en función de la lógica condicional vinculada a los campos event_type
y event_sub_type
. También gestiona las conexiones de red, las operaciones de archivos y registros, la información de los procesos y la actividad de los usuarios.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Google Cloud El almacenamiento está configurado y activo en tu Google Cloud entorno
- Acceso privilegiado a Google Cloud y permisos adecuados
- Acceso privilegiado a Cortex XDR de Palo Alto
Crea un Google Cloud segmento de almacenamiento
- Inicia sesión en la Google Cloud consola.
Ve a la página Segmentos de Cloud Storage.
Haz clic en Crear.
En la página Crear un segmento, introduce la información del segmento. Después de cada uno de los pasos siguientes, haga clic en Continuar para pasar al siguiente:
En la sección Empezar, haz lo siguiente: * Introduce un nombre único que cumpla los requisitos de los nombres de los contenedores (por ejemplo, cortex-xdr-events-googlesecops). * Para habilitar el espacio de nombres jerárquico, haga clic en la flecha para desplegar la sección Optimizar para cargas de trabajo orientadas a archivos y con gran cantidad de datos y, a continuación, seleccione Habilitar espacio de nombres jerárquico en este contenedor.
Note: You can't enable hierarchical namespace in an existing bucket. * To add a bucket label, click the expander arrow to expand the **Labels** section. * Click **Add label** and specify a key and a value for your label.
En la sección Elige dónde almacenar tus datos, haz lo siguiente: * Selecciona un Tipo de ubicación. * Usa el menú del tipo de ubicación para seleccionar una Ubicación donde se almacenarán permanentemente los datos de los objetos de tu segmento.
Note: If you select the **dual-region** location type, you can also choose to enable **turbo replication** by selecting the relevant checkbox. * To set up cross-bucket replication, expand the **Set up cross-bucket replication** section.
En la sección Elige una clase de almacenamiento para tus datos, selecciona una clase de almacenamiento predeterminada para el segmento o Autoclass para gestionar automáticamente la clase de almacenamiento de los datos del segmento.
En la sección Elige cómo quieres controlar el acceso a los objetos, selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos del segmento.
En la sección Elige cómo proteger los datos de los objetos, haz lo siguiente: * Selecciona cualquiera de las opciones de Protección de datos que quieras definir para tu cubo. * Para elegir cómo se cifrarán los datos de los objetos, haz clic en la flecha del desplegable Cifrado de datos y selecciona un Método de cifrado de datos.
Haz clic en Crear.
Configurar el reenvío de eventos de Cortex XDR
- Inicia sesión en la interfaz web de Cortex XDR.
- Ve a Configuración > Configuraciones > Gestión de datos > Reenvío de eventos.
- Activa las licencias en la sección Activación.
- Habilita Reenvío de eventos por GB para exportar registros analizados de Cortex XDR Pro por GB a un SIEM externo para almacenarlos.
- Habilita Reenvío de eventos de Endpoints para exportar datos de endpoints sin procesar a Cortex XDR Pro EP y Cloud Endpoints.
- Guarda la selección.
- Copia la ruta de almacenamiento que se muestra.
- Genera y descarga el token web JSON de la cuenta de servicio, que contiene la clave de acceso.
- Guárdalo en un lugar seguro.
Configurar Google Cloud Secret Manager
- Inicia sesión en GCP.
- Ve a la página Secret Manager.
- Si es la primera vez que lo haces, se te pedirá que habilite la API Secret Manager.
- Crea un secreto llamado EVENT_FRWD_CRTX_KEY y copia el contenido del archivo JSON xdr_sa_key.json que has descargado como valor del secreto.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, escriba un nombre para el feed (por ejemplo, Registros de eventos de PANW Cortex XDR).
- Selecciona Google Cloud Storage V2 como Tipo de origen.
- Selecciona Palo Alto Cortex XDR Events (Eventos de Cortex XDR de Palo Alto) como Log type (Tipo de registro).
- Haz clic en Obtener cuenta de servicio en Cuenta de servicio de Chronicle.
- Haz clic en Siguiente.
Especifique los valores de los siguientes parámetros de entrada:
- URI de segmento de almacenamiento: Google Cloud URL del segmento de almacenamiento (por ejemplo,
gs://cortex-xdr-events-chronicle
/). Esta URL debe terminar con una barra inclinada (/). - Opciones de eliminación de la fuente: selecciona la opción que prefieras.
- URI de segmento de almacenamiento: Google Cloud URL del segmento de almacenamiento (por ejemplo,
Haz clic en Siguiente.
Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.
Una vez creado el feed, búscalo en la lista Feeds y haz clic en los tres puntos de acción situados a la derecha de la línea.
Selecciona Inhabilitar feed.
Configurar el acceso JSON secreto a Cloud Storage
- Inicia sesión en GCP.
- Ve a la página Secret Manager.
- Selecciona el secreto EVENT_FRWD_CRTX_KEY.
- Ve a la pestaña Permisos.
- Proporciona acceso Administrador de objetos de Storage y Lector de segmentos heredados de Storage al segmento cortex-xdr-events-chronicle creado anteriormente.
Configurar los permisos de Google SecOps para Cloud Storage
- Ve a IAM y administración > IAM.
- Busca la cuenta de servicio de Chronicle.
- Concede el acceso Visor de objetos de Storage (roles/storage.objectViewer) al segmento cortex-xdr-events-chronicle que has creado anteriormente.
Configurar la ingestión de registros de eventos de PANW Cortex XDR en Project Cloud Storage
- En Google Cloud, vaya a APIs y servicios > Biblioteca.
- Habilita las APIs Cloud Run y Artifact Registry.
- Abre Cloud Shell haciendo clic en el icono de la barra de navegación superior.
Descarga un código personalizado con el siguiente comando:
git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.git
Ve al directorio ejecutando el siguiente comando:
cd google-cloud-cortex-chronicle/
Abre el archivo
env.properties
con un editor comovi
.Proporciona los siguientes detalles de configuración:
REGION=us-central1 # Update according to your project region REPO_NAME=panw-chronicle IMAGE_NAME=sync_cortex_bucket GCP_PROJECT_ID=chrxxxxxxxxx # Update according to your project ID JOB_NAME=cloud-run-job-cortex-data-sync # The Cloud Job name ROJECT_NUMBER=80xxxxx9 # Update according to your project number # JOB ENV VARIABLES SRC_BUCKET=xdr-us-xxxxx-event-forwarding # Update with the Cortex XDR GCS bucket name DEST_BUCKET=cortex-xdr-events-chronicle # Update with the GCS name of the bucket you created SECRET_NAME=EVENT_FRWD_CRTX_KEY # Need to match the secret you created JOB_SCHEDULE_MINS=30
Proporciona los permisos necesarios a la secuencia de comandos
deploy.sh
:chmod 744 deploy.sh
Ejecuta la secuencia de comandos
deploy.sh
:./deploy.sh
Identifica la cuenta de servicio de Cloud Job que se ha usado en la salida de la secuencia de comandos.
Concede a la cuenta de servicio Cloud Job el permiso Ancestro de secreto de Secret Manager para acceder al secreto que has creado antes (en nuestro ejemplo, EVENT_FRWD_CRTX_KEY).
Ve a Secret Manager > EVENT_FRWD_CRTX_KEY (secreto) > Permissions (Gestor de secretos > EVENT_FRWD_CRTX_KEY [secreto] > Permisos).
En la plataforma Google SecOps, vaya a Configuración de SIEM > Feeds > Nombre del feed de eventos de XDR > Habilitar feed.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
action_file_path |
target.file.full_path |
Asignación directa |
action_file_size |
target.file.size |
Asignado directamente y convertido en un entero sin signo |
action_local_ip |
principal.ip |
Asignadas y combinadas directamente con otras direcciones IP |
action_local_port |
principal.port |
Se asigna y se convierte directamente en un número entero. |
action_module_path |
target.process.file.full_path |
Asignación directa |
action_network_connection_id |
network.session_id |
Asignación directa |
action_network_protocol |
network.ip_protocol |
Se ha cambiado el nombre a protocol_number_src , se ha analizado con parse_ip_protocol.include y se ha asignado a network.ip_protocol |
action_process_image_command_line |
target.process.command_line |
Asignación directa |
action_process_image_md5 |
target.process.file.md5 |
Asignación directa |
action_process_image_path |
target.process.file.full_path |
Asignación directa |
action_process_image_sha256 |
target.process.file.sha256 |
Asignación directa |
action_process_os_pid |
target.process.pid |
Se asignan directamente y se convierten en una cadena. |
action_process_user_sid |
target.user.windows_sid |
Asignación directa |
action_process_username |
target.user.userid , target.administrative_domain |
Se convierte a minúsculas, se analiza para obtener el dominio y el usuario, y se asigna en consecuencia. |
action_registry_data |
target.registry.registry_value_data |
Asignación directa |
action_registry_key_name |
target.registry.registry_key |
Asignación directa |
action_registry_value_name |
target.registry.registry_value_name |
Asignación directa |
action_remote_ip |
target.ip |
Asignadas y combinadas directamente con otras direcciones IP |
action_remote_port |
target.port |
Se asigna y se convierte directamente en un número entero. |
action_total_download |
network.received_bytes |
Asignado directamente y convertido en un entero sin signo |
action_total_upload |
network.sent_bytes |
Asignado directamente y convertido en un entero sin signo |
agent_hostname |
principal.hostname , observer.hostname |
En minúsculas y asignado |
agent_ip_addresses |
observer.ip |
Analizadas como JSON, divididas en IPs individuales y combinadas |
agent_os_sub_type |
target.platform_version |
Asignación directa |
event_id |
metadata.product_log_id |
Asignación directa |
event_sub_type |
metadata.product_event_type |
Se ha convertido en una cadena y se ha usado para la asignación condicional de metadata.event_type y metadata.product_event_type . |
event_timestamp |
metadata.event_timestamp , timestamp |
Se ha convertido en una cadena, se ha analizado como una marca de tiempo UNIX_MS y se ha asignado. |
event_type |
metadata.event_type |
Se ha convertido en una cadena y se ha usado para la asignación condicional de metadata.event_type y metadata.product_event_type . |
os_actor_process_command_line |
principal.process.command_line |
Asignación directa |
os_actor_process_image_md5 |
principal.process.file.md5 |
Asignación directa |
os_actor_process_image_path |
principal.process.file.full_path |
Asignación directa |
os_actor_process_image_sha256 |
principal.process.file.sha256 |
Asignación directa |
os_actor_process_instance_id |
principal.process.product_specific_process_id |
Prefijado con "PAN:" y asignado |
os_actor_process_os_pid |
principal.process.pid |
Convertido en cadena y asignado |
os_actor_primary_user_sid |
principal.user.windows_sid |
Se asigna si empieza por "S-" o "s-". |
os_actor_primary_username |
principal.user.userid , principal.administrative_domain |
Se convierte a minúsculas, se analiza para obtener el dominio y el usuario, y se asigna en consecuencia. |
_action |
security_result.action |
Se ha combinado en _security_result y, a continuación, se ha asignado |
metadata.log_type |
metadata.log_type |
Codificado como "PAN_CORTEX_XDR_EVENTS" |
metadata.product_name |
metadata.product_name |
Codificado como "Cortex XDR" |
metadata.vendor_name |
metadata.vendor_name |
Codificado como "PAN" |
target.platform |
target.platform |
Se asigna el valor "WINDOWS" si agent_os_sub_type contiene "Windows". |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.