La inu­n­da­ción de HTTP (en inglés, HTTP flood) es un tipo de ataque DDoS (del inglés di­s­tri­bu­ted denial of service o de­ne­ga­ción de servicio di­s­tri­bui­do). En estos casos, el objetivo del atacante es saturar la apli­ca­ción o el sitio web con una gran cantidad de visitas desde di­fe­re­n­tes lugares. Los ataques HTTP flood también se conocen como ataques de capa 7, que hace re­fe­re­n­cia a la llamada capa de apli­ca­ció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 su­fi­cie­n­tes recursos, el cliente tarda más tiempo en responder a las pe­ti­cio­nes. Durante un HTTP flood, como el atacante envía una gran cantidad de so­li­ci­tu­des al hardware sin pausa, el sistema se so­bre­ca­r­ga, im­pi­die­n­do el acceso al servidor y a la red.

De esta manera, mediante un ataque HTTP flood, se pretende in­ha­bi­li­tar el servidor rea­li­za­n­do pe­ti­cio­nes co­m­ple­ta­me­n­te normales. ¿Cómo podemos evitar esta vu­l­ne­ra­bi­li­dad del protocolo HTTP?

¿En qué consiste un HTTP flood attack?

Los ataques HTTP flood se basan en las pe­ti­cio­nes GET o POST del cliente. El cliente, es decir, el navegador que quiere acceder al sitio web, envía una de estas so­li­ci­tu­des. El servidor la procesa y, a su vez, envía la respuesta de vuelta al cliente.

Las pe­ti­cio­nes GET recuperan contenido estático, como imágenes o bloques de texto. En cambio, las pe­ti­cio­nes 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 uti­li­zar­se para efectuar este tipo de ataque, aunque el método POST se emplea con más fre­cue­n­cia, porque requiere un pro­ce­sa­mie­n­to complejo por parte del servidor.

Durante un ataque HTTP flood, se realizan muchas de estas pe­ti­cio­nes si­mu­l­tá­nea­me­n­te y durante un período de tiempo pro­lo­n­ga­do. Por lo general, se usa una botnet para aumentar la cantidad de so­li­ci­tu­des. 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 so­li­ci­tu­des 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 co­n­si­guie­n­te caída de la apli­ca­ció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 au­me­n­ta­n­do debido a un ataque o, si­m­ple­me­n­te, a los efectos de una buena campaña de marketing. Si, en efecto, descubres que se trata de un ataque HTTP flood, los co­r­ta­fue­gos pueden ide­n­ti­fi­car y bloquear las di­re­c­cio­nes IP so­s­pe­cho­sas.

En esta situación, el primer paso es enviar el llamado Ja­va­S­cri­pt Co­mpu­tatio­nal 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 di­fe­re­n­cia de los bots.

Si conoces el pro­ce­di­mie­n­to del atacante, puedes in­tro­du­cir unas reglas simples en el firewall para bloquear au­to­má­ti­ca­me­n­te las di­re­c­cio­nes IP de la botnet. Por lo general, un HTTP flood puede de­te­c­tar­se y detenerse en pocos minutos, siempre que se haya ide­n­ti­fi­ca­do como causa de la caída del sistema.

¿Cómo pro­te­ge­r­se?

Es muy difícil pro­te­ge­r­se de un HTTP flood, porque las pe­ti­cio­nes 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 apro­ve­char las brechas de seguridad, sino que se satura el servidor con pe­ti­cio­nes 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 des­ape­r­ci­bi­do al principio.

Para pro­te­ge­r­se, 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 co­n­si­guie­n­te­me­n­te bloquear las di­re­c­cio­nes IP co­rre­s­po­n­die­n­tes. También hay firewalls para apli­ca­cio­nes y sitios web que co­m­prue­ban y analizan el tráfico. Estos sistemas pueden ra­le­n­ti­zar un poco la página, pero ga­ra­n­ti­zan su pro­te­c­ción y es­ta­bi­li­dad. 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.

Nota

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 in­ha­bi­li­tar los se­r­vi­do­res web.

Ir al menú principal