Recopila registros del Detector de amenazas de DNS de Google Cloud

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros de Google Cloud DNS Threat Detector a Google Security Operations con Google Cloud Storage V2.

DNS Armor, con tecnología de Infoblox, es un servicio completamente administrado que proporciona seguridad a nivel de DNS para tus cargas de trabajo de Google Cloud. Su detector de amenazas avanzado está diseñado para detectar actividad maliciosa en el punto más temprano de la cadena de ataque, la consulta de DNS, sin agregar complejidad operativa ni sobrecarga de rendimiento. Después de detectar una amenaza, puedes obtener estadísticas prácticas sobre las amenazas de DNS a través de Cloud Logging.

Cuando habilitas un detector de amenazas de DNS para un proyecto, DNS Armor envía de forma segura tus registros de consultas de DNS vinculadas a Internet al motor de análisis basado en Google Cloud que impulsa Infoblox. Este motor utiliza una combinación de feeds de inteligencia sobre amenazas y análisis de comportamiento basados en IA para identificar amenazas. Cualquier actividad maliciosa detectada genera un registro de amenazas de DNS Armor, que luego se envía a tu proyecto y se escribe en Cloud Logging para que lo veas y tomes medidas al respecto.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Es la instancia de Google SecOps.
  • Proyecto de GCP 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
  • La API de Network Security está habilitada en tu proyecto.
  • Roles de IAM obligatorios para habilitar un detector de amenazas de DNS
  • Permisos para ver los registros de amenazas de DNS: resourcemanager.projects.get, resourcemanager.projects.list, networksecurity.dnsThreatDetectors.get, networksecurity.dnsThreatDetectors.list o los roles roles/networksecurity.dnsThreatDetectorViewer y roles/logging.viewer

Crea un bucket de Google Cloud Storage

  1. Ve a Google Cloud Console.
  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:

    Configuración Valor
    Asigna un nombre a tu bucket Ingresa un nombre global único (por ejemplo, dns-threat-detector-logs).
    Tipo de ubicación Elige según tus necesidades (región, birregional, multirregional)
    Ubicación Selecciona la ubicación (por ejemplo, us-central1).
    Clase de almacenamiento Estándar (recomendado para los 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.

Crear un detector de amenazas de DNS

En esta sección, se describe cómo crear un detector de amenazas de DNS para supervisar las redes de VPC y detectar actividad de DNS maliciosa vinculada a Internet.

Solo puedes tener un detector de amenazas de DNS habilitado para un proyecto.

Usa la consola de Google Cloud

  1. En la consola de Google Cloud, ve a la página Detección avanzada de amenazas.
  2. Haz clic en Crear detector de amenazas de DNS.
  3. Ingresa un nombre para tu detector de amenazas de DNS.
  4. Selecciona Todas las redes de VPC del proyecto.
  5. Haz clic en Crear.

Usa la herramienta de línea de comandos de gcloud

Como alternativa, crea un detector de amenazas de DNS con el comando gcloud:

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"

Reemplaza lo siguiente: - my-dns-threat-detector: El nombre del detector de amenazas de DNS. - PROJECT_ID: Es el ID de tu proyecto.

Configura Cloud Logging para exportar registros de DNS Threat Detector a GCS

Los registros de amenazas de DNS Armor se escriben en Cloud Logging. Debes configurar un receptor de registros para exportar estos registros a tu bucket de GCS.

  1. En la consola de Google Cloud, ve a Logging > Enrutador de registros.
  2. Haz clic en Crear un receptor.
  3. Proporciona los siguientes detalles de configuración:
    • Nombre del receptor: Ingresa un nombre descriptivo (por ejemplo, dns-threat-detector-to-gcs).
    • Descripción del receptor: Es una descripción opcional.
  4. Haz clic en Siguiente.
  5. En la sección Selecciona el servicio de receptor, haz lo siguiente:
    • Servicio de receptor: Selecciona Bucket de Cloud Storage.
    • Selecciona un bucket de Cloud Storage: Selecciona el bucket (por ejemplo, dns-threat-detector-logs) en el menú desplegable.
  6. Haz clic en Siguiente.
  7. En la sección Elige registros para incluirlos en el receptor, ingresa la siguiente consulta de filtro:

    resource.type="networksecurity.googleapis.com/DnsThreatDetector"
    logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
    

Reemplaza PROJECT_ID por el ID del proyecto de GCP.

  1. Haz clic en Siguiente.
  2. Revisa la configuración y haz clic en Crear receptor.

Usa la herramienta de línea de comandos de gcloud

Como alternativa, crea un receptor de registros con el comando gcloud:

gcloud logging sinks create dns-threat-detector-to-gcs \
    gs://dns-threat-detector-logs \
    --log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
    --project=PROJECT_ID

Reemplaza lo siguiente: - dns-threat-detector-logs: Es el nombre de tu bucket de GCS. - PROJECT_ID: Es el ID de tu proyecto de GCP.

Recupera la cuenta de servicio de Google SecOps

Las Operaciones de seguridad de Google usan una cuenta de servicio única para leer datos de tu bucket de GCS. Debes otorgar acceso a tu bucket a esta cuenta de servicio.

Configura un feed en Google SecOps para transferir registros del Detector de amenazas de Cloud DNS

  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, GCP DNS Threat Detector Logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona Google Cloud DNS Threat Detector 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. la usarás en el próximo paso.

  10. Haz clic en Siguiente.

  11. Especifica valores para los siguientes parámetros de entrada:

    • URL del bucket de almacenamiento: Ingresa el URI del bucket de GCS con la ruta de acceso del prefijo:

      gs://dns-threat-detector-logs/
      

      Reemplaza lo siguiente:

      • dns-threat-detector-logs: Es el nombre de tu bucket de GCS.
    • Opción de eliminación de la 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 la transferencia exitosa.
      • Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de la transferencia exitosa.
    • Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.
    • 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.
  12. Haz clic en Siguiente.

  13. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

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 almacenamiento en tu bucket de GCS.

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (por ejemplo, dns-threat-detector-logs).
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. Proporciona los siguientes detalles de configuración:
    • Agregar principales: Pega el correo electrónico de la cuenta de servicio de Google SecOps.
    • Asignar roles: Selecciona Visualizador de objetos de Storage.
  6. Haz clic en Guardar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
record.jsonPayload.dnsQuery.responseCode, record.jsonPayload.dnsQuery.authAnswer, record.jsonPayload.dnsQuery.queryTime, record.jsonPayload.partnerId, record.jsonPayload.detectionTime, record.logName additional.fields Los valores se copian en el mapa de adición y, luego, se combinan como entradas de mapa con value.string_value si no está vacío.
record.receiveTimestamp metadata.collected_timestamp Se analiza como marca de tiempo ISO8601.
metadata.event_type Se establece en "NETWORK_CONNECTION" si tiene principal y destino, en "STATUS_UPDATE" si tiene principal y, de lo contrario, en "GENERIC_EVENT".
record.timestamp metadata.event_timestamp Se analiza como marca de tiempo ISO8601.
record.insertId metadata.product_log_id El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.rdata network.dns.answers El valor se copia en answer.data y, luego, se combina como un array si no está vacío.
record.jsonPayload.dnsQuery.queryName, record.jsonPayload.dnsQuery.queryType network.dns.questions questions.name de queryName, questions.type asignado de la cadena queryType a un número entero y, luego, se combina como un array si no está vacío
record.jsonPayload.dnsQuery.responseCode network.dns.response_code Se asigna de cadena a número entero con una tabla predefinida
record.jsonPayload.dnsQuery.protocol network.ip_protocol El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.sourceIp principal.asset.ip El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.sourceIp principal.ip El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.location principal.location.country_or_region El valor se copia directamente si no está vacío.
record.resource.labels.location principal.location.name El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.vmProjectNumber, record.jsonPayload.dnsQuery.projectNumber principal.resource.attribute.labels Valores copiados en el mapa de adición y, luego, combinados como entradas del mapa si no están vacíos
record.jsonPayload.dnsQuery.vmInstanceId principal.resource.id El valor se copia directamente si no está vacío.
record.resource.labels.id principal.resource.product_object_id El valor se copia directamente si no está vacío.
record.resource.type principal.resource.type El valor se copia directamente si no está vacío.
security_result Se combinó a partir del mapa de security_result compilado
record.jsonPayload.threatInfo.confidence security_result.confidence Se asigna a LOW_CONFIDENCE si coincide con (?i)Low, a MEDIUM_CONFIDENCE si coincide con (?i)Medium y a HIGH_CONFIDENCE si coincide con (?i)High.
record.jsonPayload.threatInfo.threatDescription security_result.description El valor se copia directamente si no está vacío.
record.jsonPayload.threatInfo.threatIndicatorType, record.jsonPayload.threatInfo.threatIndicator, record.jsonPayload.threatInfo.threatFeed, record.jsonPayload.threatInfo.category, record.jsonPayload.threatInfo.type, record.jsonPayload.threatInfo.threat, record.jsonPayload.threatInfo.severity, record.resource.labels.resource_container security_result.detection_fields Valores copiados en el mapa de adición y, luego, combinados como entradas del mapa si no están vacíos
record.severity security_result.severity Se asigna a LOW si es (?i)Low, a INFORMATIONAL si es (?i)(Informational|Info), a MEDIUM si es (?i)Medium, a CRITICAL si es (?i)Critical y a HIGH si es (?i)High.
record.jsonPayload.threatInfo.threatId security_result.threat_id El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.destinationIp target.asset.ip El valor se copia directamente si no está vacío.
record.jsonPayload.dnsQuery.destinationIp target.ip El valor se copia directamente si no está vacío.
metadata.vendor_name Se establece en "Google Cloud".
metadata.product_name Se establece en "Google Cloud DNS Threat Detector".

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