Recopila registros de DNSFilter

Compatible con:

En este documento, se explica cómo configurar DNSFilter para enviar registros a las Operaciones de seguridad de Google a través de webhooks con el protocolo de HTTP Event Collector (HEC).

DNSFilter es una solución de seguridad de DNS potenciada por IA que proporciona protección contra amenazas, filtrado de contenido y visibilidad de la red. La función de exportación de datos permite la exportación automática de datos de registro de consultas de DNS a plataformas de SIEM a través de la API de HTTP Event Collector (HEC), lo que admite la supervisión de seguridad en tiempo real y la generación de informes de cumplimiento.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Acceso al panel de DNSFilter con permisos de administrador o superiores
  • Función del complemento DNSFilter Data Export habilitada (disponible para los planes Basic, Pro y Enterprise como complemento pagado)
  • Acceso a la Google Cloud Console (para la creación de claves de API)

Crea un feed de webhook en Google SecOps

Crea el feed

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, DNSFilter HEC Feed).
  5. Selecciona Webhook como el Tipo de origen.
  6. Selecciona DNSFILTER como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:
    • Delimitador de división (opcional): Déjalo vacío, ya que cada solicitud de HEC contiene eventos con el formato adecuado.
    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.
    • Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
  9. Haz clic en Siguiente.
  10. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Genera y guarda la clave secreta

Después de crear el feed, debes generar una clave secreta para la autenticación:

  1. En la página de detalles del feed, haz clic en Generar clave secreta.
  2. Un diálogo muestra la clave secreta.
  3. Copia y guarda la clave secreta de forma segura.

Obtén la URL del extremo del feed

  1. Ve a la pestaña Detalles del feed.
  2. En la sección Endpoint Information, copia la URL del extremo del feed.
  3. El formato de la URL es el siguiente:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    o

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Guarda esta URL para los próximos pasos.

  5. Haz clic en Listo.

Crea una clave de API de Google Cloud

Google SecOps requiere una clave de API para la autenticación. Crea una clave de API restringida en la Google Cloud Console.

Crea la clave de API

  1. Ve a la página Credenciales de la consola de Google Cloud.
  2. Selecciona tu proyecto (el proyecto asociado con tu instancia de Google SecOps).
  3. Haz clic en Crear credenciales > Clave de API.
  4. Se creará una clave de API y se mostrará en un diálogo.
  5. Haz clic en Editar clave de API para restringir la clave.

Restringe la clave de API

  1. En la página de configuración de la clave de API, haz lo siguiente: Nombre: Ingresa un nombre descriptivo (por ejemplo, Google SecOps DNSFilter Webhook API Key).
  2. En Restricciones de API, haz lo siguiente:
    1. Selecciona Restringir clave.
    2. En el menú desplegable Seleccionar APIs, busca y selecciona Google SecOps API (o Chronicle API).
  3. Haz clic en Guardar.
  4. Copia el valor de la clave de API del campo Clave de API en la parte superior de la página.
  5. Guarda la clave de API de forma segura.

Configura la exportación de datos de DNSFilter

Construye la URL del extremo de HEC

  • Combina la URL del extremo de Google SecOps y la clave de API para crear la URL de HEC:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • Ejemplo:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

Configura la exportación de datos en DNSFilter

  1. Accede al panel de DNSFilter.
  2. Ve a Herramientas > Exportación de datos.
  3. En la sección Export Destination, selecciona HTTP Event Collector (HEC).
  4. En la sección Configuración de HEC, ingresa lo siguiente:
    • URL del recopilador de eventos HTTP: Pega la URL completa del extremo con la clave de API del paso anterior.
    • Token del recopilador de eventos activo: Pega la clave secreta que se generó durante la creación del feed de Google SecOps.
  5. Haz clic en Guardar configuración.
  6. DNSFilter probará la conexión y mostrará un mensaje de éxito si la configuración es correcta.

Verifica la transferencia de datos

  1. En el panel de DNSFilter, ve a Herramientas > Exportación de datos.
  2. Verifica que el Estado se muestre como Activo o Conectado.
  3. En la consola de Google SecOps, ve a Configuración de SIEM > Feeds.
  4. Ubica tu feed de DNSFilter y verifica que el Estado aparezca como Activo.
  5. Haz clic en el nombre del feed para ver los detalles.
  6. Verifica la métrica Registros transferidos para confirmar que los datos fluyen.
  7. Para buscar eventos de DNSFilter, ve a Buscar y ejecuta la siguiente consulta:

    metadata.log_type = "DNSFILTER"
    

Referencia de métodos de autenticación

Los feeds de webhook de Google SecOps admiten varios métodos de autenticación. La integración del HEC de DNSFilter usa el método híbrido.

Método utilizado: Híbrido (URL + encabezado)

DNSFilter envía la clave de API en la URL y la clave secreta (token de HEC) en el encabezado de la solicitud.

  • Formato de la solicitud:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    Authorization: Splunk <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Método alternativo: Encabezados personalizados

Si configuras una aplicación personalizada para enviar registros a Google SecOps, usa este método para mejorar la seguridad.

  • Formato de la solicitud:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • Ventajas:

    • La clave y el secreto de la API no son visibles en la URL
    • Más seguro (los encabezados no se registran en los registros de acceso al servidor web)
    • Método preferido cuando el proveedor lo admite

Nombres de encabezados de autenticación

Google SecOps acepta los siguientes nombres de encabezado para la autenticación:

  • Para la clave de API:

    • x-goog-chronicle-auth (recomendada)
    • X-Goog-Chronicle-Auth (no distingue mayúsculas de minúsculas)
  • Para la clave secreta, haz lo siguiente:

    • x-chronicle-auth (recomendada)
    • X-Chronicle-Auth (no distingue mayúsculas de minúsculas)
    • Authorization: Splunk <TOKEN> (compatibilidad con HEC)

Límites y prácticas recomendadas para webhooks

Límites de solicitudes

Límite Valor
Tamaño máximo de la solicitud 4 MB
QPS máx. (consultas por segundo) 15,000
Tiempo de espera de la solicitud 30 segundos
Comportamiento de reintento Automática con retirada exponencial

Prácticas recomendadas

  • Supervisa el estado de la exportación: Revisa periódicamente el estado de la exportación de datos en el panel de DNSFilter para garantizar el flujo continuo de datos.
  • Rotación de claves de API: Rota periódicamente tu clave de API de Google Cloud por motivos de seguridad.
  • Administración de claves secretas: Almacena la clave secreta de Google SecOps de forma segura y vuelve a generarla si se ve comprometida.
  • Retención de datos: Configura políticas de retención de datos adecuadas en DNSFilter y Google SecOps.
  • Configuración de alertas: Configura alertas en Google SecOps para eventos críticos de seguridad de DNS.

Soluciona problemas

Falla la prueba de conexión

Si falla la prueba de configuración de la exportación de datos de DNSFilter, haz lo siguiente:

  1. Verifica que la URL del HEC sea correcta y que incluya el parámetro de la clave de API.
  2. Verifica que la clave secreta (token de HEC) se haya copiado correctamente y sin espacios adicionales.
  3. Verifica que la clave de la API de Google Cloud tenga habilitado el acceso a la API de Chronicle.
  4. Verifica que el feed de Google SecOps tenga el estado Activo.
  5. Verifica la conectividad de red desde DNSFilter hasta los extremos de Google Cloud.

No aparecen datos en Google SecOps

Si la conexión se realiza correctamente, pero no aparecen datos, haz lo siguiente:

  1. Verifica que se generen consultas de DNS en tu implementación de DNSFilter.
  2. Consulta el registro de consultas de DNSFilter para confirmar que se está procesando el tráfico.
  3. En Google SecOps, busca metadata.log_type = "DNSFILTER" para verificar la transferencia.
  4. Verifica la métrica Registros transferidos del feed en Google SecOps.
  5. Revisa los registros de errores del feed para detectar errores de transferencia.

La exportación de datos devuelve un mensaje de error

Causas comunes de errores:

  • Credenciales no válidas: La clave de API o la clave secreta son incorrectas o expiraron.
  • Region mismatch: La región de la URL del extremo de Google SecOps no coincide con la de tu instancia.
  • Permisos: La clave de API no tiene habilitado el acceso a la API de Chronicle.
  • Problemas de red: El firewall o el proxy bloquean las conexiones HTTPS salientes.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
hora metadata.collected_timestamp Se convirtió con el formato de fecha: aaaa-MM-dd HH:mm:ss Z UTC
metadata.event_type Se establece en "STATUS_UPDATE" si principal_ip_present, principal_hostname_present o principal_mac_present es verdadero; de lo contrario, se establece en "GENERIC_EVENT".
question_type network.dns.questions Se convirtió question_type a question.type con la asignación de tipo de registro DNS y, luego, se combinó en un array.
código network.dns.response_code Se convirtió con la asignación de códigos de respuesta de DNS
protocolo network.ip_protocol Se convirtió con la asignación de protocolos de IP
cliente principal.hostname Valor copiado directamente
request_address, ip4, ip6, source_addresses principal.ip Se combinó de request_address (IP extraída), ip4 (IP extraída), ip6 (IP extraída) y las IPs extraídas del array source_addresses.
región principal.location.country_or_region Valor copiado directamente
clientMac principal.mac El valor se copia directamente si coincide con la regex de MAC
clientID principal.resource.product_object_id Valor copiado directamente
nombre de usuario principal.user.user_display_name Valor copiado directamente
user_id principal.user.userid Valor copiado directamente
code, original_code, clientType, collection, network_name, networkID, collectionID, policy, policyID, scheduled_policy, scheduled_policyID, sec_cats, sec_allow_cats, block_cats, block_allow_cats, threat, allowed, method, organization, organizationID, applicationID, application_name, application_categoryID, application_category_name security_result.detection_fields Etiquetas combinadas de varios campos de origen como pares clave-valor
dominio target.administrative_domain Valor copiado directamente
fqdn target.domain.name Valor copiado directamente
metadata.product_name Se establece en "DNSFILTER".
metadata.vendor_name Se establece en "DNSFILTER".

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.