Digamos que estoy alojando varios servicios en mi servidor, por ejemplo, correo electrónico y una página web. Me preocupa que el software del servidor web pueda tener vulnerabilidades desconocidas, lo que permitirá que un atacante se haga cargo de mi máquina. El atacante tendrá acceso no solo a mi sitio web, sino también a mis correos electrónicos.
Podría resolver el problema simplemente teniendo dos máquinas físicas separadas, cada una dedicada a un servidor. Si el atacante ingresa al servidor web, solo podrá ver el sitio web. Para ver los correos electrónicos, debe ingresar al servidor de correo electrónico.
No quiero comprar realmente un nuevo servidor para cada servicio que estoy ejecutando, así que como compromiso pensé que podía usar máquinas virtuales. En este modelo, el sistema operativo host ejecuta un servidor SSH seguro y un software de máquina virtual. Para cada servicio, se crea una nueva máquina virtual y se configura para proporcionar ese servicio.
Mi modelo puede ser derrotado catastróficamente de dos maneras:
- El atacante se rompe en el servidor SSH, esencialmente obteniendo acceso a todas las máquinas virtuales.
- El atacante encuentra una falla de seguridad en el software de la máquina virtual y se las arregla para hacer un túnel fuera de la máquina virtual comprometida hacia el sistema operativo host.
Sin embargo, si ambos son más difíciles de hacer que simplemente explotar una vulnerabilidad en uno de los múltiples servicios que quiero alojar, parece que la vida del atacante se ha vuelto mucho más difícil. Primero debe darse cuenta de que los servidores son en realidad máquinas virtuales en la misma máquina, luego explotar, por ejemplo. El servidor web, y luego superar la virtualización por encima de eso, esto parece más difícil de hacer que simplemente explotar el servidor web.
Mi pregunta es, ¿es este tipo de estrategia realmente razonable y práctica para una organización no empresarial? ¿Los inconvenientes, como el rendimiento más lento de la ejecución de muchos sistemas operativos, el espacio en disco desperdiciado en cada sistema operativo, justifican la ganancia de seguridad realista (si existe)?
Mi principal objetivo de seguridad es compartimentar servicios individuales, de modo que obtener acceso a la máquina a través de un servicio (por ejemplo, un servidor web) no proporcione acceso inmediato a datos privados de otros servicios (como correos electrónicos del servidor de correo). Cada vez que agrego un servicio a mi servidor, siento que estoy agregando aún más vulnerabilidades y vulnerabilidades potenciales que los atacantes pueden usar y tomar todo. Sería preferible si, cuando se explota una falla en un servicio, solo ese servicio. sí está comprometido.