tutoriales.com

Protegiendo Aplicaciones Web: Implementación de Cloud Armor y WAF en Google Cloud

Guía práctica y detallada para implementar políticas de seguridad avanzadas en Google Cloud utilizando Cloud Armor, protegiendo tus servicios expuestos mediante Application Load Balancers frente a ataques de denegación de servicio (DDoS) y vulnerabilidades web comunes.

Intermedio12 min de lectura7 views
Reportar error

🛡️ Introducción a la Seguridad Perimetral en Google Cloud

En el panorama digital actual, las aplicaciones web están expuestas constantemente a una gran variedad de amenazas cibernéticas, desde ataques distribuidos de denegación de servicio (DDoS) hasta intrusiones sofisticadas como inyecciones SQL y Cross-Site Scripting (XSS). Proteger el perímetro de tu infraestructura en la nube ya no es una opción, sino una necesidad crítica para mantener la continuidad del negocio y la confianza de los usuarios.

Google Cloud ofrece herramientas nativas de alto rendimiento para mitigar estos riesgos. Entre ellas destaca Google Cloud Armor, un servicio de protección contra DDoS y cortafuegos de aplicaciones web (WAF) integrado directamente con el balanceador de cargas HTTP(S) global de Google.

📌 Nota: Este tutorial asume que ya cuentas con una infraestructura básica en Google Cloud y un Application Load Balancer configurado apuntando a tus backends (Compute Engine, GKE o Cloud Run).

🎯 Objetivos de Aprendizaje

Al finalizar este tutorial completo, serás capaz de:

  • Comprender la arquitectura y el funcionamiento de Cloud Armor.
  • Configurar reglas de seguridad perimetrales basadas en geolocalización y direcciones IP.
  • Implementar reglas preconfiguradas del WAF para mitigar las vulnerabilidades del OWASP Top 10.
  • Monitorear y analizar el tráfico malicioso mediante Cloud Logging y métricas de seguridad.
  • Diseñar una estrategia de mitigación de ataques DDoS volumétricos.

🛠️ Requisitos Previos

Antes de comenzar con la configuración práctica, asegúrate de cumplir con lo siguiente:

  • Una cuenta activa de Google Cloud con permisos de administrador de seguridad o permisos equivalentes en IAM.
  • Un proyecto de Google Cloud con la facturación habilitada.
  • La herramienta de línea de comandos gcloud instalada y configurada en tu entorno local (o el uso directo de Cloud Shell).
  • Un balanceador de cargas HTTP(S) externo global configurado y en funcionamiento.

🏗️ Arquitectura de Google Cloud Armor

Cloud Armor opera en el borde de la red de Google (Edge), interceptando el tráfico antes de que llegue a tus servidores de backend. Esto permite bloquear solicitudes maliciosas globalmente consumiendo recursos mínimos de tu infraestructura interna.

Internet Google Cloud Platform (GCP) Cloud Armor Seguridad Perimetral (WAF/DDoS) Application Load Balancer HTTPS(S) Ingress SERVICIOS DE BACKEND Compute Engine GKE Cloud Run

Las políticas de seguridad en Cloud Armor se componen de reglas evaluadas en orden de prioridad. Cada regla evalúa atributos de la solicitud HTTP (IP de origen, país, cabeceras, cookies, etc.) y aplica una acción:

  • Allow: Permite el paso de la solicitud.
  • Deny: Bloquea la solicitud devolviendo un código de error HTTP (por ejemplo, 403 Forbidden).
  • Rate-based Ban: Limita la tasa de solicitudes y bloquea temporalmente a los atacantes que excedan el límite.

⚙️ Paso 1: Creación de una Política de Seguridad Base

El primer paso para proteger tus aplicaciones es crear una política de seguridad de Cloud Armor que actuará como el contenedor principal de nuestras reglas.

Para crear una política base mediante la consola de Google Cloud o la terminal, utilizaremos la interfaz de comandos por su precisión y repetibilidad.

Primero, abre tu terminal y ejecuta el siguiente comando para crear una política de seguridad con una regla predeterminada que permita todo el tráfico legítimo:

gcloud compute security-policies create web-app-security-policy \
    --description="Politica de seguridad principal para la aplicacion web" \
    --global

Una vez creada la política, la regla predeterminada (priority 2147483647) denegará o permitirá por defecto. Por defecto, se configura para permitir todo el tráfico que no coincida con ninguna otra regla específica.


🚫 Paso 2: Bloqueo de Tráfico por Geolocalización e IP

A menudo, es necesario restringir el acceso a regiones geográficas específicas por cumplimiento normativo o para mitigar campañas masivas de origen conocido.

Vamos a añadir una regla para bloquear el tráfico proveniente de un país específico (por ejemplo, supongamos que queremos bloquear temporalmente el tráfico de un país de prueba o con alto índice de ataques).

gcloud compute security-policies rules create 1000 \
    --security-policy=web-app-security-policy \
    --expression="origin.region_code == 'XX'" \
    --action=deny-403 \
    --description="Bloquear trafico del pais XX"
⚠️ Advertencia: Reemplaza `'XX'` por el código ISO de dos letras del país que desees bloquear. Asegúrate de no bloquear regiones donde residan tus usuarios legítimos.

También podemos bloquear direcciones IP específicas maliciosas:

gcloud compute security-policies rules create 1010 \
    --security-policy=web-app-security-policy \
    --expression="inIpRange(origin.ip, '203.0.113.50/32')" \
    --action=deny-403 \
    --description="Bloquear IP maliciosa especifica"

🛡️ Paso 3: Implementación del WAF contra OWASP Top 10

La verdadera potencia de Cloud Armor radica en sus firmas preconfiguradas del WAF para detectar ataques dirigidos a vulnerabilidades comunes descritas por OWASP (como Inyección SQL, Cross-Site Scripting, inclusión de archivos remotos, etc.).

Vamos a añadir una regla que evalúe y mitigue ataques de Inyección SQL utilizando las firmas preconfiguradas de Cloud Armor:

gcloud compute security-policies rules create 2000 \
    --security-policy=web-app-security-policy \
    --expression="evaluatePreconfiguredWaf('sqli-v33-stable', {"sensitivity": 2})" \
    --action=deny-403 \
    --description="Mitigacion de Inyeccion SQL con WAF"
💡 Consejo: El parámetro de sensibilidad (`sensitivity`) puede ajustarse de 1 a 4. Un nivel más alto aumenta la agresividad de la detección pero puede incrementar el riesgo de falsos positivos. Se recomienda comenzar en nivel 2 y afinar según los logs.

Podemos hacer lo mismo para proteger contra ataques de Cross-Site Scripting (XSS):

gcloud compute security-policies rules create 2010 \
    --security-policy=web-app-security-policy \
    --expression="evaluatePreconfiguredWaf('xss-v33-stable', {"sensitivity": 2})" \
    --action=deny-403 \
    --description="Mitigacion de XSS con WAF"

📊 Tabla Comparativa de Acciones de Cloud Armor

A continuación, se muestra una comparativa de las acciones disponibles al configurar reglas de seguridad:

AcciónDescripciónCódigo HTTP DevueltoCaso de Uso Principal
------------
allowPermite que la solicitud continúe hacia el balanceador.N/APermitir rangos de IP confiables o excepciones.
deny-403Bloquea la solicitud inmediatamente.403 ForbiddenBloqueo de ataques WAF, IPs maliciosas y países prohibidos.
------------
deny-404Simula que el recurso no existe.404 Not FoundOcultar endpoints sensibles ante escaneos.
rate-based-banLimita las solicitudes por IP y banea temporalmente.429 Too Many RequestsMitigación de ataques de fuerza bruta y DDoS de aplicación.

⏱️ Paso 4: Protección contra Ataques de Fuerza Bruta (Rate Limiting)

Para proteger formularios de inicio de sesión o APIs contra ataques de denegación de servicio a nivel de aplicación y fuerza bruta, configuraremos una regla basada en límites de tasa (rate limiting).

El siguiente comando configura una regla que limita a 5 solicitudes por minuto por cada dirección IP en rutas de inicio de sesión, bloqueando temporalmente a quienes excedan este umbral:

gcloud compute security-policies rules create 3000 \
    --security-policy=web-app-security-policy \
    --expression="request.path.matches('/api/v1/login')" \
    --action=rate-based-ban \
    --rate-limit-options=conformant-action=allow,exceed-action=deny-429,enforce-on-key=IP,rate-limit-threshold-count=5,rate-limit-threshold-interval-sec=60,ban-duration-sec=300 \
    --description="Proteccion de fuerza bruta en login con Rate Limiting"

🔗 Paso 5: Asociación de la Política al Balanceador de Cargas

Una vez creada y configurada la política de seguridad con sus respectivas reglas, debemos asociarla al backend service de nuestro Application Load Balancer para que entre en vigor.

gcloud compute backend-services update mi-backend-service \
    --global \
    --security-policy=web-app-security-policy
🔥 Importante: Los cambios en las políticas de seguridad de Cloud Armor suelen propagarse globalmente en pocos minutos, pero es recomendable realizar pruebas de validación una vez aplicada la asociación.

📈 Monitoreo y Auditoría con Cloud Logging

Cada vez que Cloud Armor bloquea una solicitud o aplica una regla, genera registros detallados que se envían automáticamente a Cloud Logging. Esto te permite auditar la efectividad de tus reglas y detectar patrones de ataque.

Para visualizar los registros de Cloud Armor y verificar los bloqueos en tiempo real, puedes utilizar el Explorador de Logs en la consola de Google Cloud con la siguiente consulta de sintaxis avanzada:

resource.type="http_load_balancer"
jsonPayload.enforcedSecurityPolicy.outcome="DENY"

Métricas Clave a Monitorear

  • Request Count by Security Policy: Cantidad de solicitudes evaluadas y su resultado.
  • Denied Request Rate: Tasa de bloqueo por regla específica.
  • WAF Triggered Signatures: Frecuencia de firmas de ataques detectadas (SQLi, XSS).

💡 Buenas Prácticas de Seguridad con Cloud Armor

Para maximizar la eficacia de tu WAF y evitar interrupciones en el servicio a usuarios legítimos, sigue estas recomendaciones:

  • Modo de Vista Previa (Preview Mode): Antes de bloquear activamente el tráfico con una regla WAF nueva, configura la regla en modo preview. Esto registrará los bloqueos potenciales en Cloud Logging sin afectar a los usuarios reales, permitiéndote afinar falsos positivos.
  • Actualización Constante: Mantén tus reglas de firmas preconfiguradas actualizadas para responder a las nuevas vulnerabilidades reportadas por la comunidad de seguridad.
  • Monitoreo Continuo: Configura alertas en Cloud Monitoring basadas en picos inusuales de denegaciones o tráfico bloqueado.

❓ Preguntas Frecuentes (FAQ)

¿Cloud Armor afecta la latencia de mis aplicaciones?No de forma perceptible. Cloud Armor se ejecuta en la red de borde global de Google («Google Edge»), lo que garantiza que las inspecciones de seguridad y el filtrado ocurran extremadamente cerca del usuario final, optimizando el rendimiento general.
¿Puedo usar Cloud Armor con balanceadores internos?Actualmente, Cloud Armor está diseñado para proteger Application Load Balancers externos (globales y regionales) y balanceadores de red de transferencia externos basados en proxy.
¿Qué diferencia hay entre Cloud Armor Standard y Enterprise?La versión Standard ofrece reglas basadas en IP, geolocalización y WAF básico. La versión Enterprise añade capacidades avanzadas como protección avanzada contra DDoS adaptativa, mitigación automatizada de bots y soporte experto continuo.

🏁 Conclusión

Has completado exitosamente la configuración de un perímetro de seguridad robusto en Google Cloud utilizando Cloud Armor. Desde la creación de políticas base y reglas de geolocalización, hasta la implementación de un WAF avanzado contra el OWASP Top 10 y limitación de tasa contra ataques de fuerza bruta, tu aplicación web cuenta ahora con una defensa multicapa altamente escalable.

Recuerda revisar periódicamente tus registros de Cloud Logging y refinar tus reglas para adaptarte a la evolución constante de las amenazas en la web.

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!