Skip to content

Mitigación de ataques DDoS mediante tarpits HTTP

Publicado por Sergio Hernando el 28 junio 2007

Los chavales de Secureworks han escrito un estudio bastante original, en el que efectúan mediciones en un sistema de mitigación de ataques distribuíos de denegación de servicio basado en tarpitting.

Sobre DDoS no vamos a contar nada, ya que es un término muy extendido y popular. En lo que vamos a hacer un mínimo repaso es en el tarpitting.

Las técnicas de tarpitting pueden ser definidas, en general, como un conjunto de mecanismos mediante los cuales se pretende incrementar el retardo en la respuesta a conexiones ante un evento de seguridad determinado. En otras ocasiones, lo que se pretende es minimizar la ventana de respuesta no en términos de tiempo, sino en términos de recursos disponibles. En ambos casos, lo que se pretende es amortiguar el impacto de un evento malicioso.

Los tarpits por excelencia son los aplicados en las pasarelas de correo, empleados frecuentemente en la lucha contra el spam. En este caso, se pretende demorar al máximo la respuesta ante la recepción de mensajes, lo que provoca que en muchos casos, los gestores de envío de los spammers aborten el envío de correo al propietario del tarpit, ya que los retardos producidos ponen en peligro el procesado de la cola completa de spam del emisor.

Implementaciones de pasarela de correo con tarpits hay para aburrirse. Me apunto en el to-do hablar un día de ello, pero para abrir boca, comentar que en el mundo Unix, es frecuente ver tarpits qmail-smtpd. Esta implementación es muy sencilla, ya que se trata de parchear el fichero qmail-smtpd.c (véase diff).

También hay pits de soporte para MailScanner, tales como greypit, en los que se pretende principalmente que el spam no desequilibre el balanceo de un cluster de servidores de correo. No me quiero olvidar de los amigos de las soluciones Microsoft, que pueden recurrir al knowledge de la compañía para ver cómo montar un tarpit en Server 2003 y Exchange.

Dejando atrás al spam y volviendo al DDoS, entender en qué se basa una defensa mediante tarpits para denegación de servicio es fácilmente comprensible una vez entendido el funcionamiento de un tarpit de correo. Haciendo un símil, se trata de contener el ataque ralentizando las respuestas que originan la denegación. En el caso que nos ocupa, la ralentización se aplica en dos fases: una primera respuesta normal, y en una segunda, una acotación del tamaño de la ventana TCP a unos pocos bytes, lo que hace que se fragmente la información a procesar, y se minimice el impacto de un número elevado de peticiones al stack del sistema, ya que la limitación de la ventana implica poder absorber mejor las peticiones que procedan de numerosas fuentes distribuídas.

http tarpits

El documento que os enlazo surge a raíz de responder a un incidente real, sufrido por Spamhaus no hará mucho, y en el que un botnet lanzó de una manera sostenida 1500 hilos de peticiones HTTP aleatorias sin un sistema command-and-control centralizado, es decir, instalado vía malware en cada una de las máquinas del botnet.

El principal problema de una denegación distribuída de servicio basada en peticiones HTTP es que cuesta mucho diferenciar entre peticiones legítimas e ilegítimas. Saber quién es el cliente que quiere acceder a tu Web y quién es el spammer que te la está hundiendo no es tarea sencilla, sobre todo cuando los ataques no están centralizados. El resultado suele ser devastador: no sólo hay agotamiento en la pila de protocolos TCP/IP, sino en los recursos del servidor, lo que se suele traducir en una ruptura del servicio.

Afortunadamente, las denegaciones de servicio basadas en peticiones HTTP masivas tienen un talón de Aquiles: el tarpitting. En el artículo se comenta el fundamento, basado en algo tan simple como netfilter, algo que evidentemente, está pensado para servidores Linux. En caso de tener el módulo de tarpitting integrado, basta con invocar iptables de la siguiente manera:

iptables -A INPUT -s x.x.x.x -p tcp -j TARPIT

Si no se tiene soporte tarpit para iptables, hay que parchear y recompilar. A grandes males, grandes soluciones :)

Un saludo,

Be Sociable, Share!

Categoría/s → Seguridad

Escribir un comentario

Note: XHTML permitido. Tu email nunca será publicado.

Suscribirse a los comentarios via RSS