Recoger registros de Palo Alto Networks Traps
En este documento se explica cómo recoger los registros de Palo Alto Networks Traps en Google Security Operations mediante Bindplane. El analizador gestiona los registros en formatos CSV y de clave-valor, y los transforma en UDM. Utiliza el análisis de grok y CSV para extraer campos, aplica lógica condicional basada en mensajes de registro o valores de campo específicos para asignar campos de UDM y gestiona varios tipos de eventos, como actualizaciones de estado, análisis de redes y creaciones de procesos.
Antes de empezar
- Asegúrate de que tienes una instancia de Google Security Operations.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host Linux con
systemd
. - Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.
- Asegúrate de que tienes acceso con privilegios a Cortex XDR.
Obtener el archivo de autenticación de ingestión de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtener el ID de cliente de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instalar el agente de Bindplane
Instalación de ventanas
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre un terminal con privilegios de superusuario o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalación adicionales
- Para ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Busca el archivo
config.yaml
. Normalmente, se encuentra en el directorio/etc/bindplane-agent/
en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Busca el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: PAN_EDR raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar Palo Alto Networks Traps
- Inicia sesión en la consola de Cortex XDR ESM.
- Selecciona Configuración > ESM > Syslog.
- Selecciona la casilla Habilitar syslog.
- Proporcione los siguientes detalles de configuración:
- Servidor Syslog: introduce la dirección IP del agente de Bindplane.
- Puerto Syslog: introduce el número de puerto configurado en Bindplane. Por ejemplo,
514
. - Protocolo Syslog: selecciona CEF.
- Asigna el valor 0 a Tiempo de espera de Keep-Alive.
- Protocolo de comunicación: selecciona UDP.
- En la sección Actividad relacionada con la seguridad, marca las siguientes casillas:
- Evento de prevención
- Evento de notificación
- Evento de detección posterior
- Haz clic en Comprobar conectividad > Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
agentId |
event.idm.read_only_udm.additional.fields.value.string_value |
El valor de agentId del registro sin procesar se asigna al campo string_value de una estructura anidada en additional.fields . El key de este campo es Agent ID . |
agentIp |
event.idm.read_only_udm.target.ip |
El valor de agentIp del registro sin procesar se asigna al campo target.ip . |
cat |
event.idm.read_only_udm.security_result.rule_name |
El valor de cat del registro sin procesar se asigna al campo security_result.rule_name . |
class |
event.idm.read_only_udm.security_result.category_details |
Se usa junto con subClass para rellenar security_result.category_details con el formato class: subClass . |
cs1 |
event.idm.read_only_udm.principal.application , event.idm.read_only_udm.principal.user.email_addresses |
Si cs1Label es email y cs1 es una dirección de correo válida, se asigna a principal.user.email_addresses . Si cs1Label es Initiated by , se asigna a principal.application . |
cs2 |
event.idm.read_only_udm.principal.process.command_line , event.idm.read_only_udm.security_result.description |
Si cs2Label es subtype , se asigna a security_result.description . Si cs2Label es Initiator CMD , se asigna a principal.process.command_line . |
cs3 |
event.idm.read_only_udm.security_result.action_details |
Si cs3Label es result , se asigna a security_result.action_details . |
customerId |
event.idm.read_only_udm.additional.fields.value.string_value |
El valor de customerId del registro sin procesar se asigna al campo string_value de una estructura anidada en additional.fields . El key de este campo es Customer ID . |
date_time |
event.idm.read_only_udm.metadata.event_timestamp.seconds |
Se analiza y se convierte en una marca de tiempo, que se asigna a metadata.event_timestamp.seconds . |
desc |
event.idm.read_only_udm.metadata.description |
El valor de desc del registro sin procesar se asigna al campo metadata.description . |
deviceName |
event.idm.read_only_udm.target.hostname |
El valor de deviceName del registro sin procesar se asigna al campo target.hostname . |
email_receiver |
event.idm.read_only_udm.network.email.to |
Se extrae del campo msg si contiene una dirección de correo electrónico y se asigna a network.email.to . |
endpoint_desc |
event.idm.read_only_udm.target.resource.attribute.labels.value |
Derivada de isEndpoint : Yes, host is an endpoint. si isEndpoint es 1, No, host is not an endpoint si isEndpoint es 0. El valor de key es Is Endpoint . |
eventType |
event.idm.read_only_udm.metadata.product_event_type , event.idm.read_only_udm.metadata.event_type |
El valor de eventType del registro sin procesar se asigna al campo metadata.product_event_type . También se usa para derivar metadata.event_type en función de su valor (por ejemplo, Management Audit Logs da como resultado EMAIL_TRANSACTION , XDR Analytics BIOC o Behavioral Threat da como resultado SCAN_NETWORK ). |
facility |
event.idm.read_only_udm.additional.fields.value.string_value |
El valor de facility del registro sin procesar se asigna al campo string_value de una estructura anidada en additional.fields . El key de este campo es Facility . |
fileHash |
event.idm.read_only_udm.principal.process.file.sha256 |
El valor de fileHash del registro sin procesar, convertido a minúsculas, se asigna al campo principal.process.file.sha256 . |
filePath |
event.idm.read_only_udm.principal.process.file.full_path |
El valor de filePath del registro sin procesar se asigna al campo principal.process.file.full_path . |
friendlyName |
event.idm.read_only_udm.metadata.description |
El valor de friendlyName del registro sin procesar se asigna al campo metadata.description . |
interm_ip |
event.idm.read_only_udm.intermediary.ip |
El valor de interm_ip del registro sin procesar se asigna al campo intermediary.ip . |
isEndpoint |
event.idm.read_only_udm.target.resource.attribute.labels.value |
Se usa para derivar target.resource.attribute.labels.value . |
isVdi |
event.idm.read_only_udm.target.resource.resource_type |
Si isVdi es 1, target.resource.resource_type se establece en VIRTUAL_MACHINE . |
msg |
event.idm.read_only_udm.security_result.summary |
El valor de msg del registro sin procesar se asigna al campo security_result.summary . También se usa para extraer email_receiver . |
msgTextEn |
event.idm.read_only_udm.security_result.description |
El valor de msgTextEn del registro sin procesar se asigna al campo security_result.description . |
osType |
event.idm.read_only_udm.target.platform , event.idm.read_only_udm.target.resource.attribute.labels.value |
Si osType es 1, target.platform se establece en WINDOWS . Si osType es 2, target.platform se asigna a MAC . Si osType es 4, target.platform se asigna a LINUX . Si osType es 3, su valor se asigna a target.resource.attribute.labels.value con el key OS . |
osVersion |
event.idm.read_only_udm.target.platform_version |
El valor de osVersion del registro sin procesar se asigna al campo target.platform_version . |
product_version |
event.idm.read_only_udm.metadata.product_version |
El valor de product_version del registro sin procesar se asigna al campo metadata.product_version . |
proto |
event.idm.read_only_udm.network.ip_protocol |
Si proto es udp , network.ip_protocol se define como UDP . |
recordType |
event.idm.read_only_udm.additional.fields.value.string_value |
El valor de recordType del registro sin procesar se asigna al campo string_value de una estructura anidada en additional.fields . El key de este campo es Record Type . |
regionId |
event.idm.read_only_udm.principal.location.country_or_region |
Si regionId es 10, principal.location.country_or_region se establece en Americas (N. Virginia) . Si regionId es 70, principal.location.country_or_region se establece en EMEA (Frankfurt) . |
request |
event.idm.read_only_udm.target.url |
El valor de request del registro sin procesar se asigna al campo target.url . |
sec_category_details |
event.idm.read_only_udm.security_result.category_details |
El valor de sec_category_details del registro sin procesar se asigna al campo security_result.category_details . |
sec_desc |
event.idm.read_only_udm.security_result.description |
El valor de sec_desc del registro sin procesar se asigna al campo security_result.description . |
serverHost |
event.idm.read_only_udm.principal.hostname |
El valor de serverHost del registro sin procesar se asigna al campo principal.hostname . |
severity |
event.idm.read_only_udm.security_result.severity |
Se asigna a security_result.severity con la siguiente lógica: 2 -> CRÍTICO, 3 -> ERROR, 4 -> MEDIO, 5 -> BAJO y 6 -> INFORMATIVO. |
severity_val |
event.idm.read_only_udm.security_result.severity , event.idm.read_only_udm.security_result.severity_details |
Si severity_val es 0, security_result.severity_details se asigna a UNKNOWN_SEVERITY . De lo contrario, se asigna a security_result.severity con la siguiente lógica: 6 -> BAJO, 8 -> MEDIO y 9 -> ALTO. |
shost |
event.idm.read_only_udm.principal.hostname |
El valor de shost del registro sin procesar se asigna al campo principal.hostname . |
src_ip |
event.idm.read_only_udm.principal.ip |
El valor de src_ip del registro sin procesar se asigna al campo principal.ip . |
subClass |
event.idm.read_only_udm.security_result.category_details |
Se usa junto con class para rellenar security_result.category_details . |
suser |
event.idm.read_only_udm.principal.user.user_display_name |
El valor de suser del registro sin procesar, con los corchetes, las barras diagonales inversas y las comillas simples eliminados, se asigna al campo principal.user.user_display_name . |
targetprocesscmd |
event.idm.read_only_udm.target.process.command_line |
El valor de targetprocesscmd del registro sin procesar se asigna al campo target.process.command_line . |
targetprocessname |
event.idm.read_only_udm.target.application |
El valor de targetprocessname del registro sin procesar se asigna al campo target.application . |
targetprocesssha256 |
event.idm.read_only_udm.target.process.file.sha256 |
El valor de targetprocesssha256 del registro sin procesar, convertido a minúsculas, se asigna al campo target.process.file.sha256 . |
tenantname |
event.idm.read_only_udm.target.resource.attribute.labels.value |
El valor de tenantname del registro sin procesar se asigna al campo value de una estructura anidada en target.resource.attribute.labels . El key de este campo es Tenant name . |
event.idm.read_only_udm.metadata.event_type |
El valor predeterminado es STATUS_UPDATE . Se ha cambiado a EMAIL_TRANSACTION si eventType es Management Audit Logs . Se ha cambiado a SCAN_NETWORK si eventType es XDR Analytics BIOC o Behavioral Threat , o si desc es Behavioral Threat . Se ha cambiado a SCAN_PROCESS si desc es Suspicious Process Creation . Su valor debe ser Palo Alto Networks . Su valor debe ser Cortex XDR . Su valor debe ser PAN_EDR . Asigna el valor NETWORK_SUSPICIOUS si eventType es XDR Analytics BIOC o Behavioral Threat , o si desc es Behavioral Threat . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.