Guille
21/08/2013, 10:46
Buenos días:
Se me ha hecho muchas veces la pregunta sobre el funcionamiento de la protección anti-DDOS L7 que desarrollamos y por qué el VAC no es suficiente.
Antes es necesario comprender el funcionamiento de una solución de protección uni-direccional o asimétrica como el VAC.
Luego nos interesaremos en las protecciones bidireccionales alias “simétricas”.
El VAC se ocupa únicamente de paquetes entrantes. No hacia fuera. Es decir que todos los paquetes IP provenientes de Internet pasan por el VAC y el VAC mira si el paquete es OK o no. Y deja pasar pasar el paquete legítimo y bloquea el paquete no legítimo. Pero las respuestas del servidor se hacen directamente sin pasar por el VAC. Es como funciona la red de cortafuegos Tilera y Arbor.
Es un modo de funcionar que permite activar la protección “al vuelo” sin ninguna modificación de la infraestructura del cliente. Por lo tanto muy suave. Y puede hacer muchas cosas basándose sólo en la entrada de un servidor. Eso requiere utilizar la astucia para descubrir si un paquete es legítimo o no, pero globalmente hay pocos falsos positivos a condición de tratar los ataques L3/L4.
Si se quiere tratar los ataques L7 en uni-direccional eso quiere decir forzosamente que el VAC (cortafuegos, Tilera, Arbor) debe dejar el paquete llegar al servidor, dejar abrir la conexión sólo después de que el VAC mire lo que ocurre con la conexión y decida si la corta o la deja.
En efecto el VAC no modifica los paquetes, no hace de proxy, sólo decide dos cosas: dejar pasar o cortar. Y en los casos de los ataques L7 no pueden decidir sin saber lo que hay en la petición y por lo tanto dejan iniciar la petición en el servidor.
Tomando el ejemplo del Slowloris, eso quiere decir que el ataque llega justo al servidor, la conexión TCP está abierta sobre el servidor web y luego solamente el VAC (más concretamente Arbor) va a cortar la conexión al cabo de 4 o 5 segundos en los que va a descubrir que es el Slowloris.
Consecuencia: el servidor debe aceptar todas las conexiones incluyendo el ataque. Solo después se alivia de conexiones no legítimas.
Y es lo mismo para los scans, robots, ataques de gran número de conexiones por segundo o el número de conexiones simultáneas.
En resumen, el servidor asume el ataque y sólo podemos esperar que
Arbor cortará lo suficiente para que el servidor no cuelgue.
Por lo tanto, debe ser un servidor bien fuerte para que llegue a soportar cualquier ataque.
Aquí interviene la protección bidireccional alias simétrica, sobre la cual trabajamos.
El objetivo de esta protección es tomar cualquier ataque en lugar del servidor, aceptar todas las conexiones, abrirlas y mirar si lo que llega es legítimo o no.
Y solamente si es legítimo, la infraestructura va a crear una conexión hacia el servidor y va a reenviar la petición legítima. Luego mirará la respuesta y la reenviará al verdadero usuario.
Si no es legítima cortará la conexión y no molestará al servidor con ella.
Y en el caso de el anti-DDOS l7 bidireccional el servidor no ve nada más que tráfico legítimo, al contrario que el anti-DDOS l7 unidirecciona en donde recibe todos los ataques.
Para hacer Anti-DDOS l7 bidireccional se necesitan cajas realmente fuertes que sepan manejar todos los ataques . El synflood, el ackflood y todos los ataques L3/L4 de base y luego todos los ataques de aplicaciones. Es por lo tanto hard con ASIC que tratan todo en hardware. Por ejemplo la infraestructura de test es capaz de generar 60 M de paquetes syn por segundo!! (un Arbor que es 20x mas caro es capaz de generar 40 M)
En resumen las protecciones unidireccionados están hechas para L3/L4 y no del todo para L7 por cuestiones de eficacia y de coste.
El principal de problema de la protección anti-DDOS l7 bidirecional es que no se puede activar “al vuelo” . Funciona un poco como un CDN o un proxy. Es necesario tomar las peticiones del web y luego reenviarlas al servidor. Y por lo tanto es necesario cambiar la IP del sitio a proteger.
Ssólo salvo que ahí haya una solución colocada que permita activar esa protección L7 bidireccional al vuelo. Es un poco complejo explicar como hemos llegado a activar la protección de una IP y protegerla de todas las peticiones web contra … esa misma IP!!
El cliente no tiene nada que cambiar. Como en las uni-direccionales.
Podemos activar también el SSL con el tratamiento por los ASIC de cifrado y el cache de ficheros estáticos de máximo 4 Mb por IP sobre SSD local en una caja. Eso permite descargar el servidor como un CDN y evitar las sobrecargas del servidor debido al cifrado SSL y los ficheros estáticos.
¿Es una solución perfecta?
Hay un pero: podemos proteger en anti-DDOS l7 bidireccional únicamente las IP sin tráfico saliente. En efecto si protegemos la IP principal del servidor y el servidor quiere crear un petición web hacia una IP en la red, va a enviar un SYN y la respuesta ACK va a llegar en la infraestructura anti-DDOS l7 y será eliminada por no conocida/iniciada por la infraestructura.
Es necesario utilizar la IP FO y sin tráfico saliente. A menudo este es el caso por ejemplo la IP de nuestros servidores compartidos son IP que no tienen más que tráfico entrante. El tráfico saliente sale por otras IP. Si tienes un sitio importante o ataques en la web es necesario proporcionar una IP FO para la web. Por lo tanto los KS2013 no puede aprovechar verdaderamente esta protección, porque no tienen IP FO.
Ayer hemos testeado las protecciones anti-DDOS l7 bidireccionales con un cliente que tenía un pequeño ataque L7 contra las URL aleatorias a partir de 200 botnet. Eso generaba 250 peticiones/ segundo, 1500 conexiones a medio abrir y 100 conexiones simultáneas en nuestra infraestructura. La infraestructura finalmente filtró todas las peticiones web de verdaderos visitantes. Por lo tanto el cliente no ha visto ninguna conexión de botnet en su servidor.
Con una protección unidireccional habría debido aceptar todas las peticiones sobre el servidor y sólo después la conexión se hubiera cortado por no legítima. Pero con un KS eso funcionaría sin problemas, salvo por las conexiones salientes.
Podemos comparar los dos tipos de protección a un portero a la entrada de una discoteca. Deja entrar a todo el mundo y luego hace salir a los que causan desorden. Y la otra no deja entrar más que a los clientes que vienen a divertirse.
Y esto es por lo que desarrollamos esta tecnología exclusiva que podremos proponer a partir de algunos euros / mes… Sólamente.
Se me ha hecho muchas veces la pregunta sobre el funcionamiento de la protección anti-DDOS L7 que desarrollamos y por qué el VAC no es suficiente.
Antes es necesario comprender el funcionamiento de una solución de protección uni-direccional o asimétrica como el VAC.
Luego nos interesaremos en las protecciones bidireccionales alias “simétricas”.
El VAC se ocupa únicamente de paquetes entrantes. No hacia fuera. Es decir que todos los paquetes IP provenientes de Internet pasan por el VAC y el VAC mira si el paquete es OK o no. Y deja pasar pasar el paquete legítimo y bloquea el paquete no legítimo. Pero las respuestas del servidor se hacen directamente sin pasar por el VAC. Es como funciona la red de cortafuegos Tilera y Arbor.
Es un modo de funcionar que permite activar la protección “al vuelo” sin ninguna modificación de la infraestructura del cliente. Por lo tanto muy suave. Y puede hacer muchas cosas basándose sólo en la entrada de un servidor. Eso requiere utilizar la astucia para descubrir si un paquete es legítimo o no, pero globalmente hay pocos falsos positivos a condición de tratar los ataques L3/L4.
Si se quiere tratar los ataques L7 en uni-direccional eso quiere decir forzosamente que el VAC (cortafuegos, Tilera, Arbor) debe dejar el paquete llegar al servidor, dejar abrir la conexión sólo después de que el VAC mire lo que ocurre con la conexión y decida si la corta o la deja.
En efecto el VAC no modifica los paquetes, no hace de proxy, sólo decide dos cosas: dejar pasar o cortar. Y en los casos de los ataques L7 no pueden decidir sin saber lo que hay en la petición y por lo tanto dejan iniciar la petición en el servidor.
Tomando el ejemplo del Slowloris, eso quiere decir que el ataque llega justo al servidor, la conexión TCP está abierta sobre el servidor web y luego solamente el VAC (más concretamente Arbor) va a cortar la conexión al cabo de 4 o 5 segundos en los que va a descubrir que es el Slowloris.
Consecuencia: el servidor debe aceptar todas las conexiones incluyendo el ataque. Solo después se alivia de conexiones no legítimas.
Y es lo mismo para los scans, robots, ataques de gran número de conexiones por segundo o el número de conexiones simultáneas.
En resumen, el servidor asume el ataque y sólo podemos esperar que
Arbor cortará lo suficiente para que el servidor no cuelgue.
Por lo tanto, debe ser un servidor bien fuerte para que llegue a soportar cualquier ataque.
Aquí interviene la protección bidireccional alias simétrica, sobre la cual trabajamos.
El objetivo de esta protección es tomar cualquier ataque en lugar del servidor, aceptar todas las conexiones, abrirlas y mirar si lo que llega es legítimo o no.
Y solamente si es legítimo, la infraestructura va a crear una conexión hacia el servidor y va a reenviar la petición legítima. Luego mirará la respuesta y la reenviará al verdadero usuario.
Si no es legítima cortará la conexión y no molestará al servidor con ella.
Y en el caso de el anti-DDOS l7 bidireccional el servidor no ve nada más que tráfico legítimo, al contrario que el anti-DDOS l7 unidirecciona en donde recibe todos los ataques.
Para hacer Anti-DDOS l7 bidireccional se necesitan cajas realmente fuertes que sepan manejar todos los ataques . El synflood, el ackflood y todos los ataques L3/L4 de base y luego todos los ataques de aplicaciones. Es por lo tanto hard con ASIC que tratan todo en hardware. Por ejemplo la infraestructura de test es capaz de generar 60 M de paquetes syn por segundo!! (un Arbor que es 20x mas caro es capaz de generar 40 M)
En resumen las protecciones unidireccionados están hechas para L3/L4 y no del todo para L7 por cuestiones de eficacia y de coste.
El principal de problema de la protección anti-DDOS l7 bidirecional es que no se puede activar “al vuelo” . Funciona un poco como un CDN o un proxy. Es necesario tomar las peticiones del web y luego reenviarlas al servidor. Y por lo tanto es necesario cambiar la IP del sitio a proteger.
Ssólo salvo que ahí haya una solución colocada que permita activar esa protección L7 bidireccional al vuelo. Es un poco complejo explicar como hemos llegado a activar la protección de una IP y protegerla de todas las peticiones web contra … esa misma IP!!
El cliente no tiene nada que cambiar. Como en las uni-direccionales.
Podemos activar también el SSL con el tratamiento por los ASIC de cifrado y el cache de ficheros estáticos de máximo 4 Mb por IP sobre SSD local en una caja. Eso permite descargar el servidor como un CDN y evitar las sobrecargas del servidor debido al cifrado SSL y los ficheros estáticos.
¿Es una solución perfecta?
Hay un pero: podemos proteger en anti-DDOS l7 bidireccional únicamente las IP sin tráfico saliente. En efecto si protegemos la IP principal del servidor y el servidor quiere crear un petición web hacia una IP en la red, va a enviar un SYN y la respuesta ACK va a llegar en la infraestructura anti-DDOS l7 y será eliminada por no conocida/iniciada por la infraestructura.
Es necesario utilizar la IP FO y sin tráfico saliente. A menudo este es el caso por ejemplo la IP de nuestros servidores compartidos son IP que no tienen más que tráfico entrante. El tráfico saliente sale por otras IP. Si tienes un sitio importante o ataques en la web es necesario proporcionar una IP FO para la web. Por lo tanto los KS2013 no puede aprovechar verdaderamente esta protección, porque no tienen IP FO.
Ayer hemos testeado las protecciones anti-DDOS l7 bidireccionales con un cliente que tenía un pequeño ataque L7 contra las URL aleatorias a partir de 200 botnet. Eso generaba 250 peticiones/ segundo, 1500 conexiones a medio abrir y 100 conexiones simultáneas en nuestra infraestructura. La infraestructura finalmente filtró todas las peticiones web de verdaderos visitantes. Por lo tanto el cliente no ha visto ninguna conexión de botnet en su servidor.
Con una protección unidireccional habría debido aceptar todas las peticiones sobre el servidor y sólo después la conexión se hubiera cortado por no legítima. Pero con un KS eso funcionaría sin problemas, salvo por las conexiones salientes.
Podemos comparar los dos tipos de protección a un portero a la entrada de una discoteca. Deja entrar a todo el mundo y luego hace salir a los que causan desorden. Y la otra no deja entrar más que a los clientes que vienen a divertirse.
Y esto es por lo que desarrollamos esta tecnología exclusiva que podremos proponer a partir de algunos euros / mes… Sólamente.