¿Qué es HTTP flood?
La inundación de HTTP (en inglés, HTTP flood) es un tipo de ataque DDoS (del inglés distributed denial of service o denegación de servicio distribuido). En estos casos, el objetivo del atacante es saturar la aplicación o el sitio web con una gran cantidad de visitas desde diferentes lugares. Los ataques HTTP flood también se conocen como ataques de capa 7, que hace referencia a la llamada capa de aplicación en el modelo OSI. Este modelo afirma que Internet consta de siete capas.
El objetivo de los ataques a la capa 7 es siempre privar a la red o al servidor de recursos. Cuando el hardware no cuenta con suficientes recursos, el cliente tarda más tiempo en responder a las peticiones. Durante un HTTP flood, como el atacante envía una gran cantidad de solicitudes al hardware sin pausa, el sistema se sobrecarga, impidiendo el acceso al servidor y a la red.
De esta manera, mediante un ataque HTTP flood, se pretende inhabilitar el servidor realizando peticiones completamente normales. ¿Cómo podemos evitar esta vulnerabilidad del protocolo HTTP?
¿En qué consiste un HTTP flood attack?
Los ataques HTTP flood se basan en las peticiones GET o POST del cliente. El cliente, es decir, el navegador que quiere acceder al sitio web, envía una de estas solicitudes. El servidor la procesa y, a su vez, envía la respuesta de vuelta al cliente.
Las peticiones GET recuperan contenido estático, como imágenes o bloques de texto. En cambio, las peticiones POST se utilizan para acceder a recursos dinámicos. En otras palabras, el método GET recibe datos del servidor, mientras que el método POST envía datos al servidor. Ambos pueden utilizarse para efectuar este tipo de ataque, aunque el método POST se emplea con más frecuencia, porque requiere un procesamiento complejo por parte del servidor.
Durante un ataque HTTP flood, se realizan muchas de estas peticiones simultáneamente y durante un período de tiempo prolongado. Por lo general, se usa una botnet para aumentar la cantidad de solicitudes. El ataque HTTP flood se diseña de tal manera que el servidor dedica el mayor volumen de recursos posible a cada petición. En una situación normal, esto es deseable, porque el servidor no recibe miles o cientos de miles de solicitudes por minuto, como sucede en este caso. Así, en este caso, el atacante no tiene más que esperar a que el servidor se desborde, con la consiguiente caída de la aplicación o del sitio web.
¿Cómo puedes impedir el ataque?
En ocasiones, las páginas generan mucho tráfico de forma temporal, por lo que cuesta detectar si las visitas están aumentando debido a un ataque o, simplemente, a los efectos de una buena campaña de marketing. Si, en efecto, descubres que se trata de un ataque HTTP flood, los cortafuegos pueden identificar y bloquear las direcciones IP sospechosas.
En esta situación, el primer paso es enviar el llamado JavaScript Computational Challenge al cliente, un método que permite detectar si este forma parte de una botnet o se trata de un usuario normal. Cualquier navegador de un visitante normal del sitio web podrá superar esta prueba, a diferencia de los bots.
Si conoces el procedimiento del atacante, puedes introducir unas reglas simples en el firewall para bloquear automáticamente las direcciones IP de la botnet. Por lo general, un HTTP flood puede detectarse y detenerse en pocos minutos, siempre que se haya identificado como causa de la caída del sistema.
¿Cómo protegerse?
Es muy difícil protegerse de un HTTP flood, porque las peticiones del atacante pueden parecer tráfico normal del sitio web. En este tipo de ataque, no se envía malware al servidor ni se pretende aprovechar las brechas de seguridad, sino que se satura el servidor con peticiones legítimas. Como estas precisan mucho menos ancho de banda que cualquier intrusión en el código de la página, este tipo de ataque puede pasar desapercibido al principio.
Para protegerse, la mayoría de los sitios web recurren al test Captcha, el cual solo puede superar un usuario humano. De esta manera, es posible averiguar si la petición procede de una botnet y consiguientemente bloquear las direcciones IP correspondientes. También hay firewalls para aplicaciones y sitios web que comprueban y analizan el tráfico. Estos sistemas pueden ralentizar un poco la página, pero garantizan su protección y estabilidad. Si la propia página requiere procesar una gran cantidad de datos, conviene que se muestre una página de carga mientras la página principal se carga en segundo plano.
HTTP flood es solo uno de los distintos tipos de ataques DDoS, entre los que se incluyen el ping flood, el SYN flood, el UDP flood y el ping de la muerte o ping of death. En todos ellos, el objetivo es inhabilitar los servidores web.