¿Por qué usar lxc en lugar de chroot?

10

Un servidor ubuntu aloja 3 aplicaciones, todas en dominios separados.
Cada aplicación tiene sus propios desarrolladores.
Los desarrolladores de aplicaciones pertenecen al grupo linux "sftp".
chrootpermite el acceso de contraseña sftp para cada desarrollador de aplicaciones.

/home/app1/prod
/home/app2/prod
/home/app3/prod

En sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

Nuestra preocupación es una vulnerabilidad de programación en una aplicación que causa problemas en las otras 2 aplicaciones.

¿Deberíamos usar el contenedor lxc en lugar de chroot? ¿Por qué? ¿El cambio a los contenedores lxc será transparente para los desarrolladores de aplicaciones?

csi
fuente
2
Lo único que chroothace es cambiar el directorio raíz de un proceso. No ofrece aislamiento ni nada más.
Zoredache

Respuestas:

14

Los contenedores de Linux (LXC) son un método de virtualización a nivel de sistema operativo para ejecutar múltiples instalaciones de servidores aislados (contenedores) en un único host de control. LXC no proporciona una máquina virtual, sino que proporciona un entorno virtual que tiene su propio proceso y espacio de red. Es similar a un chroot, pero ofrece mucho más aislamiento.

Los contenedores de Linux tienen varias características / ventajas:

Ventajas:

Mejor aislamiento en comparación con un chroot (cárcel chroot). Gastos indirectos bajos. LXC utiliza recursos mínimos en términos de RAM y espacio en el disco duro sin la sobrecarga de instalar un SO huésped en una máquina virtual (VMWare / VirtualBox / KVM).

Las aplicaciones y servicios (servidores) se ejecutan a velocidad nativa.

Hay soporte para contenedores Linux en libvirt.

Los contenedores de Linux funcionan bien con btrfs.

Pero también hay un inconveniente:

Los contenedores de Linux ejecutan procesos de Linux en un kernel de Linux. Esto significa que puede ejecutar Linux (contenedor Fedora en un host Ubuntu) pero no otros sistemas operativos (no BSD / OSX / Windows).

No hay interfaces GUI (gráficas) para configurar o administrar los contenedores.

Hay una escasez de documentación sobre cómo instalar y configurar un contenedor. La configuración de un contenedor requiere un modesto conocimiento técnico y habilidad (y una gran cantidad de paciencia).

Abhishek Anand Amralkar
fuente
1
¿Qué núcleo se usa dentro del LXC? (¿El del anfitrión o el invitado?)
Francesco
44
Muchas de las ventajas y desventajas comparan LXC con la virtualización completa, lo cual es irrelevante para la pregunta formulada, y tal vez incluso engañosa.
Roger Dueck
@Francesco, con LXC, (y contenedores de Linux en general), solo hay un kernel: el kernel host. Algunas excepciones a esto son, por ejemplo, Docker ejecutándose en MacOS o Windows, ya que usan un kernel de Linux que se ejecuta en una máquina virtual; sin embargo, todos los contenedores de Linux en estas plataformas todavía usan el mismo kernel.
ira