Recopila registros de la WAF de Cloudflare

Compatible con:

Este analizador extrae campos de los registros JSON del firewall de aplicaciones web (WAF) de Cloudflare, los transforma y los asigna al modelo de datos unificado (UDM). Controla varias acciones de Cloudflare y enriquece los datos con metadatos y la información de la red antes de estructurar el resultado en el formato UDM.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a Google Cloud.
  • Asegúrate de tener un plan de Cloudflare Enterprise.
  • Asegúrate de tener acceso con privilegios a Cloudflare.

Crea un Google Cloud bucket de almacenamiento

  1. Accede a la Google Cloud consola
  2. Ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  3. Haz clic en Crear.

  4. Configura el bucket:

    • Nombre: Ingresa un nombre único que cumpla con los requisitos de nombre de bucket (por ejemplo, cloudflare-waf).
    • Elige dónde almacenar tus datos: Selecciona una ubicación.
    • Elige una clase de almacenamiento para tus datos: Selecciona una clase de almacenamiento predeterminada para el bucket o selecciona Clase automática para la administración automática de clases de almacenamiento.
    • Elige cómo controlar el acceso a los objetos: Selecciona no para aplicar la prevención del acceso público y elige un modelo de control de acceso para los objetos de tu bucket.
    • Clase de almacenamiento: Elige según tus necesidades (por ejemplo, Estándar).
  5. Haz clic en Crear.

Otorga permisos de bucket al usuario de IAM de Cloudflare

  1. En Google Cloud, ve a Almacenamiento > Navegador > Bucket > Permisos.
  2. Agrega la cuenta logpush@cloudflare-data.iam.gserviceaccount.com con el permiso de administrador de objetos de almacenamiento.

Crea un trabajo de Logpush para los registros de WAF con la IU de Cloudflare

  1. Accede a Cloudflare.
  2. Ve a Analytics y registros > Logpush.
  3. Selecciona Crear un trabajo de Logpush.
  4. En Selecciona un destino, elige Google Cloud Storage.
  5. Ingresa los siguientes detalles del destino:
    • Bucket: Google Cloud Nombre del bucket de almacenamiento
    • Ruta: Es la ubicación del bucket dentro del contenedor de almacenamiento.
    • Selecciona Organizar registros en subcarpetas diarias.
  6. Haz clic en Continuar.
  1. Selecciona el conjunto de datos Seguridad (WAF) para enviarlo al almacenamiento.
  2. Configura la tarea de logpush:
    • Ingresa el nombre del trabajo.
    • En Si los registros coinciden, puedes seleccionar los eventos que deseas incluir o quitar de tus registros. Consulta Filtros para obtener más información. No todos los conjuntos de datos tienen esta opción disponible.
    • En los campos Enviar lo siguiente, puedes enviar todos los registros a tu destino de almacenamiento o elegir de forma selectiva los que deseas enviar.
  3. Haz clic en Enviar.

Configura un feed en Google SecOps para transferir registros de WAF de Cloudflare

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de WAF de Cloudflare).
  4. Selecciona Google Cloud Storage como el Tipo de fuente.
  5. Selecciona Cloudflare WAF como el Tipo de registro.
  6. Haz clic en Obtener cuenta de servicio.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • URI de GCS: Es la URL de Cloud Storage.
    • El URI es un: selecciona Directorio que incluye subdirectorios.
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.
    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.
    • 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
Action security_result.action_details El valor de Action del registro sin procesar se asigna directamente a este campo de la AUA.
Action security_result.action El valor de este campo se deriva del campo Action en el registro sin procesar. Si Action es "allow", el campo UDM se establece en ALLOW. Si Action es "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" o "managedchallengeinteractivesolved", el campo UDM se establece en ALLOW_WITH_MODIFICATION. Si Action es "drop", "block" o "connectionclose", el campo UDM se establece en BLOCK. Si Action es "challengefailed" o "jschallengefailed", el campo de la AUA se establece en FAIL. De lo contrario, se establece como UNKNOWN_ACTION.
ClientASN network.asn El valor de ClientASN del registro sin procesar se asigna directamente a este campo de la AUA después de convertirlo en una cadena.
ClientASNDescription additional.fields.key La clave se establece de forma estática en "ClientASNDescription".
ClientASNDescription additional.fields.value.string_value El valor de ClientASNDescription del registro sin procesar se asigna directamente a este campo de la AUA.
ClientCountry principal.location.country_or_region El valor de ClientCountry del registro sin procesar se asigna directamente a este campo de la AUA.
ClientIP principal.ip El valor de ClientIP del registro sin procesar se asigna directamente a este campo de la AUA.
ClientRefererHost intermediary.hostname El valor de ClientRefererHost del registro sin procesar se asigna directamente a este campo de la AUA.
ClientRefererPath network.http.referral_url El valor de ClientRefererPath del registro sin procesar se asigna directamente a este campo de la AUA.
ClientRequestHost target.hostname El valor de ClientRequestHost del registro sin procesar se asigna directamente a este campo de la AUA.
ClientRequestMethod network.http.method El valor de ClientRequestMethod del registro sin procesar se asigna directamente a este campo de la AUA.
ClientRequestPath target.file.full_path El valor de ClientRequestPath del registro sin procesar se asigna directamente a este campo de la AUA.
ClientRequestProtocol network.application_protocol La parte del protocolo de ClientRequestProtocol (p.ej., "HTTP" de "HTTP/1.1") se extrae con grok, se convierte a mayúsculas y se asigna a este campo de la UDM.
ClientRequestUserAgent network.http.user_agent El valor de ClientRequestUserAgent del registro sin procesar se asigna directamente a este campo de la AUA.
Datetime metadata.event_timestamp El valor de Datetime del registro sin procesar se analiza como una marca de tiempo RFC 3339 y se asigna a este campo de la AUA.
EdgeColoCode additional.fields.key La clave se establece de forma estática en "EdgeColoCode".
EdgeColoCode additional.fields.value.string_value El valor de EdgeColoCode del registro sin procesar se asigna directamente a este campo de la AUA.
EdgeResponseStatus network.http.response_code El valor de EdgeResponseStatus del registro sin procesar se asigna directamente a este campo de la AUA y se convierte en un número entero.
Kind metadata.product_event_type El valor de Kind del registro sin procesar se asigna directamente a este campo de la AUA.
Metadata.filter target.resource.attribute.labels.value El valor de Metadata.filter del registro sin procesar se asigna al campo value de una etiqueta dentro de target.resource.attribute.labels. El key de esta etiqueta se establece de forma estática en "Filtro de metadatos".
Metadata.type target.resource.attribute.labels.value El valor de Metadata.type del registro sin procesar se asigna al campo value de una etiqueta dentro de target.resource.attribute.labels. El key de esta etiqueta se establece de forma estática en "Tipo de metadatos". El valor de este campo se deriva en función de la presencia y los valores de ClientIP, ClientRequestHost y app_protocol. Consulta el código del analizador para ver la lógica específica. Se establece de forma estática en "Cloudflare". Se establece de forma estática en "Agregador de registros de Cloudflare". Se establece de forma estática en "CLOUDFLARE_WAF".
RayID metadata.product_log_id El valor de RayID del registro sin procesar se asigna directamente a este campo de la AUA.
RuleID security_result.rule_id El valor de RuleID del registro sin procesar se asigna directamente a este campo de la AUA.
Source security_result.rule_name El valor de Source del registro sin procesar se asigna directamente a este campo de la AUA.
timestamp metadata.event_timestamp, events.timestamp El valor de timestamp del registro sin procesar se asigna directamente a estos campos de la AUA.

Cambios

2024-08-08

  • Se extrajeron datos de "ClientRequestHost" y "ClientRequestURI", se combinaron y se asignó el resultado a "target.url".

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

  • Analizador creado recientemente

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