Hosting compartido adaptado a los tiempos actuales, moderno y seguro

Publicado el 25 abril 2016 por Gaspar Fernández Moreno @gaspar_fm

Desde que empecé con Internet a mediados de la década de los 90 y mi proveedor de Internet me regaló 5Mb de hospedaje para alojar mi web siempre me ha gustado tener un rinconcito de Internet que fuera mío, para expresarme y compartir mi visión del mundo (me veo ya un poco viejete). Por aquel entonces, el hospedaje, era sólo de archivos HTML con algunas imágenes.

Con el paso del tiempo, terminé contratando mi dominio y un hospedaje mejor, con soporte de bases de datos, lenguajes de servidor y muchas cosas más, para hacer tanto mi experiencia como webmaster como la experiencia de mis usuarios un poco mejor. Aunque en todos estos años me he encontrado de todo, y es normal, ya prácticamente he visto evolucionar el mercado del hospedaje web.

Este post contiene mucho texto y batallitas, pero si has venido aquí para que te recomiende un servicio de hosting moderno, seguro y con la última tecnología, pincha aquí y sáltatelo todo.
Pero no te quito de leerte todo esto.

Un poco de historia

Al principio este hospedaje compartido era muy sencillo. Con un poco de idea de Linux (Sistema que prácticamente había aprendido a leer) ya valía, apenas se trabajaba en seguridad. Era algo costoso, reducía recursos (que eran caros) y claro, es un negocio, cuantos más usuarios alojara por servidor, más dinero cobraba. Por otro lado, los ataques a sistemas no eran tan tan comunes como ahora. (Yo mismo gestiono algún servidor que recibe varios cientos de intentos de ataque diarios).

A medida que todo va evolucionando, surge el más temido dilema para un proveedor de servidor. ¿Le cortamos las alas al usuario o dejamos un poco de lado la seguridad? El problema es que si le cortas las alas al usuario nadie va a contratar tus servicios, y eso es un riesgo, la mayoría de empresas ponían en sus condiciones de servicio que si eres cliente, no les hackearas, ni intentaras acceder a cuentas de otros clientes. Así que en la década del 2000 al 2010, podíamos hacer cosas muy curiosas.

Había empresas de hosting (espero que ya no queden de esas), en las que, una vez que eras cliente, podías obtener un listado de todos los clientes que había alojados en tu misma máquina, e incluso con un poco de paciencia obtener direcciones de correo, mensajes, descargar webs enteras, bases de datos contraseñas de usuarios ¡en algunos casos en texto plano! y en otros sus hashes. Y claro, si eras de esos 200 usuarios que estaban en una máquina y podías ver aquello, no te apetecía que alguien no tuviera buenas intenciones y traficara con tus datos.
Poco a poco fue mejorando la situación, y se fue evolucionando en este aspecto, se fue utilizando mejor el sistema de privilegios de usuarios, y claro, ahora, en este tipo de hospedaje no teníamos sólo usuario www-data o httpd, sino que cada usuario tenía un usuario y el servidor web accedía con ese usuario para leer y escribir los archivos. Por lo que, aparentemente necesitas saber los credenciales del usuario para poder acceder a sus archivos.

Era de vulnerabilidades y recursos de sistema

Llegados a este punto, en el que los servidores compartidos tenían los usuarios del sistema delimitados, y un montón de nombres de usuario y contraseñas únicos para cada cliente del sistema haciendo que todos los archivos no sean accesibles fácilmente, bueno, siempre estaban los propios usuarios que ponían permisos 777 (lectura, escritura y ejecución permitidos para todos los usuarios del sistema), pero ya era problema de esos usuarios (en principio). Ahora llega el turno a las vulnerabilidades en los servidores (en realidad este turno nunca se ha ido).


Internet es más rápido, y el número de personas que intentan explotar vulnerabilidades también y, desde fuera se ha podido incluso ejecutar código con privilegios en un servidor en el que ni siquiera eres usuario, ya sea por configuración de seguridad inexistente o poco segura, o por aprovechar una vulnerabilidad del sistema. En realidad todos los proveedores deberían actualizar a menudo sus sistemas, aunque en la práctica no es tan fácil, tienes que tenerlo todo muy en orden para poder actualizar las actualizaciones sin que sea demasiado doloroso y sólo unos pocos lo consiguen

Por ejemplo, yo me he encontrado también con proveedores de hosting en los que se juntaba todo. Al ser accesibles desde el usuario perteneciente al servidor web todos los datos de los usuarios, se aprovecharon vulnerabilidades de Drupal y de Apache para que todos los usuarios de un mismo hosting compartido fueran afectados por un virus hecho en PHP. Se aprovechaban de todos los archivos .php que tenían permiso de escritura y eran accesibles por él (no tienen por qué tener permisos globales, sólo permiso de escritura en el propio servidor, cosa que a veces venía por defecto) para introducir un fragmento de código que se auto-replicaba y arruinar las webs de todos los usuarios de un hosting compartido (desde cambiar por completo tu web, hasta hacer suplantaciones para phising, envío de correos no deseados, introducir iframes, enviar a tus visitantes javascript maliciosos o incluso virus, normalmente para Windows.

Junto con el problema anterior, nos encontramos con que los sistemas van siendo más rápidos, y capaces de hacer muchas cosas. Lenguajes como PHP han evolucionado mucho y dejan hacer al usuario muchas cosas. También hay más usuarios en Internet, muchos empiezan a utilizar sus móviles para entrar en servicios web y eso son muchas más visitas. Y, un servidor, no por tener una visita desde un móvil va a gastar menos recursos en servirla. Todo esto hace que un servidor de hosting compartido pueda otorgar a un mismo usuario más recursos que al resto, según lo vayan requiriendo los usuarios. Sólo hemos dividido el ordenador por usuarios, pero asignar unos recursos específicos a un usuario ya es otra cosa, ahí tendríamos un problema de software y de hardware a la vez. Y es que, si un usuario no requiere la CPU y otro sí, no pasa nada. Lo verdaderamente malo es cuando un usuario está consumiendo sus recursos y los de los usuarios de su máquina y de repente un vecino necesita unos pocos recursos para atender una petición, y que o vaya muy lenta o no pueda. Es como si en un bloque de pisos un sólo vecino acaparara el ascensor durante todo el día, tarde o temprano la comunidad se queja.

¿Virtualización?

Llegados a este punto, la solución de un servidor privado virtual (VPS) parece más o menos lógica. Aunque esto sería una modalidad más grande y avanzada. Crearíamos un compartimento en nuestro servidor sólo para el usuario, para que se instale lo que el usuario quiera, eso está muy bien. Pero, antes se podían alojar muchísimos usuarios por máquina, creando máquinas virtuales dentro de un servidor podríamos alojar a muchos menos clientes, cada uno tendría un trozo de hardware, estaría ejecutando su Linux, su servidor web y sus servicios de sistema por separado. Por un lado sería una ejecución redundante dentro de una máquina, aunque, eso sí, cada uno tiene sus recursos y no se puede salir de ahí, además, tendrá su dirección IP para acceder a los servicios, y se pueden hacer cosas muy chulas con los VPS, puedes alojar los servicios críticos en máquinas detrás de una DMZ y, por ejemplo, ante una vulnerabilidad del sistema operativo o un cuelgue, la afectada es la máquina virtual, y ante un usuario que consuma muchos recursos, dicho usuario será el único perjudicado que sufrirá una pérdida sustancial de rendimiento sin afectar a sus vecinos. Eso sí, generalmente esto es mucho más caro que un hosting compartido y normalmente con mucha más capacidad. Aunque, por ahí van los tiros.

Linux Containers (LXC)

Pronto se empezaron a utilizar tecnologías como chroot o las FreeBSD jails a modo de "enjaular procesos" para que no pudieran salirse de unos límites. Aunque en 2008-2009, empezó una tecnología llamada LXC que, básicamente, aísla recursos de sistema junto con un espacio de procesos, utilizando tecnologías de virtualización. Ahora no es necesario emular un hardware para cada usuario, ni que los usuarios instalen sistemas operativos completos para cada uno. Ahora podemos crear un espacio propio para cada usuario dentro de una máquina principal imposibilitando que un usuario le quite los recursos a otro y que un usuario entre en el espacio de otro tanto en memoria como en disco. Esta implantación se hace a nivel de kernel acompañado de algunas aplicaciones que permiten, desde el propio espacio de usuario crear, destruir y administrar contenedores. Es más, podemos, en tiempo real, sin necesidad de reiniciar nada, aumentar las capacidades de un usuario siempre que en la máquina principal haya recursos.

Si habéis oído hablar de docker. Este último utiliza las capacidades de LXC.

Siteground, un hosting moderno y robusto

Siteground fue uno de los primeros proveedores de hosting en incorporar Linux Containers en su hosting Cloud, cuando esta tecnología ha estado lo suficientemente madura; y, desde finales del año pasado, todos sus hospedajes compartidos incorporan esta nueva tecnología. De esta forma, tu hospedaje es totalmente seguro y queda aislado completamente del resto de usuarios. Asimismo, otro usuario no podrá invadir tus recursos, ni tú tampoco a los demás usuarios y, por culpa de la explotación de una vulnerabilidad en la cuenta de otro usuario, tu web no se verá afectada. Sería como si te dieran una máquina únicamente para ti. Pero en realidad es un servicio de hospedaje compartido. Y, por ello, barato.


Nota: Si utilizáis este banner para contratar, estaréis colaborando con este blog y os estaré muy agradecido.

Por si fuera poco, en todos sus hospedajes compartidos incorporan discos SSD por lo que la velocidad de E/S no será un cuello de botella, podrás utilizar bases de datos, lectura y escritura intensiva de archivos sin ningún problema ni pérdidas de velocidad.

Los que me conocéis, sabéis que a mi me gusta cocinarme los servidores desde el principio, instalar aplicaciones, configurar un firewall, etc. Aunque para ciertos servicios o webs viene muy bien tener un hosting ya configurado y listo para ser usado fácilmente. Además con una serie de extras: podemos utilizar PHP7 y HHVM en nuestras webs o incluso elegir el centro de datos donde serán hospedadas las páginas (cuanto más cerca, mejor experiencia para nuestros usuarios de esa zona), incluso podemos gestionar varios dominios con la misma cuenta siempre que entre todas no consuman todos los recursos de cada plan.

Sobre este post

Este es un post patrocinado por Siteground España. Hasta el momento, es el primer post patrocinado que he accedido a hacer a pesar de que varias empresas me lo han pedido y he terminado siempre rechazando porque el producto no me convencía. Este no ha sido el caso.

Foto: Vladimir Kudinov
Foto francotirador: Andre Gustavo Stumpf