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.

eXPi
fuente

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 ...

Maciej Lasyk
fuente
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.
netblue
fuente