Recopila registros de DNSFilter
Versión del analizador: 1.0
En este documento, se explica cómo configurar DNSFilter para enviar registros a Google Security Operations mediante webhooks a través del protocolo 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 de 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
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la página siguiente, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
DNSFilter HEC Feed). - Selecciona Webhook como el Tipo de origen.
- Selecciona DNSFILTER como el Tipo de registro.
- Haz clic en Siguiente.
- 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 correcto.
- Espacio de nombres del recurso: Es el espacio de nombres del recurso
- Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
- Haz clic en Siguiente.
- Revisa la configuración de tu nuevo feed de noticias 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:
- En la página de detalles del feed, haz clic en Generar clave secreta.
- Aparecerá un diálogo que muestra la clave secreta.
Copia y guarda la clave secreta de forma segura.
Obtén la URL del extremo del feed
- Ve a la pestaña Detalles del feed.
- En la sección Información del extremo, copia la URL del extremo del feed.
El formato de la URL es el siguiente:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:importDonde
{region}es la región de tu instancia de Google SecOps (por ejemplo,us,europe, oasia-southeast1), y{parent}es la ruta de acceso del recurso en el formatoprojects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.Guarda esta URL para los próximos pasos.
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
- Ve a la página Credenciales de la consola de Google Cloud.
- Selecciona tu proyecto (el proyecto asociado con tu instancia de Google SecOps).
- Haz clic en Crear credenciales > Clave de API.
- Se creará una clave de API y se mostrará en un diálogo.
- Haz clic en Editar clave de API para restringir la clave.
Restringe la clave de API
- 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). - En Restricciones de API:
- Selecciona Restringir clave (Restrict key).
- En el menú desplegable Seleccionar APIs, busca y selecciona API de Google SecOps (o API de Chronicle).
- Haz clic en Guardar.
- Copia el valor de la clave de API del campo Clave de API que se encuentra en la parte superior de la página.
Guarda la clave de API de forma segura.
Configura la exportación de datos de DNSFilter
Crea 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://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
Configura la exportación de datos en DNSFilter
- Accede al panel de DNSFilter.
- Ve a Herramientas > Exportación de datos.
- En la sección Destino de exportación, selecciona HTTP Event Collector (HEC).
- En la sección Configuración de HEC, ingresa lo siguiente:
- URL del recopilador de eventos HTTP: Pega la URL del extremo completa con la clave de API del paso anterior.
- Token del recopilador de eventos activo: Pega la clave secreta generada durante la creación del feed de Google SecOps.
- Haz clic en Guardar configuración.
DNSFilter probará la conexión y mostrará un mensaje de éxito si la configuración es correcta.
Verifica la transferencia de datos
- En el panel de DNSFilter, ve a Herramientas > Exportación de datos.
- Verifica que el Estado se muestre como Activo o Conectado.
- En la consola de Google SecOps, ve a Configuración de SIEM > Feeds.
- Busca tu feed de DNSFilter y verifica que el Estado se muestre como Activo.
- Haz clic en el nombre del feed para ver los detalles.
- Verifica la métrica Registros transferidos para confirmar que los datos fluyen.
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 de 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 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 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 de API y el secreto no son visibles en la URL.
- Es más seguro (los encabezados no se registran en los registros de acceso al servidor web).
- Es el método preferido cuando el proveedor lo admite.
Nombres de encabezados de autenticación
Google SecOps acepta los siguientes nombres de encabezados 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:
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 de webhook
Límites de solicitudes
| Límite | Valor |
|---|---|
| Tamaño máximo de la solicitud | 4 MB |
| Máx. de QPS (consultas por segundo) | 15,000 |
| Tiempo de espera de la solicitud | 30 segundos |
| Comportamiento de reintento | Automático 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:
- Verifica que la URL de HEC sea correcta y que incluya el parámetro de clave de API.
- Verifica que la clave secreta (token de HEC) se haya copiado correctamente sin espacios adicionales.
- Comprueba que la clave de API de Google Cloud tenga habilitado el acceso a la API de Chronicle.
- Verifica que el feed de Google SecOps esté en estado Activo.
- Verifica la conectividad de red de DNSFilter a 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:
- Verifica que se generen consultas de DNS en tu implementación de DNSFilter.
- Revisa el registro de consultas de DNSFilter para confirmar que se procesa el tráfico.
- En Google SecOps, busca
metadata.log_type = "DNSFILTER"para verificar la transferencia. - Verifica la métrica Registros transferidos del feed en Google SecOps.
- Revisa los registros de errores del feed en busca de errores de transferencia.
La exportación de datos muestra un mensaje de error
Causas comunes de errores:
- Credenciales no válidas: La clave de API o la clave secreta son incorrectas o vencieron.
- Incompatibilidad de región: La región de la URL del extremo de Google SecOps no coincide con tu instancia.
- Permisos: La clave de API no tiene habilitado el acceso a la API de Chronicle.
- Problemas de red: Firewall o proxy que 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ódigo de respuesta DNS. |
| protocolo | network.ip_protocol | Se convirtió con la asignación de protocolo 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 | Valor copiado 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". |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.