Contenedores LXC como entorno sandbox

Contenedores LXC como entorno sandbox

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

Cada contenedor debe estar asegurado con SELinux para proteger el sistema host.

Mi pregunta es: ¿Es una buena idea crear un mecanismo de este tipo para un entorno sandbox o existe alguna solución mejor para este problema? Debe ser ligero y seguro frente a la creatividad de los estudiantes.

Respuesta1

No escribió por qué eligió 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 una cosa: cuando se trata de seguridad, nunca uso contenedores de Linux (no importa si 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; puedes probar con LXC, pero hay algunas reglas que debes seguir:

  • libvirt garantiza un confinamiento estricto de los contenedores cuando se usa SELinux (gracias a LXC_driver); aunque no estoy seguro si es solo el caso de RHEL/Centos/Fedora (no uso mucho Ubuntu/Debian)https://www.redhat.com/archives/libvir-list/2012-January/msg01006.html- entonces optar por 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 a su anfitrión ni afecten a otros contenedores
  • Prefiero usar contenedores basados ​​en LVM: siempre es una capa más de "seguridad"
  • Piense en la solución y la arquitectura de la red. ¿Esos contenedores tienen que comunicarse entre sí?

Empezar con la lecturaeste- es bastante antiguo, pero aún así - hay mucho conocimiento allí. Y también - conocerespacios de nombres de usuario

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

Respuesta2

Para ejecutar programas que no son de confianza, 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 completas de distribución de Linux. Me vienen a la mente otros dos entornos limitados de espacios de nombres de Linux:

  • Google ChromeSandbox, distribuido actualmente con Google Chrome/Chromium.
  • cárcel de fuego, un entorno limitado de seguridad creado para ejecutar Mozilla Firerfox y cualquier otro programa GUI.

información relacionada