Recopila registros de Cisco Prime

Compatible con:

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

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Collection Agents.
  3. 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

  1. Accede a la consola de Google SecOps.
  2. Ve a SIEM Settings > Profile.
  3. 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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación en Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. 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

  1. 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).
  2. 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
    

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

  1. 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
  2. Accede a la IU web de Cisco Prime.

  3. Ve a Administración > Configuración > Configuración del sistema.

  4. Selecciona Correo y notificaciones > Notificación de auditoría de cambios.

  5. Haz clic en la casilla de verificación Habilitar notificación de auditoría de cambios.

  6. Haz clic en el botón + para especificar un servidor syslog.

  7. 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.
  8. Haz clic en Guardar.

Configura los registros de auditoría del sistema de reenvío como syslog

  1. Accede a la IU web de Cisco Prime.
  2. Ve a Administración > Configuración > Registro > Opciones de registro de Syslog.
  3. Haz clic en la casilla de verificación Habilitar Syslog.
  4. 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.
  5. 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.