Recopila registros de la WAF de Cloudflare

Se admite en los siguientes países:

En este documento, se describe cómo puedes recopilar registros de WAF de Cloudflare configurando un feed de Google Security Operations.

Para obtener más información, consulta Transferencia de datos a Google Security Operations.

Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar al formato estructurado del UDM. La información de este documento se aplica al analizador con la etiqueta de transferencia CLOUDFLARE_WAF.

Configura el WAF de Cloudflare con la API

Después de activar el registro de Cloudflare, usa los siguientes parámetros para habilitar la integración:

  • Auth email: Es la dirección de correo electrónico de la cuenta de Cloudflare.

  • Clave de autenticación: Es el token de la API de Cloudflare.

  • ID de zona: Es el ID de zona de Cloudflare.

Para obtener el ID de zona y la clave de autenticación, sigue estos pasos:

  1. Accede al panel de Cloudflare.
  2. Haz clic en el sitio web que se debe supervisar.
  3. Haz clic en Obtén tu clave de API para obtener la clave de autenticación.
  4. Selecciona Token de API.
  5. Haz clic en Create Token.
  6. Proporciona los siguientes valores en la página Crear token:
    1. En el campo Nombre del token, proporciona el nombre del token.
    2. En la sección Permisos, haz lo siguiente:
      1. Selecciona Zona, Registros y Leer en la primera, segunda y tercera lista, respectivamente.
      2. Haz clic en Agregar más. Selecciona Zona, Analytics y Leer en la primera, segunda y tercera lista, respectivamente.
      3. Haz clic en Agregar más. Selecciona Zona, Servicios de firewall y Leer en la primera, segunda y tercera lista, respectivamente.
      4. En la sección Recursos de zona, selecciona Incluir y Todas las zonas en la primera y segunda lista, respectivamente.
  7. Haz clic en Continuar con el resumen.
  8. Haz clic en Create Token.
  9. Copia el token que se muestra, que es necesario para configurar el feed de Google Security Operations.

Configura el WAF de Cloudflare con el panel de Cloudflare

  1. Accede al panel de Cloudflare.
  2. Haz clic en el sitio web que se debe supervisar.
  3. Ve a Analytics y registros > Logpush.
  4. Selecciona Crear un trabajo de Logpush.
  5. En Seleccionar un destino, elige Google Cloud Storage.
  6. Ingresa o selecciona los siguientes detalles del destino:
    • Bucket: Es el nombre del bucket de Google Cloud.
    • Ruta: Es la ubicación del bucket dentro del contenedor de almacenamiento.
    • Organiza los registros en subcarpetas diarias (recomendado)
    • Para Otorgar acceso a Cloudflare para subir archivos a tu bucket, asegúrate de que tu bucket haya agregado a IAM de Cloudflare como un usuario con el rol de Administrador de objetos de almacenamiento.
    • Cuando termines de ingresar los detalles del destino, selecciona Continuar.
  7. Para demostrar la propiedad, Cloudflare enviará un archivo a tu destino designado. Para encontrar el token, selecciona el botón Open en la pestaña Overview del archivo de desafío de propiedad y, luego, pégalo en el panel de Cloudflare para verificar tu acceso al bucket. Ingresa el token de propiedad y selecciona Continuar.
  8. Selecciona el conjunto de datos que deseas enviar al servicio de almacenamiento.
  9. Configura tu trabajo de Logpush:
    • Ingresa el nombre del trabajo.
    • En Si los registros coinciden, selecciona los eventos que deseas incluir o quitar de tus registros. No todos los conjuntos de datos tienen esta opción disponible.
    • En Enviar los siguientes campos, elige enviar todos los registros a tu destino de almacenamiento o elegir de forma selectiva los registros que deseas enviar.
  10. Selecciona Enviar cuando termines de configurar tu trabajo de Logpush.

Configura un feed en Google Security Operations para transferir los registros del WAF de Cloudflare

  1. Selecciona Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. Ingresa un nombre único para el Nombre del feed.
  4. Selecciona Google Cloud Storage como el Tipo de fuente.
  5. Selecciona WAF de Cloudflare como el Tipo de registro.
  6. Haz clic en Obtener cuenta de servicio. Google Security Operations proporciona una cuenta de servicio única que usa para transferir datos.
  7. Configura el acceso de la cuenta de servicio para que pueda acceder a los objetos de Cloud Storage. Para obtener más información, consulta Otorga acceso a la cuenta de servicio de Operaciones de seguridad de Google.
  8. Haz clic en Siguiente.
  9. Configura los siguientes parámetros de entrada:
    • URI del bucket de almacenamiento
    • Un URI es un
    • Opción de eliminación de fuentes
  10. Haz clic en Siguiente y, luego, en Enviar.

Para obtener más información sobre los feeds de Google Security Operations, consulta la documentación de los feeds de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de feed, consulta Configuración de feeds por tipo.

Si tienes problemas cuando creas feeds, comunícate con el equipo de asistencia de Operaciones de seguridad de Google.

Referencia de la asignación de campos

Este analizador extrae campos de los registros JSON del firewall de aplicaciones web (WAF) de Cloudflare y los transforma en el modelo de datos unificado (UDM). Controla varios campos de registro, como información de red, detalles de HTTP, resultados de seguridad y metadatos, y los asigna a los campos de UDM correspondientes para obtener una representación y un análisis coherentes en las Operaciones de seguridad de Google.

Tabla de asignación de la UDM

Campo de registro Asignación de UDM Lógica
Acción security_result.action_details El valor del campo "Action" del registro sin procesar se asigna a security_result.action_details.
Acción security_result.action El campo security_result.action se deriva según el valor del campo "Action". "allow" maps to ALLOW. "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" y "managedchallengeinteractivesolved" se asignan a ALLOW_WITH_MODIFICATION. "drop", "block" y "connectionclose" se asignan a BLOCK. "challengefailed" y "jschallengefailed" se asignan a FAIL. Cualquier otro valor no vacío o "desconocido" se asigna a UNKNOWN_ACTION.
ClientASN network.asn El valor del campo "ClientASN" del registro sin procesar se convierte en una cadena y se asigna a network.asn.
ClientASNDescription additional.fields.key Establece el valor en "ClientASNDescription".
ClientASNDescription additional.fields.value.string_value El valor del campo "ClientASNDescription" del registro sin procesar se asigna a additional.fields.value.string_value.
ClientCountry principal.location.country_or_region El valor del campo "ClientCountry" del registro sin procesar se asigna a principal.location.country_or_region.
ClientIP principal.ip El valor del campo "ClientIP" del registro sin procesar se asigna a principal.ip.
ClientRefererHost intermediary.hostname El valor del campo "ClientRefererHost" del registro sin procesar se asigna a intermediary.hostname.
ClientRefererPath network.http.referral_url El valor del campo "ClientRefererPath" del registro sin procesar se asigna a network.http.referral_url.
ClientRequestMethod network.http.method El valor del campo "ClientRequestMethod" del registro sin procesar se asigna a network.http.method.
ClientRequestHost target.hostname El valor del campo "ClientRequestHost" del registro sin procesar se asigna a target.hostname.
ClientRequestPath target.file.full_path El valor del campo "ClientRequestPath" del registro sin procesar se asigna a target.file.full_path si no está vacío o si es "/".
ClientRequestProtocol network.application_protocol La parte del protocolo del valor del campo "ClientRequestProtocol" (p.ej., "HTTP" de "HTTP/1.1") se extrae, se convierte a mayúsculas y se asigna a network.application_protocol.
ClientRequestUserAgent network.http.user_agent El valor del campo "ClientRequestUserAgent" del registro sin procesar se asigna a network.http.user_agent.
Fecha y hora metadata.event_timestamp El valor del campo "Fecha y hora" del registro sin procesar se analiza como una marca de tiempo RFC 3339 y se asigna a metadata.event_timestamp.
EdgeColoCode additional.fields.key Establece el valor en "EdgeColoCode".
EdgeColoCode additional.fields.value.string_value El valor del campo "EdgeColoCode" del registro sin procesar se asigna a additional.fields.value.string_value.
EdgeResponseStatus network.http.response_code El valor del campo "EdgeResponseStatus" del registro sin procesar se convierte en un número entero y se asigna a network.http.response_code.
Tipo metadata.product_event_type El valor del campo "Kind" del registro sin procesar se asigna a metadata.product_event_type.
Metadata.filter target.resource.attribute.labels.key Establece la opción en "Filtro de metadatos".
Metadata.filter target.resource.attribute.labels.value El valor del campo "Metadata.filter" del registro sin procesar se asigna a target.resource.attribute.labels.value.
Metadata.type target.resource.attribute.labels.key Establece el valor en "Tipo de metadatos".
Metadata.type target.resource.attribute.labels.value El valor del campo "Metadata.type" del registro sin procesar se asigna a target.resource.attribute.labels.value.
RayID metadata.product_log_id El valor del campo "RayID" del registro sin procesar se asigna a metadata.product_log_id.
RuleID security_result.rule_id El valor del campo "RuleID" del registro sin procesar se asigna a security_result.rule_id.
Fuente security_result.rule_name El valor del campo "Source" del registro sin procesar se asigna a security_result.rule_name.
N/A metadata.vendor_name Se codifica de forma fija en “Cloudflare”.
N/A metadata.product_name Está codificado de forma fija en "Cloudflare Log Aggregator".
N/A metadata.log_type Está codificado de forma fija en "CLOUDFLARE_WAF".
N/A metadata.event_type Se determina según la lógica del analizador en función de la presencia de "ClientIP", "ClientRequestHost" y el valor de "app_protocol". Los valores posibles son NETWORK_HTTP, NETWORK_CONNECTION, STATUS_UPDATE y GENERIC_EVENT.

Cambios

2023-08-30

  • Se inicializó el campo "ClientRequestPath".

2023-02-02

  • Se validó el valor "security_result" antes de que se combinara con el evento.

2022-09-16

  • Se asignó el campo "Acción" a "security_result.action_details".
  • Se asignó "security_result.action" a "ALLOW_WITH_MODIFICATION" cuando la acción contiene "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" y "managedchallengeinteractivesolved".
  • Se asignó "security_result.action" a "BLOCK" cuando la acción contiene "drop", "block", "connectionclose".
  • Se asignó "security_result.action" a "FAIL" cuando la acción contiene "challengefailed", "jschallengefailed".

2022-07-25

  • Descripción: Analizador creado recientemente