miércoles, 10 de febrero de 2010

Load Balancing, ¿avanzado?

Unos compañeros se encontraron en un cliente con un Firewall UTM, de un conocido fabricante, que tenía una forma muy peculiar de realizar el Load Balancing.

Antes de distribuir la carga, el Load Balancer debe verificar que el host tenga el servicio corriendo, esto se puede realizar de muchas sencillas formas, pero aquí es en donde este conocido Firewall fallaba mayúsculamente.

Para verificar el servicio poseía dos métodos, una enviando un PING, que obviamente no nos asegura que el servicio este levantado, y otra en donde realiza una conexión TCP al puerto en cuestión, que en principio debería ser más que suficiente.

La teoría nos dice que si enviamos un SYN, y recibimos un SYN/ACK, entendemos que el puerto esta abierto, y por ende le podemos enviar tráfico. Ahora, este Firewall, tomaba al puerto abierto con cualquier respuesta que le llegaba, por lo que si recibía un RST del SO, porque el puerto estaba cerrado, también le enviaba tráfico. :D

El problema se resolvió filtrando los RST que salían desde estos hosts hacia el Firewall, de esa forma solo enviaría carga cuando reciba un SYN/ACK del puerto. El fabricante del Firewall fue informado del asunto y prometio solucionarlo para la próxima versión.

Es realmente increíble las cosas que se encuentran en productos comerciales, y después uno se sorprende cuando se publica algún bug grosero.

Publicado por Leonardo Pigñer en KungFooSion.blogspot.com

No hay comentarios.:

LinkWithin