Recopila registros del 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). Maneja varias acciones de Cloudflare y enriquece los datos con metadatos e información de la red antes de estructurar el resultado en el formato del UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso con privilegios a Google Cloud.
- Plan Enterprise de Cloudflare.
- Acceso privilegiado a Cloudflare
Crea un Google Cloud bucket de Storage
- Accede a la consola de Google Cloud .
Ve a la página Buckets de Cloud Storage.
Haz clic en Crear.
Configura el bucket:
- Nombre: Ingresa un nombre único que cumpla con los requisitos de nombres 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 Autoclass 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 selecciona un modelo de control de acceso para los objetos del bucket.
- Clase de almacenamiento: Elige según tus necesidades (por ejemplo, Estándar).
Haz clic en Crear.
Otorga permisos de bucket al usuario de IAM de Cloudflare
- En Google Cloud, ve a Storage > Browser > Bucket > Permissions.
- Agrega la cuenta logpush@cloudflare-data.iam.gserviceaccount.com con permiso de administrador de objetos de almacenamiento.
Crea un trabajo de Logpush para los registros del WAF con la IU de Cloudflare
- Accede a Cloudflare.
- Ve a Analytics & Logs > Logpush.
- Selecciona Crear un trabajo de Logpush.
- En Selecciona un destino, elige Google Cloud Storage.
- Ingresa los siguientes detalles del destino:
- Bucket: Google Cloud Nombre del bucket de almacenamiento
- Ruta de acceso: Es la ubicación del bucket dentro del contenedor de almacenamiento.
- Selecciona Organize logs into daily subfolders.
- Haz clic en Continuar.
- Selecciona el conjunto de datos Security (WAF) para enviarlo al almacenamiento.
- Configura el trabajo de envío de registros:
- Ingresa el Nombre del trabajo.
- En Si coinciden los registros, 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 de Enviar lo siguiente, puedes enviar todos los registros a tu destino de almacenamiento o elegir de forma selectiva los registros que deseas enviar.
- Haz clic en Enviar.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds en Configuración del SIEM > Feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración del SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros del WAF de Cloudflare).
- Selecciona Google Cloud Storage como el Tipo de fuente.
- Selecciona Cloudflare WAF como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- URI de GCS: Es la URL de Cloud Storage.
- URI is a: Selecciona Directory which includes subdirectories.
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- URI de GCS: Es la URL de Cloud Storage.
- URI is a: Selecciona Directory which includes subdirectories.
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tus preferencias.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
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 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 UDM 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 UDM 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 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 (p.ej., "HTTP" de "HTTP/1.1") se extrae con grok, se convierte a mayúsculas y se asigna a este campo del 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 del UDM. |
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 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 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 como "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 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? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.