Recopila registros de DNS pasivo
En este documento, se explica cómo transferir registros de DNS pasivo a Google Security Operations con Google Cloud Storage V2.
El DNS pasivo es una fuente de datos de inteligencia de DNS que captura registros históricos de resolución de DNS para el análisis de amenazas y la investigación de dominios. Debido a que los datos suelen recopilarse y almacenarse como archivos, debes subirlos a un bucket de Google Cloud Storage (GCS) y, luego, configurar un feed de Google SecOps para transferirlos.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un proyecto de Google Cloud con la API de Cloud Storage habilitada
- Permisos para crear y administrar buckets de GCS
- Permisos para administrar políticas de IAM en buckets de GCS
- Acceso a archivos de datos de DNS pasivo (por ejemplo, DNSDB, Farsight o cualquier otro proveedor de DNS pasivo)
- Datos de DNS pasivo exportados en un formato compatible (por ejemplo, JSON o CSV)
Crea un bucket de Google Cloud Storage
- Ve a la consola de Google Cloud.
- Selecciona tu proyecto o crea uno nuevo.
- En el menú de navegación, ve a Cloud Storage > Buckets.
- Haz clic en Crear bucket.
Proporciona los siguientes detalles de configuración:
Parámetro de configuración Valor Name your bucket Ingresa un nombre único a nivel global (por ejemplo, passive-dns-logs).Tipo de ubicación Elige según tus necesidades (región, birregión o multirregión). Ubicación Selecciona la ubicación más cercana a tu instancia de Google SecOps (por ejemplo, us-central1).Clase de almacenamiento Estándar (recomendado para registros a los que se accede con frecuencia) Control de acceso Uniforme (recomendado) Herramientas de protección Opcional: Habilita el control de versiones de objetos o la política de retención. Haz clic en Crear.
Configura la exportación automática de datos de DNS pasivo a GCS
Por lo general, los datos de DNS pasivo están disponibles como archivos exportados de un proveedor de inteligencia de DNS (por ejemplo, Farsight DNSDB, DomainTools o Cisco Umbrella Investigate). Para mantener actualizados los datos en GCS, configura una canalización de exportación automática con uno de los siguientes enfoques.
Opción 1: Cloud Scheduler con Cloud Build (recomendado)
Usa Cloud Build activado por Cloud Scheduler para ejecutar un trabajo en contenedores que recupere datos de DNS pasivo de tu proveedor y los escriba en GCS.
Crea una cuenta de servicio para el trabajo de exportación:
- En Google Cloud Console, ve a IAM y administración > Cuentas de servicio.
- Haz clic en Crear cuenta de servicio.
- Proporciona los siguientes detalles de configuración:
- Nombre de la cuenta de servicio: Ingresa
passive-dns-export-sa - Descripción de la cuenta de servicio: Ingresa
Service account for automated Passive DNS data export to GCS
- Nombre de la cuenta de servicio: Ingresa
- Haz clic en Crear y continuar.
- Agrega las siguientes funciones:
- Administrador de objetos de Storage (para escribir archivos en GCS)
- Editor de Cloud Build (para ejecutar trabajos de Cloud Build)
- Haz clic en Listo.
Crea un archivo de configuración de Cloud Build (
cloudbuild.yaml):steps: - name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | apt-get update && apt-get install -y curl jq # Fetch Passive DNS data from your provider # Replace with the actual API call for your provider # Example for Farsight DNSDB: TIMESTAMP=$(date -u +%Y%m%d_%H%M%S) curl -s -H "X-API-Key: $${PDNS_API_KEY}" \ "https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/*.example.com" \ -o /workspace/passive_dns_$${TIMESTAMP}.json # Upload to GCS gcloud storage cp /workspace/passive_dns_$${TIMESTAMP}.json \ gs://${_BUCKET_NAME}/passive-dns/ substitutions: _BUCKET_NAME: 'passive-dns-logs'Almacena la clave de API como un secreto de Secret Manager:
- En la consola de GCP, ve a Seguridad > Secret Manager.
- Haz clic en Crear secreto.
- Ingresa
pdns-api-keycomo el nombre del secreto. - Ingresa la clave de API de tu proveedor de DNS pasivo como el valor del secreto.
- Haz clic en Crear.
Crea un trabajo de Cloud Scheduler para activar la compilación:
- En Google Cloud Console, ve a Cloud Scheduler.
- Haz clic en Crear trabajo.
Proporciona los siguientes detalles de configuración:
Parámetro de configuración Valor Nombre passive-dns-export-dailyRegión Selecciona la misma región que tu bucket de GCS. Frecuencia 0 3 * * *(diario a las 3:00 a.m. UTC)Zona horaria UTC (recomendado) Tipo de objetivo HTTP URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/buildsMétodo HTTP POST Encabezado de Auth Agregar token de OAuth Cuenta de servicio passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.comHaz clic en Crear.
Opción 2: Servicio de transferencia de almacenamiento (para almacenes de datos locales)
Si los datos de DNS pasivo se almacenan en un sistema de archivos local, usa el Servicio de transferencia de almacenamiento con un agente de transferencia.
- En la consola de GCP, ve a Servicio de transferencia de almacenamiento.
- Haz clic en Crear trabajo de transferencia.
- Selecciona Sistema de archivos POSIX como la fuente.
- Sigue las instrucciones para instalar el agente de transferencia de almacenamiento en una máquina con acceso a los archivos de datos de DNS pasivo.
Configura el trabajo de transferencia:
Parámetro de configuración Valor Directorio del código fuente Ruta de acceso al directorio que contiene archivos de datos de DNS pasivo Bucket de destino passive-dns-logsRuta de destino passive-dns/Programa Configura un programa recurrente (por ejemplo, diario). Haz clic en Crear.
Recupera la cuenta de servicio de Google SecOps
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Passive DNS Logs). - Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona DNS pasivo como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio.
Se mostrará un correo electrónico único de la cuenta de servicio, por ejemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia esta dirección de correo electrónico para usarla en el siguiente paso.
Otorga permisos de IAM a la cuenta de servicio de Google SecOps
La cuenta de servicio de Google SecOps necesita el rol de visualizador de objetos de Storage en tu bucket de GCS.
- Ve a Cloud Storage > Buckets.
- Haz clic en el nombre de tu bucket (por ejemplo,
passive-dns-logs). - Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- Proporciona los siguientes detalles de configuración:
- Agregar entidades: Pega el correo electrónico de la cuenta de servicio de Google SecOps (por ejemplo,
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com). - Asignar roles: Selecciona Visualizador de objetos de Storage.
- Agregar entidades: Pega el correo electrónico de la cuenta de servicio de Google SecOps (por ejemplo,
Haz clic en Guardar.
Configura el feed de Google SecOps
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Passive DNS Logs). - Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona DNS pasivo como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
URL del bucket de almacenamiento: Ingresa el URI del bucket de GCS:
gs://passive-dns-logs/passive-dns/- Reemplaza
passive-dns-logspor el nombre de tu bucket de GCS. - Reemplaza
passive-dnspor la ruta de acceso del prefijo configurada.
- Reemplaza
Opción de eliminación del código fuente: Selecciona la opción de eliminación según tu preferencia:
- Nunca: Nunca borra ningún archivo después de las transferencias (se recomienda para las pruebas).
- Borrar archivos transferidos: Borra los archivos después de que se transfirieron correctamente.
Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de que se transfirieron correctamente.
Máxima antigüedad del archivo: Incluye los archivos modificados en la última cantidad de días (el valor predeterminado es de 180 días).
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 en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| Nombre de host | intermediary.hostname | Valor copiado directamente |
| timestamp_s | metadata.event_timestamp | Analizado como marca de tiempo de UNIX |
| metadata.event_type | Establece "NETWORK_DNS" | |
| network.application_protocol | Establece "DNS" | |
| respuesta | network.dns.answers.data | Valor de la respuesta después de quitar el punto final |
| ttl | network.dns.answers.ttl | Convertido a número entero |
| clase | network.dns.questions.class | Asignado a un valor numérico (1 para IN, 3 para CH, 4 para HS) |
| consulta | network.dns.questions.name | Valor de la consulta después de quitar el punto final |
| tipo | network.dns.questions.type | Asignado del tipo (en mayúsculas) al valor numérico con la asignación de tipo de DNS |
| cliente | principal.ip | Valor copiado directamente |
| servidor | target.ip | Valor copiado directamente |
| metadata.product_name | Establece "DNS pasivo" |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.