Quiero proteger la aplicación de los ataques DDoS a la capa 7 mediante la regla de limitación de la velocidad de AWS WAF con el equilibrador de carga de aplicación que se encuentra detrás del acelerador global.
Descripción breve
Se pueden aprovechar AWS Global Accelerator, el equilibrador de carga de aplicación y AWS WAF para defenderse de los ataques de denegación de servicio distribuido (DDoS) a las capas de las aplicaciones.
Nota: La limitación de la velocidad de los clientes mediante el equilibrador de carga de aplicación y el WAF requiere que se configure la IP de origen preserved=TRUE en el acelerador. Para obtener más información, consulte Conservar las direcciones IP de los clientes en AWS Global Accelerator.
Resolución de problemas
La regla de limitación de la velocidad de AWS WA permite bloquear automáticamente a los clientes de direcciones IP específicas que envían una avalancha abrumadora de solicitudes a la aplicación. La regla basada en la velocidad rastrea la cantidad de solicitudes enviadas por cada dirección IP, en función de un período de tiempo variable. Cuando las solicitudes superan el límite de velocidad, la regla bloqueará inmediatamente las solicitudes de la dirección IP de origen, hasta que la dirección reduzca el número de solicitudes.
Nota: También se puede configurar la regla para que inspeccione y bloque numerosos componentes de una solicitud, incluido el país que origina la solicitud.
Requisitos previos
Crear una ACL web basada en reglas
Cree una regla basada en la velocidad en la lista de control de acceso (ACL) web, con un límite de velocidad agresivo de 100. A continuación, utilice el ejemplo de prueba para comprobar si la regla funciona.
- Vaya a la consola de AWS WAF para crear una regla de ACL web.
- Añada una regla personalizada a la ACL web.
- Asígnele un nombre y defina la regla basada en la velocidad como Type.
- Configure 100 como el Límite de velocidad.
- Deje el resto de ajustes como están. A continuación, haga clic en Añadir regla.
- Guarde la ACL web.
Comprobación de los resultados
La prueba simula un ataque de inundación de HTTP. La herramienta de pruebas de carga muestra el progreso de las solicitudes recibidas. En algún momento, las solicitudes comenzarán a fallar porque quedarán bloqueadas por la regla de limitación de la velocidad que se configuró.
-
Ejecute la herramienta más pesada que esté instalada en su ordenador.
Nota: O bien, abra AWS CloudShell en la consola (es posible que reciba un mensaje para cambiar a la región en la que es compatible).
# Install globally as root:
npm install -g loadtest
# On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
sudo npm install -g loadtest
-
Introduzca la URL de Global Accelerator, como se muestra a continuación:
# Global Accelerator url
GA_URL=http://your_Global_Acclerator_URL
Nota: Sustituya your_Global_Accelerator_URL por la URL de Global Accelerator.
-
Para iniciar la avalancha de solicitudes de simulación de pruebas de carga, ejecute el comando en la terminal.
Nota: Esto debería tardar 45 segundos en ejecutarse, así que vigile el flujo.
loadtest -n 1000 -c 1 --rps 25 $GA_URL
El comando enviará un total de 1000 solicitudes, con una coincidencia de 1 y 25 solicitudes por segundo. Con esta velocidad de solicitudes por segundo, antes de cuatro segundos alcanzará el límite que haya configurado.
-
Analice el flujo de salida. Observe que, en algún momento, las solicitudes comenzaron a fallar. Los errores indicarán que la regla WAF bloqueó todas las solicitudes de la dirección IP de origen.
[Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
[Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
[Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests