La mayoría de los ataques DDoS van de volumen — abrumar a un objetivo con más tráfico del que puede manejar. Slowloris es lo contrario, y eso es lo que lo hace elegante y peligroso. Escrito por el investigador RSnake en 2009, no necesita botnet ni casi nada de ancho de banda. Un solo portátil en una conexión corriente puede dejar completamente offline un servidor Apache sin protección, no gritando más fuerte sino manteniendo la puerta abierta y negándose a marcharse.
Cómo funciona el ataque
Un servidor web solo puede manejar cierto número de conexiones simultáneas. Slowloris abre cuantas conexiones puede al objetivo y envía cabeceras de petición HTTP parciales — luego, justo lo bastante seguido para evitar un timeout, envía una línea de cabecera más, pero nunca termina la petición. El servidor mantiene abierta cada una de esas conexiones, esperando cortésmente una petición que nunca se completará. El pool de workers por defecto de Apache (a menudo unas 256 conexiones concurrentes) se llena con estas peticiones a medias, y una vez lleno, los visitantes reales son simplemente rechazados.
Por qué es tan difícil de detectar
Cada conexión Slowloris individual es legítima. Completa un handshake TCP real y envía cabeceras HTTP reales y válidas — solo que lentamente. No hay falsificación, ni inundación, ni amplificación, y el ancho de banda total es trivial. La detección DDoS a nivel de red, que vigila picos de tráfico, no ve nada inusual. La única forma de detectar Slowloris es conductual: notar que un número anormal de conexiones lleva demasiado tiempo en el mismo estado a medias.
Lo lento y sigiloso vence a lo grande y ruidoso
Slowloris demuestra que no necesitas volumen para causar una caída — necesitas agotar un recurso limitado. Aquí el recurso son los espacios de conexión, no el ancho de banda, y por eso las defensas basadas en ancho de banda lo pasan por alto por completo.
Cómo defenderse
- Prefiere servidores orientados a eventos: nginx y HAProxy manejan muchas conexiones inactivas mucho mejor que el modelo de workers de Apache.
- Configura timeouts de cabecera agresivos — cierra cualquier conexión que no haya completado sus cabeceras de petición en unos segundos.
- Limita el número máximo de conexiones concurrentes por IP de origen.
- Pon delante del origen un proxy inverso que termine el HTTP en el edge, para que las conexiones lentas se apilen contra los límites de conexión del proxy — diseñados justo para esto — y nunca lleguen a tu servidor.
Dónde encaja Akarguard
Como Akarguard termina el HTTP en su edge de proxy inverso, un ataque Slowloris agota los espacios de conexión del proxy, no los de tu origen — y el manejo de conexiones y los límites por IP del proxy están hechos para absorber exactamente este tipo de abuso lento y sigiloso. Tu origen solo recibe peticiones completas y reenviadas, así que su pool de workers nunca se llena de conexiones a medias. Combinado con los límites de conexión por IP que configuras desde el panel, el ataque que podría tumbar una máquina Apache solitaria se convierte en un no-evento tras el edge.