slowhttptest es una herramienta de software diseñada para simular ataques de denegación de servicio (DoS) de capa de aplicación, también conocidos como "ataques HTTP lentos". Estos ataques se basan en la vulnerabilidad de que un servidor web mantenga abiertas las conexiones hasta que reciba una solicitud HTTP completa. A diferencia de un ataque DoS tradicional que inunda un servidor con grandes volúmenes de tráfico, un ataque HTTP lento es más sigiloso y requiere un ancho de banda mínimo.
Cómo funciona slowhttptest
- Envía peticiones parciales: En lugar de enviar una solicitud HTTP completa, envía solo una parte de las cabeceras.
- Mantiene las conexiones vivas: Continúa enviando datos parciales a intervalos regulares, impidiendo que el servidor agote el tiempo de espera y cierre las conexiones.
- Agotamiento de recursos: Cada una de estas conexiones incompletas consume un hilo o un proceso de conexión en el servidor. Debido a que el servidor tiene un número limitado de hilos, al ocupar todos los disponibles, no puede aceptar nuevas conexiones de usuarios legítimos.
- Simula la denegación de servicio: Cuando un usuario legítimo intenta acceder al servidor, no puede establecer una conexión porque todos los hilos están ocupados, lo que causa la denegación de servicio.
- Slowloris: Envía cabeceras HTTP incompletas (
-H). - Ataque HTTP POST lento: Declara un tamaño de cuerpo de petición muy grande (
Content-Length) pero lo envía a una velocidad extremadamente lenta (-B). - Ataque "Apache Killer": Envía cabeceras HTTP que contienen un gran número de solapamientos en la petición de rangos de bytes, causando un gran consumo de memoria y CPU.
- Lectura lenta: Envía peticiones legítimas pero lee la respuesta del servidor de forma muy lenta.
connected: 1000: La herramienta logró establecer todas las conexiones solicitadas.service available: NO: El servidor dejó de responder a nuevas peticiones, lo que confirma que las conexiones mantenidas porslowhttptestagotaron sus recursos disponibles.
- Aumentar los límites de recursos: Aumentar el número máximo de clientes simultáneos que el servidor puede soportar.
- Establecer tiempos de espera estrictos: Forzar un tiempo de espera más corto para las conexiones que no completan su solicitud en un tiempo razonable. Para servidores Apache, esto se puede configurar con el módulo
mod_reqtimeout. - Usar un firewall de aplicación web (WAF): Un WAF puede detectar y bloquear este tipo de tráfico malicioso antes de que llegue al servidor.
- Implementar balanceadores de carga o proxies inversos: Pueden ayudar a mitigar el impacto distribuyendo el tráfico entre múltiples servidores