Contenedores LXC como entorno sandbox


9

Actualmente estoy comenzando un proyecto que evalúa programas no confiables (tareas de estudiantes) en un entorno seguro de sandbox. La idea principal es crear una aplicación web para GlassFish y Java wrapper alrededor de lxc-utils para administrar contenedores LXC. Tendrá una cola de programas en espera y un contenedor Java mantendrá un número fijo (grupo) de contenedores LXC, asignando a cada programa un contenedor (no utilizado).

Cada contenedor debe asegurarse con SELinux para proteger el sistema host.

Mi pregunta es: ¿es una buena idea crear dicho mecanismo para un entorno de espacio aislado o hay alguna solución mejor para este problema? Debe ser ligero y seguro contra la creatividad del estudiante.

Respuestas:


6

No escribió por qué elige LXC, ya que no es la solución de virtualización más segura. Soy un gran usuario de KVM / XEN y también de LXC, y puedo decir que cuando se trata de seguridad, nunca uso contenedores Linux (no importa si es LXC / OpenVZ / VServer). Es más fácil (y más confiable) con KVM / XEN.

Si se trata de requisitos de rendimiento o hardware, entonces está bien: puede probar con LXC, pero hay algunas reglas que debe seguir:

  • libvirt asegura el estricto confinamiento de los contenedores cuando se usa SELinux (gracias a LXC_driver), aunque no estoy seguro si es solo el caso RHEL / Centos / Fedora (no uso mucho Ubuntu / Debian) https://www.redhat.com/archives /libvir-list/2012-January/msg01006.html , por lo que elegir SELinux es una buena idea (en mi opinión, es "imprescindible" en tales circunstancias)
  • Establezca reglas estrictas de cgroups para que sus invitados no congelen su host ni afecten a otros contenedores
  • Prefiero ir con contenedores basados ​​en LVM: siempre es una capa más de "seguridad"
  • Piense en la solución de red y la arquitectura. ¿Esos contenedores tienen que comunicarse entre sí?

Comienza leyendo esto , es bastante antiguo, pero aún así, hay mucho conocimiento allí. Y también: conozca los espacios de nombres de usuario

Y después de todo eso, piense de nuevo: ¿realmente tiene tanto tiempo para jugar con la seguridad de LXC? KVM es mucho más simple ...


En primer lugar, gracias por la respuesta. Elijo LXC porque necesito algo ligero, y se ejecutará dentro de KVM. ¿Es posible ejecutar KVM dentro de KVM?
eXPi

1

Para ejecutar programas no confiables, los espacios de nombres de Linux siguen siendo la mejor solución. Es más fácil de configurar que KVM, y requiere menos recursos. Puede probar LXC, sin embargo, LXC se creó como un entorno limitado más genérico para ejecutar imágenes de distribución de Linux completas. Me vienen a la mente otros dos entornos limitados de espacios de nombres de Linux:

  • Sandbox de Google Chrome , distribuido actualmente con Google Chrome / Chromium
  • Firejail , un entorno limitado de seguridad creado para ejecutar Mozilla Firerfox y cualquier otro programa GUI.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.