Recopila registros de Cisco Prime
En este documento, se explica cómo transferir registros de Cisco Prime a Google Security Operations con Bindplane. El analizador utiliza patrones de Grok para extraer campos de varios formatos de mensajes de syslog y asignarlos a un modelo de datos unificado (UDM). Maneja diferentes estructuras de registros, incluidos los pares clave-valor, y enriquece los datos con información del usuario, el principal, el objetivo y la seguridad según las palabras clave y los patrones específicos que se encuentran en los mensajes de registro.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Windows 2016 o versiones posteriores, o un host de Linux con
systemd
- Si ejecutas la herramienta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Acceso privilegiado a Cisco Prime
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- 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 en Linux
- Abre una terminal con privilegios de raíz 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 obtener más opciones de instalación, consulta la guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
- Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, 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).
- Ubica 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_file_path: '/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 log_type: 'CISCO_PRIME' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
- Reemplaza
<customer_id>
por el ID de cliente real. - Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Cómo obtener el archivo de autenticación de la transferencia 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 de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura las notificaciones de auditoría de cambios y los receptores de syslog
Puedes configurar el sistema para que envíe notificaciones de syslog sobre las auditorías de cambios relacionadas con los siguientes eventos:
- Actualizaciones del inventario de dispositivos
- Modificaciones de configuración
- Cambios en las plantillas de configuración
- Operaciones relacionadas con la plantilla
- Actividades del usuario, como accesos, cierres de sesión y modificaciones de la cuenta
Accede a la IU web de Cisco Prime.
Ve a Administración > Configuración > Configuración del sistema.
Selecciona Correo y notificaciones > Notificación de auditoría de cambios.
Haz clic en la casilla de verificación Habilitar notificación de auditoría de cambios.
Haz clic en el botón + para especificar un servidor syslog.
Proporciona los siguientes detalles de configuración:
- Ingresa la dirección IP del agente de BindPlane.
- Selecciona el protocolo UDP.
- Ingresa el número de puerto del agente de Bindplane.
Haz clic en Guardar.
Configura los registros de auditoría del sistema de reenvío como syslog
- Accede a la IU web de Cisco Prime.
- Ve a Administración > Configuración > Registro > Opciones de registro de Syslog.
- Haz clic en la casilla de verificación Habilitar Syslog.
- Proporciona los siguientes detalles de configuración:
- Ingresa la dirección IP del agente de BindPlane.
- Selecciona el protocolo UDP.
- Ingresa el número de puerto del agente de Bindplane.
- Selecciona una de las ocho instalaciones o
local0
.
- Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
client_ip_address | principal.ip, principal.asset.ip | El valor se toma del campo client_ip_address , que se extrae del registro sin procesar con el filtro kv. |
fecha | metadata.event_timestamp | El valor se toma del campo date , que se extrae del registro sin procesar con patrones de Grok y, luego, se convierte en una marca de tiempo con el filtro de fecha. |
descripción | security_result.description | El valor se toma del campo description , que se extrae del registro sin procesar con patrones de Grok. |
dest_mac | target.mac | El valor se toma del campo dest_mac , que se extrae del registro sin procesar con patrones de Grok y se convierte a minúsculas. |
device_id | principal.asset_id | El valor se toma del campo device_id , que se extrae del registro sin procesar con patrones de Grok. El valor final tiene el formato "ID del dispositivo: |
device_ip | principal.ip, principal.asset.ip | El valor se toma del campo device_ip , que se extrae del registro sin procesar con el filtro kv. Luego, el valor se analiza como un array JSON y cada dirección IP del array se agrega a los campos del UDM. |
device_type | target.resource.attribute.labels.value | El valor se toma del campo device_type , que se extrae del registro sin procesar con patrones de Grok. |
dst_user | target.user.userid | El valor se toma del campo dst_user , que se extrae del registro sin procesar con patrones de Grok. |
correo electrónico | src.hostname | El valor se toma del campo email , que se extrae del registro sin procesar con patrones de Grok. |
file_path | principal.process.file.full_path | El valor se toma del campo file_path , que se extrae del registro sin procesar con patrones de Grok. |
Nombre de host | target.resource.attribute.labels.value | El valor se toma del campo hostname , que se extrae del registro sin procesar con patrones de Grok. |
id | principal.asset_id | El valor se toma del campo id , que se extrae del registro sin procesar con patrones de Grok. El valor final tiene el formato "ID de entidad: |
ip_address | principal.ip, principal.asset.ip | El valor se toma del campo ip_address , que se extrae del registro sin procesar con patrones de Grok. |
log_level | security_result.severity | El valor se toma del campo log_level , que se extrae del registro sin procesar con patrones de Grok. Se usa para determinar el nivel de gravedad si no está presente severity . |
mac_address | principal.mac, source_mac | El valor se toma del campo mac_address , que se extrae del registro sin procesar con patrones de Grok y se convierte a minúsculas. También se usa como el valor de source_mac si source_mac está vacío. |
oid | principal.asset.product_object_id | El valor se toma del campo oid , que se extrae del registro sin procesar con patrones de Grok. |
principal_ip | principal.ip, principal.asset.ip | El valor se toma del campo principal_ip , que se extrae del registro sin procesar con patrones de Grok. |
principal_port | principal.port | El valor se toma del campo principal_port , que se extrae del registro sin procesar con patrones de Grok y se convierte en un número entero. |
process_name | principal.resource.name | El valor se toma del campo process_name , que se extrae del registro sin procesar con patrones de Grok. |
sec_description | security_result.description | El valor se toma del campo sec_description , que se extrae del registro sin procesar con patrones de Grok. |
session_id | network.session_id | El valor se toma del campo session_id , que se extrae del registro sin procesar con patrones de Grok. |
gravedad, | security_result.severity | El valor se toma del campo severity , que se extrae del registro sin procesar con patrones de Grok. Se usa para determinar el nivel de gravedad, si está presente. |
source_mac | principal.mac | El valor se toma del campo source_mac , que se extrae del registro sin procesar con patrones de Grok y se convierte a minúsculas. Si está vacío, toma el valor de mac_address . |
resumen | security_result.summary | El valor se toma del campo summary , que se extrae del registro sin procesar con patrones de Grok. |
target_ip | target.ip, target.asset.ip | El valor se toma del campo target_ip , que se extrae del registro sin procesar con patrones de Grok. |
thread_pool | metadata.product_event_type | El valor se toma del campo thread_pool , que se extrae del registro sin procesar con patrones de Grok. |
timestamp | metadata.event_timestamp | El valor se toma del campo timestamp , que se extrae del registro sin procesar con patrones de Grok y, luego, se convierte en una marca de tiempo con el filtro de fecha. |
Tipo | metadata.product_event_type | El valor se toma del campo Type , que se extrae del registro sin procesar con el filtro kv. |
user_name | principal.user.userid | El valor se toma del campo user_name , que se extrae del registro sin procesar con patrones de Grok o el filtro kv. |
metadata.event_type | metadata.event_type | El valor se determina según la presencia de campos y patrones específicos en el registro sin procesar. La lógica incluye lo siguiente: : Valor predeterminado: GENERIC_EVENT : Si thread_pool es "EmailAlertHelper", EMAIL_TRANSACTION : Si application_name es "aesSystem" y desc contiene "HealthMonitorHelper", STATUS_HEARTBEAT : Si user_present y target_resource_present son verdaderos, USER_RESOURCE_ACCESS : Si user_present es verdadero, USER_UNCATEGORIZED : Si principal_present y target_present son verdaderos, NETWORK_CONNECTION : Si principal_present es verdadero, STATUS_UPDATE : Si dst_user está presente y description contiene "logout", USER_LOGOUT : Si dst_user está presente y description no contiene "logout", USER_LOGIN |
metadata.vendor_name | metadata.vendor_name | El valor se establece en "CISCO". |
metadata.product_name | metadata.product_name | El valor se establece en "CISCO_PRIME". |
metadata.log_type | metadata.log_type | El valor se establece en "CISCO_PRIME". |
network.session_id | network.session_id | El valor se toma del campo session_id , que se extrae del registro sin procesar con patrones de Grok. |
principal.application | principal.application | El valor se toma del campo application_name , que se extrae del registro sin procesar con patrones de Grok. |
principal.asset.ip | principal.asset.ip | El valor puede provenir de los siguientes campos: client_ip_address , device_ip , ip_address , principal_ip y target_ip . |
principal.asset.product_object_id | principal.asset.product_object_id | El valor se toma del campo oid , que se extrae del registro sin procesar con patrones de Grok. |
principal.asset_id | principal.asset_id | El valor puede provenir de los siguientes campos: device_id , id . |
principal.ip | principal.ip | El valor puede provenir de los siguientes campos: client_ip_address , device_ip , ip_address y principal_ip . |
principal.mac | principal.mac | El valor puede provenir de los siguientes campos: mac_address , source_mac . |
principal.port | principal.port | El valor se toma del campo principal_port , que se extrae del registro sin procesar con patrones de Grok y se convierte en un número entero. |
principal.process.file.full_path | principal.process.file.full_path | El valor se toma del campo file_path , que se extrae del registro sin procesar con patrones de Grok. |
principal.resource.name | principal.resource.name | El valor se toma del campo process_name , que se extrae del registro sin procesar con patrones de Grok. |
principal.user.userid | principal.user.userid | El valor se toma del campo user_name , que se extrae del registro sin procesar con patrones de Grok o el filtro kv. |
security_result.action | security_result.action | El valor se establece en "BLOCK" si description contiene "fail". |
security_result.description | security_result.description | El valor puede provenir de los siguientes campos: desc , description , sec_description . |
security_result.severity | security_result.severity | El valor puede provenir de los siguientes campos: log_level , severity . |
security_result.summary | security_result.summary | El valor se toma del campo summary , que se extrae del registro sin procesar con patrones de Grok. |
src.hostname | src.hostname | El valor se toma del campo email , que se extrae del registro sin procesar con patrones de Grok. |
target.asset.ip | target.asset.ip | El valor se toma del campo target_ip , que se extrae del registro sin procesar con patrones de Grok. |
target.ip | target.ip | El valor se toma del campo target_ip , que se extrae del registro sin procesar con patrones de Grok. |
target.mac | target.mac | El valor se toma del campo dest_mac , que se extrae del registro sin procesar con patrones de Grok y se convierte a minúsculas. |
target.resource.attribute.labels.key | target.resource.attribute.labels.key | El valor se establece en "Tipo de dispositivo" o "Nombre de host del dispositivo" según el contexto. |
target.resource.attribute.labels.value | target.resource.attribute.labels.value | El valor puede provenir de los siguientes campos: device_type , hostname . |
target.user.userid | target.user.userid | El valor se toma del campo dst_user , que se extrae del registro sin procesar con patrones de Grok. |
extensions.auth.mechanism | extensions.auth.mechanism | El valor se establece en "USERNAME_PASSWORD" si dst_user está presente y description contiene "password". |
extensions.auth.type | extensions.auth.type | El valor se establece en "MACHINE" si dst_user está presente. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.