avatar Artículo

AWS WAF (Web Application Firewall): Análisis en profundidad

Aprende cómo AWS WAF ayuda a proteger tus aplicaciones web de ataques maliciosos con su protección ágil, facilidad de despliegue y mantenimiento, rentabilidad y escalabilidad.

AWS WAF (Web Application Firewall): Análisis en profundidad

1. Introducción

Un Web Application Firewall (WAF) es una solución de seguridad que protege aplicaciones web de ataques maliciosos, como cross-site scripting, inyección SQL y tráfico de bots maliciosos. WAF típicamente se despliega como un proxy inverso, situándose entre internet y la aplicación web, para inspeccionar y filtrar solicitudes entrantes antes de que lleguen al servidor web.

waf-basic

1.1. Cómo funciona WAF

WAF funciona analizando solicitudes HTTP y HTTPS entrantes a una aplicación web y permite o bloquea solicitudes basándose en reglas de seguridad predefinidas. Las reglas de seguridad pueden basarse en direcciones IP, encabezados, parámetros y otros atributos de la solicitud. WAF también puede realizar Deep Packet Inspection (DPI) para inspeccionar el contenido de la carga útil de la solicitud y determinar si la solicitud contiene contenido malicioso.

Si una solicitud viola una regla de seguridad, el WAF bloquea la solicitud y devuelve una respuesta de error al cliente.

1.2. AWS WAF

AWS WAF es una opción popular para soluciones WAF basadas en la nube, proporcionando un conjunto completo de reglas de seguridad para proteger aplicaciones web.

AWS WAF (Web Application Firewall) es un servicio basado en la nube que protege tus aplicaciones web, defendiéndolas contra exploits web comunes que podrían impactar la disponibilidad, comprometer la seguridad o consumir recursos excesivos. Te permite controlar el acceso a tu contenido web y proporciona reglas de seguridad personalizables para filtrar tráfico basándose en direcciones IP, encabezados HTTP, contenido del cuerpo HTTP o cadenas URI.

Aquí hay una representación visual de la arquitectura básica de AWS WAF:

waf-0

1.3. Recursos protegidos

Puedes proteger los siguientes tipos de recursos:

  • Distribución de Amazon CloudFront
  • API REST de Amazon API Gateway
  • Application Load Balancer
  • API GraphQL de AWS AppSync
  • Pool de usuarios de Amazon Cognito
  • Servicio de AWS App Runner
  • Instancia de AWS Verified Access

1.4. Componentes principales

Los componentes principales de AWS WAF incluyen lo siguiente:

  • Rules: AWS WAF te permite crear reglas que definen los tipos de tráfico que deseas permitir o bloquear para que llegue a tus aplicaciones web. Puedes crear reglas basadas en varias condiciones como direcciones IP, encabezados HTTP, cadenas URI y contenido del cuerpo HTTP.

  • Managed Rule Groups: AWS WAF proporciona grupos de reglas gestionadas preconstruidas que ofrecen protección contra ataques web comunes como inyección SQL, cross-site scripting (XSS) y más. Estos grupos de reglas son creados y mantenidos por AWS y actualizados regularmente para asegurar que proporcionen protección actualizada contra las últimas amenazas.

  • Web ACLs: AWS WAF usa web ACLs (Web Access Control Lists) para agrupar reglas que luego puedes aplicar a una o más aplicaciones web. Los web ACLs te permiten aplicar un conjunto de reglas en múltiples aplicaciones web, facilitando la gestión y aplicación de políticas de seguridad de manera consistente.

1.5. Beneficios y características

AWS WAF ofrece una amplia gama de beneficios y características, permitiéndote asegurar tus aplicaciones web de manera efectiva. Aquí hay algunas ventajas clave de usar AWS WAF:

  • Protección ágil contra ataques web: La propagación y actualizaciones de reglas de AWS WAF toman menos de un minuto, permitiéndote reaccionar más rápido cuando estás bajo ataque o cuando surgen problemas de seguridad.

  • Facilidad de despliegue y mantenimiento: AWS WAF es fácil de desplegar y protege aplicaciones desplegadas en Amazon CloudFront, Application Load Balancer o Amazon API Gateway. No hay software adicional que desplegar, configuración DNS o certificado SSL/TLS que gestionar.

  • Rentable: AWS WAF es un servicio de pago por uso, lo que significa que solo pagas por los recursos que usas. Esto lo convierte en una solución rentable para asegurar tus aplicaciones web.

  • Visibilidad mejorada del tráfico web: AWS WAF proporciona visibilidad casi en tiempo real de tu tráfico web, que puedes usar para crear nuevas reglas o alertas en Amazon CloudWatch.

  • Escalabilidad: AWS WAF está diseñado para manejar altos volúmenes de tráfico y puede escalar automáticamente para satisfacer las demandas de tus aplicaciones web.

  • Flexibilidad: AWS WAF proporciona una amplia gama de opciones para crear reglas personalizadas para filtrar tráfico, dándote mayor flexibilidad para definir tus políticas de seguridad.

2. Práctica con AWS WAF

Primero que nada, debes saber que AWS WAF es un servicio regional. Sin embargo, parece un servicio global cuando accedes a él, pero tienes que cambiar entre regiones usando esta opción:

waf-regional

Comenzar con WAF es relativamente sencillo, simplemente inicia sesión en la Consola de Administración de AWS y navega al servicio AWS WAF. Desde allí, puedes crear una nueva política WAF y configurar la política con las reglas de seguridad deseadas.

  • Paso 1: Describe el web ACL y asócialo a recursos de AWS waf-1

  • Paso 2: Agrega reglas y grupos de reglas waf-2

  • Paso 3: Establece la prioridad de las reglas waf-3

  • Paso 4: Configura métricas waf-4

  • Paso 5: Revisa y crea el web ACL waf-5 waf-6

2.1. Habilitando logs

Los logs están deshabilitados por defecto, así que tenemos que habilitarlos. Tenemos que entrar al Web ACL creado y acceder a la pestaña Logging and Metrics: waf-8

Como puedes verificar en la siguiente imagen, tendremos 3 opciones como Logging Destination (CloudWatch Logs Groups, Kinesis Data Firehose stream y S3 bucket): waf-9

Después de habilitar los logs de CloudWatch, podemos acceder a la pestaña CloudWatch Log Insights y ejecutar consultas de muestra o crear consultas personalizadas para analizar los logs. Podemos ver los resultados como logs o en un diagrama (Visualization): waf-10

2.2. Métricas

AWS WAF reporta métricas a CloudWatch en intervalos de un minuto por defecto, y las métricas se retienen durante 2 semanas.

Las métricas monitoreadas son las siguientes:

  • AllowedRequests
  • BlockedRequests
  • CountedRequests
  • PassedRequests

Estas métricas proporcionan un recuento SUM de solicitudes web que llegan a una Regla o Web ACL específico.

waf-metrics

2.3. Crear alarmas personalizadas

Usualmente es una buena idea crear algunas alarmas para ser notificado si aparecen algunas solicitudes bloqueadas en nuestra web, así que podemos configurar una CloudWatch Alarm.

La forma fácil de crear la alarma es a través de la Métrica de AWS WAF para BlockedRequests. Allí tenemos un enlace directo para crear una alarma con esta métrica asociada si accedemos a Graphed Metrics y seleccionamos el icono indicado en color rojo:

waf-alarm-1

Después de la creación, tendremos algo como esto:

waf-alarm-2

2.4. Estimación de costos

El costo de AWS WAF puede variar dependiendo de la escala de tu despliegue, oscilando desde unos pocos dólares por mes para despliegues pequeños hasta varios miles de dólares por mes para despliegues a gran escala. El precio de AWS WAF se basa en el número de solicitudes web procesadas y el número de reglas de seguridad que se utilizan.

Ejemplo de costo para nuestro ejemplo (1 Web ACL con algunas reglas gestionadas):

  • $5.00 por web ACL por mes (prorrateado por hora) * 1 web ACL = $5.00
  • $1.00 por regla por mes (prorrateado por hora) * 5 reglas = $1.00
  • $0.60 por millón de solicitudes procesadas * 1 (asumiremos 1 millón de solicitudes) = $0.60
  • $0.10 por métrica de alarma * 1 alarma = $0.10

Total: $6.70 por mes

3. Más información sobre AWS WAF

Para más información sobre AWS WAF, puedes visitar los siguientes enlaces

Este artículo está licenciado bajo CC BY 4.0 por el autor.