Balanceador, caché y WAF por Sarenet (2ª parte)

Koldo Aingeru Marcos

En el anterior post comentaba lo que nos llevó a desarrollar un balanceador con funciones de WAF en Sarenet y los problemas con que nos encontramos durante su desarrollo. Esos problemas nos llevaron a replantear el servicio y refactorizarlo en una nueva versión más acorde con las tecnologías actuales.

 

Balanceador, caché y WAF por Sarenet (1ª parte)

 

Desde un primer momento teníamos claro que los nuevos equipos irían bajo nuestra nueva plataforma de orquestación basada en Foreman, que es el corazón de nuestros servicios de 1clic. De esta forma podríamos dar de alta un nuevo equipo en muy poco tiempo y tener la configuración gestionada de forma remota.

Revisamos los puntos flacos de la anterior arquitectura:

  • Gestión y configuración, aunque vía web, un tanto compleja.
  • Problemas en la parte del WAF a causa de los bugs de Modsecurity.
  • Parte de caché muy simple y para salir del paso.
  • Alta y provisión de nuevos equipos es costosa.

Los viejos equipos tenían como base FreeBSD9 y separábamos la gestión de la parte de servicio a cliente mediante el sistema de jails del propio BSD. Uno de los problemas que teníamos es que FreeBSD9 no tiene una compatibilidad tan buena con nuestro sistema de Cloud como nos gustaría (aunque estamos trabajando en ello), por lo que la primera elección fue la de sustituir el sistema operativo por otro.

 

Cambiamos FreeBSD por CentOS y nos ponemos a dieta de direcciones IP

 
powered_by_centos_by_williamjmorenor-d7nix6oElegimos CentOS como sistema base para la nueva versión de Frontalpro ya que es la distribución de Linux con la que más trabajamos y con la que más cómodos estamos, y en particular hemos saltado a la versión 7 de CentOS que ya tiene una madurez y recorrido muy interesantes.

Como ya he comentado, utilizamos un sistema de orquestación para la configuración, por lo que toda la parte de la interfaz pasa a gestionarse a través de este sistema que nos permitirá integrarlo en el futuro con nuestra Ventana de Cliente de forma que toda la gestión de una plataforma Cloud quede recogida en un único sitio. Esto también influye en que podemos instalar el sistema en servidores con menos recursos y por lo tanto más económicos.

Eliminar esta parte nos sirve también para ahorrar en un bien tan escaso como son las direcciones IP, en concreto las direcciones IPv4. En el modelo previo necesitábamos dos direcciones como mínimo: una para la gestión del servidor y otra para el servicio del cliente.

Adicionalmente, mientras que antes  necesitábamos una dirección IP por cada web segura con certificado SSL, en el nuevo modelo utilizamos una única dirección IP para todas las webs, tengan o no certificado seguro; esto es posible gracias a la implantación de navegadores modernos (Internet Explorer ya no es el navegador más utilizado) del protocolo SNI.

 

Divide y vencerás

 
Teníamos claro que seguiríamos utilizando Nginx como primera frontera de cara a Internet por las razones explicadas en la anterior entrada, pero esta vez la hemos relegado de las tareas de caché y de balanceador, manteniendo la parte de WAF, pero con un pequeño cambio.

Como comentábamos en el anterior post, Modsecurity pintaba muy bien sobre el papel (y la nueva versión 3.0 tiene muy buena pinta) pero en la práctica nos había dado más de un dolor de cabeza y despertado más de una noche, por lo que investigamos las alternativas y nos quedamos con NAXSI. Con una configuración más sencilla y que carga menos el servidor web podemos seguir teniendo una protección frente a los ataques más comunes contra las aplicaciones web.

 

Varnish y HAProxy

 
Como ya comentaba, la parte de caché y de balanceador las relegamos a herramientas dedicadas exclusivamente para ello.

Varnish es un viejo conocido en la casa que nos ha salvado en más de una ocasión en webs de muchos accesos (por ejemplo, eventos deportivos comovarnish4_banner mundiales de fútbol) y era más que obvio que sería parte de la nueva solución de Frontalpro.

Por lo que el Nginx, tras recibir la petición de una web pasa al Varnish, el cual si la tiene cacheada la devuelve, ahorrando de ese trabajo al servidor final y acelerando las webs (sobre todo en contenido estático) que usen el servicio.

 

 

logo

 

Para la parte de balanceador necesitábamos algo más potente que la versión básica de balanceo de Nginx (y sin querer recurrir a su versión Plus para evitar problemas de licencias a clientes), por lo que HAProxy era la pieza que nos faltaba para terminar este nuevo puzzle. Utilizado hasta en plataformas y arquitecturas Windows como es la red de Stack Overflow es uno de los softwares más usados para realizar balanceo de servicios. Además no hemos sido los únicos en hacer este cambio recientemente.

Gracias a HAProxy podemos pasar el contenido estático a ciertos frontales (si hemos decidido no cachearlo), mandar los robots y buscadores a otros distintos para que no afecten a los usuarios que navegan por nuestra web o configurar comprobaciones para saber si nuestros servidores están funcionando de forma correcta y mandar el tráfico a otro frontal.

 

Prueba de fuego: Black Friday

 
Queríamos tener todo listo para el Black Friday, ya que necesitábamos un sistema para poder escalar de forma fácil y que le permitiese aguantar el pico de tráfico que se preveía para esas fechas a unos cuantos clientes. Superamos con aprobado y tras pasar el temporal estamos migrando a todos los clientes del sistema antiguo al nuevo, manteniendo funcionalidades y liberando recursos en algunos casos.

 

Frontalpro: conclusiones

 

  • Soporte de SSL multidominio en una única IP mediante SNI.
  • WAF mediante NAXSI para mejorar la estabilidad global.
  • Caché avanzado mediante Varnish.
  • Balanceo de tráfico muy configurable y de alto rendimiento mediante HAProxy.
  • Gestión remota totalmente gestionada por parte de Sarenet.
  • Alta inmediata.
  • Y un par de ases más en la manga contra los malos 😉

 

Sobre este Autor

Administrador de Sistemas en Sarenet.

4 Comentarios

Puedes enviar comentarios en este post.

Enviar una respuesta

No hay comentarios