Introducción a AWS WAF

AWS WAF (Web Application Firewall) es un servicio de firewall para aplicaciones web que ayuda a proteger tus aplicaciones web contra ataques comunes que pueden afectar la disponibilidad, comprometer la seguridad o consumir recursos excesivos. AWS WAF te permite controlar cómo el tráfico llega a tus aplicaciones web mediante la creación de reglas de seguridad que bloquean patrones de tráfico malicioso.

Conceptos Clave

  1. Reglas: Definen los patrones de tráfico que deseas permitir o bloquear.
  2. Listas de control de acceso web (ACLs): Colecciones de reglas que se aplican a una o más aplicaciones web.
  3. Condiciones: Criterios específicos que se utilizan en las reglas para identificar el tráfico.
  4. Acciones: Las acciones que se toman cuando el tráfico coincide con una regla (permitir, bloquear o contar).

Configuración de AWS WAF

Paso 1: Crear una Lista de Control de Acceso Web (ACL)

  1. Accede a la consola de AWS WAF:

    • Inicia sesión en la consola de administración de AWS.
    • Navega a "AWS WAF & Shield".
  2. Crear una nueva ACL:

    • Haz clic en "Create web ACL".
    • Asigna un nombre a tu ACL.
    • Selecciona la región donde deseas implementar la ACL.

Paso 2: Definir Reglas y Condiciones

  1. Agregar reglas:

    • En la sección de reglas, haz clic en "Add rule".
    • Puedes crear una nueva regla o importar una regla administrada por AWS o un socio de AWS.
  2. Definir condiciones:

    • Las condiciones pueden incluir IPs, encabezados HTTP, cadenas de consulta, etc.
    • Por ejemplo, para bloquear una IP específica, selecciona "IP match condition" y agrega la IP que deseas bloquear.

Paso 3: Asociar la ACL con un recurso

  1. Seleccionar recursos:
    • Puedes asociar la ACL con un recurso como Amazon CloudFront, Application Load Balancer (ALB) o API Gateway.
    • Selecciona el recurso y aplica la ACL.

Ejemplo Práctico

A continuación, se muestra un ejemplo de cómo crear una regla para bloquear una dirección IP específica:

import boto3

# Crear un cliente de WAF
waf_client = boto3.client('waf')

# Crear una condición de coincidencia de IP
ip_set = waf_client.create_ip_set(
    Name='BlockedIPSet',
    ChangeToken=waf_client.get_change_token()['ChangeToken'],
    IPSetDescriptors=[
        {
            'Type': 'IPV4',
            'Value': '192.0.2.44/32'
        },
    ]
)

# Crear una regla que use la condición de coincidencia de IP
rule = waf_client.create_rule(
    Name='BlockSpecificIPRule',
    MetricName='BlockSpecificIP',
    ChangeToken=waf_client.get_change_token()['ChangeToken'],
    Predicates=[
        {
            'Negated': False,
            'Type': 'IPMatch',
            'DataId': ip_set['IPSet']['IPSetId']
        },
    ]
)

# Crear una ACL y asociar la regla
web_acl = waf_client.create_web_acl(
    Name='MyWebACL',
    MetricName='MyWebACL',
    DefaultAction={'Type': 'ALLOW'},
    ChangeToken=waf_client.get_change_token()['ChangeToken'],
    Rules=[
        {
            'Action': {'Type': 'BLOCK'},
            'Priority': 1,
            'RuleId': rule['Rule']['RuleId']
        },
    ]
)

Ejercicio Práctico

Ejercicio: Crea una regla en AWS WAF para bloquear todas las solicitudes que contengan una cadena específica en la URL.

Pasos:

  1. Accede a la consola de AWS WAF.
  2. Crea una nueva ACL.
  3. Define una condición de coincidencia de cadena.
  4. Crea una regla que use la condición de coincidencia de cadena.
  5. Asocia la ACL con un recurso.

Solución:

  1. Accede a la consola de AWS WAF y crea una nueva ACL.
  2. Define una condición de coincidencia de cadena:
    • Selecciona "String match condition".
    • Especifica la cadena que deseas bloquear (por ejemplo, "badstring").
  3. Crea una regla:
    • Selecciona la condición de coincidencia de cadena que creaste.
    • Configura la acción para bloquear.
  4. Asocia la ACL con un recurso como CloudFront o ALB.

Errores Comunes y Consejos

  • Error: No actualizar el token de cambio al crear múltiples recursos.

    • Solución: Asegúrate de obtener un nuevo ChangeToken antes de cada operación que lo requiera.
  • Error: No asociar la ACL con un recurso.

    • Solución: Verifica que la ACL esté asociada con el recurso correcto para que las reglas se apliquen.

Conclusión

AWS WAF es una herramienta poderosa para proteger tus aplicaciones web contra amenazas comunes. Al aprender a configurar y gestionar reglas y ACLs, puedes mejorar significativamente la seguridad de tus aplicaciones. En el siguiente módulo, exploraremos otros servicios de seguridad en AWS para complementar la protección de tus recursos.

© Copyright 2024. Todos los derechos reservados