Recopila registros de DNS pasivo

Compatible con:

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

  1. Ve a la consola de Google Cloud.
  2. Selecciona tu proyecto o crea uno nuevo.
  3. En el menú de navegación, ve a Cloud Storage > Buckets.
  4. Haz clic en Crear bucket.
  5. 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.
  6. 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.

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.

  1. Crea una cuenta de servicio para el trabajo de exportación:

    1. En Google Cloud Console, ve a IAM y administración > Cuentas de servicio.
    2. Haz clic en Crear cuenta de servicio.
    3. 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
    4. Haz clic en Crear y continuar.
    5. Agrega las siguientes funciones:
      • Administrador de objetos de Storage (para escribir archivos en GCS)
      • Editor de Cloud Build (para ejecutar trabajos de Cloud Build)
    6. Haz clic en Listo.
  2. 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'
    
  3. Almacena la clave de API como un secreto de Secret Manager:

    1. En la consola de GCP, ve a Seguridad > Secret Manager.
    2. Haz clic en Crear secreto.
    3. Ingresa pdns-api-key como el nombre del secreto.
    4. Ingresa la clave de API de tu proveedor de DNS pasivo como el valor del secreto.
    5. Haz clic en Crear.
  4. Crea un trabajo de Cloud Scheduler para activar la compilación:

    1. En Google Cloud Console, ve a Cloud Scheduler.
    2. Haz clic en Crear trabajo.
    3. Proporciona los siguientes detalles de configuración:

      Parámetro de configuración Valor
      Nombre passive-dns-export-daily
      Regió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/builds
      Método HTTP POST
      Encabezado de Auth Agregar token de OAuth
      Cuenta de servicio passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. Haz 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.

  1. En la consola de GCP, ve a Servicio de transferencia de almacenamiento.
  2. Haz clic en Crear trabajo de transferencia.
  3. Selecciona Sistema de archivos POSIX como la fuente.
  4. 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.
  5. 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-logs
    Ruta de destino passive-dns/
    Programa Configura un programa recurrente (por ejemplo, diario).
  6. Haz clic en Crear.

Recupera la cuenta de servicio de Google SecOps

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Passive DNS Logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona DNS pasivo como el Tipo de registro.
  7. Haz clic en Obtener cuenta de servicio.
  8. Se mostrará un correo electrónico único de la cuenta de servicio, por ejemplo:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copia 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.

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (por ejemplo, passive-dns-logs).
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. 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.
  6. Haz clic en Guardar.

Configura el feed de Google SecOps

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Passive DNS Logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona DNS pasivo como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. 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-logs por el nombre de tu bucket de GCS.
      • Reemplaza passive-dns por la ruta de acceso del prefijo configurada.
    • 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.

  9. Haz clic en Siguiente.

  10. 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.