¿Es la VM por servicio un modelo de seguridad de servidor razonable?

4

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.

    
pregunta Superbest 28.04.2015 - 00:53
fuente

2 respuestas

4

Sus suposiciones son correctas. La seguridad por aislamiento es, de hecho, un buen principio a seguir.

También hay un sistema operativo completo que implementa esta idea en el escritorio: Qubes OS (que se ejecuta en la computadora portátil Estoy usando para escribir esto).

Para volver a su modelo de servidor, creo que una máquina virtual por servicio es una buena idea, pero requerirá muchos recursos.

Hemos estado usando el sistema FreeBSD Jails durante aproximadamente 8 años aquí, para replicar exactamente de lo que habla: aislar el servidor web de la base de datos y del servidor de correo, etc.

Lo que hacemos es que los hosts de Jail no ejecutan nada, excepto el firewall. Todos los servicios están aislados en las cárceles, según su dominio de seguridad. Tratamos al host como lo haría con Dom0 bajo Xen.

Dado que no es una visualización sino un mecanismo de chroot muy mejorado, no tiene los impactos de la visualización, al tiempo que agrega separación y seguridad. Desde el interior de un sistema enjaulado, parece que se está ejecutando en un entorno virtualizado o real. El inconveniente es que solo puede ejecutar FreeBSD (no me importa, pero puede que no sea adecuado para usted).

Creo que Docker es similar en su enfoque, aunque recientemente comencé a usarlo y se siente más como una herramienta de desarrollo que como un reemplazo para un entorno virtual.

Aunque, creo que Xen vale la pena mirar.

    
respondido por el Jean-François Rioux 28.04.2015 - 01:24
fuente
-3

Si está utilizando Linux exclusivamente, puede aislar completamente las aplicaciones (de manera muy similar a como lo hace la ventana acoplable) usando systemd:

enlace

Las aplicaciones dentro de un contenedor no tienen acceso al exterior, solo asegúrate de que no se ejecuten como root.

Si desea algo más portátil, chroot s podría funcionar para usted, suponiendo que los configure correctamente.

    
respondido por el WhyNotHugo 28.04.2015 - 11:04
fuente

Lea otras preguntas en las etiquetas