Recopilar registros de WAF de Cloudflare
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). Gestiona varias acciones de Cloudflare, enriquece los datos con metadatos e información de red y, a continuación, estructura la salida en formato UDM.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso privilegiado a Google Cloud.
- Plan Enterprise de Cloudflare.
- Acceso privilegiado a Cloudflare.
Crea un Google Cloud segmento de almacenamiento
- Inicia sesión en la Google Cloud consola.
Ve a la página Segmentos de Cloud Storage.
Haz clic en Crear.
Configure el segmento:
- Nombre: introduzca un nombre único que cumpla los requisitos de nombres de segmentos (por ejemplo, cloudflare-waf).
- Elige dónde quieres almacenar los datos: selecciona una ubicación.
- Elige una clase de almacenamiento para tus datos: selecciona una clase de almacenamiento predeterminada para el segmento o Autoclass para gestionar automáticamente la clase de almacenamiento.
- Elige cómo quieres 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 del segmento.
- Clase de almacenamiento: elige la que mejor se adapte a tus necesidades (por ejemplo, Standard).
Haz clic en Crear.
Conceder permisos de segmento al usuario de gestión de identidades y accesos de Cloudflare
- En Google Cloud, ve a Almacenamiento > Navegador > Contenedor > Permisos.
- Añade la cuenta logpush@cloudflare-data.iam.gserviceaccount.com con el permiso Administrador de objetos de Storage.
Crear una tarea Logpush para registros de WAF mediante la interfaz de usuario de Cloudflare
- Inicia sesión en Cloudflare.
- Ve a Analíticas y registros > Logpush.
- Selecciona Create a Logpush job (Crear un trabajo de Logpush).
- En Seleccionar un destino, elige Google Cloud Almacenamiento.
- Introduce los siguientes detalles del destino:
- Segmento: Google Cloud nombre del segmento de almacenamiento
- Ruta: ubicación del segmento en el contenedor de almacenamiento.
- Selecciona Organizar los registros en subcarpetas diarias.
- Haz clic en Continuar.
- Seleccione el conjunto de datos Seguridad (WAF) para enviarlo al almacenamiento.
- Configura el trabajo de envío de registros:
- Escribe el nombre del trabajo.
- En Si los registros coinciden, puede seleccionar los eventos que quiere incluir o quitar de sus registros. Consulte 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 selectivamente los que quieras enviar.
- Haz clic en Enviar.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de WAF de Cloudflare).
- Selecciona Google Cloud Storage V2 como Tipo de origen.
- Seleccione Cloudflare WAF como Tipo de registro.
- Haz clic en Obtener cuenta de servicio.
- Haz clic en Siguiente.
Especifique los valores de los siguientes parámetros de entrada:
- URI de segmento de almacenamiento: la URL de Cloud Storage.
- Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
Haz clic en Siguiente.
Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga 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 UDM. |
Action |
security_result.action |
El valor de este campo se deriva del campo Action del registro sin procesar. Si Action es "allow", el campo UDM se define como ALLOW . Si Action es "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" o "managedchallengeinteractivesolved", el campo UDM se define como ALLOW_WITH_MODIFICATION . Si Action es "drop", "block" o "connectionclose", el campo UDM se define como BLOCK . Si Action es "challengefailed" o "jschallengefailed", el campo UDM se define como FAIL . De lo contrario, se le asigna el valor UNKNOWN_ACTION . |
ClientASN |
network.asn |
El valor de ClientASN del registro sin procesar se asigna directamente a este campo de UDM después de convertirlo en una cadena. |
ClientASNDescription |
additional.fields.key |
La clave se define de forma estática como "ClientASNDescription". |
ClientASNDescription |
additional.fields.value.string_value |
El valor de ClientASNDescription del registro sin procesar se asigna directamente a este campo de UDM. |
ClientCountry |
principal.location.country_or_region |
El valor de ClientCountry del registro sin procesar se asigna directamente a este campo de UDM. |
ClientIP |
principal.ip |
El valor de ClientIP del registro sin procesar se asigna directamente a este campo de UDM. |
ClientRefererHost |
intermediary.hostname |
El valor de ClientRefererHost del registro sin procesar se asigna directamente a este campo de UDM. |
ClientRefererPath |
network.http.referral_url |
El valor de ClientRefererPath del registro sin procesar se asigna directamente a este campo de UDM. |
ClientRequestHost |
target.hostname |
El valor de ClientRequestHost del registro sin procesar se asigna directamente a este campo de UDM. |
ClientRequestMethod |
network.http.method |
El valor de ClientRequestMethod del registro sin procesar se asigna directamente a este campo de UDM. |
ClientRequestPath |
target.file.full_path |
El valor de ClientRequestPath del registro sin procesar se asigna directamente a este campo de UDM. |
ClientRequestProtocol |
network.application_protocol |
La parte del protocolo de ClientRequestProtocol (por ejemplo, "HTTP" de "HTTP/1.1") se extrae mediante grok, se convierte a mayúsculas y se asigna a este campo UDM. |
ClientRequestUserAgent |
network.http.user_agent |
El valor de ClientRequestUserAgent del registro sin procesar se asigna directamente a este campo de UDM. |
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 UDM. |
EdgeColoCode |
additional.fields.key |
La clave se define de forma estática como "EdgeColoCode". |
EdgeColoCode |
additional.fields.value.string_value |
El valor de EdgeColoCode del registro sin procesar se asigna directamente a este campo de UDM. |
EdgeResponseStatus |
network.http.response_code |
El valor de EdgeResponseStatus del registro sin procesar se asigna directamente a este campo de UDM 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 UDM. |
Metadata.filter |
target.resource.attribute.labels.value |
El valor de Metadata.filter del registro sin procesar se asigna al campo value de una etiqueta de target.resource.attribute.labels . El key de esta etiqueta se define de forma estática como "Metadata filter". |
Metadata.type |
target.resource.attribute.labels.value |
El valor de Metadata.type del registro sin procesar se asigna al campo value de una etiqueta de target.resource.attribute.labels . El key de esta etiqueta se define de forma estática como "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 ha asignado estáticamente el valor "Cloudflare". Tiene un valor estático de "Cloudflare log Aggregator". Tiene un valor estático de "CLOUDFLARE_WAF". |
RayID |
metadata.product_log_id |
El valor de RayID del registro sin procesar se asigna directamente a este campo de UDM. |
RuleID |
security_result.rule_id |
El valor de RuleID del registro sin procesar se asigna directamente a este campo de UDM. |
Source |
security_result.rule_name |
El valor de Source del registro sin procesar se asigna directamente a este campo de UDM. |
timestamp |
metadata.event_timestamp , events.timestamp |
El valor de timestamp del registro sin procesar se asigna directamente a estos campos de UDM. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.