Como he visto sobre LXC , almacena la información del contenedor y (con el almacén de respaldo predeterminado) los sistemas de archivos raíz en / var / lib / lxc. Las plantillas de creación de contenedores también tienden a almacenar información de distribución en caché en / var / cache / lxc.
Por lo tanto, en general, el acceso al sistema de archivos raíz solo se permite al administrador a menos que haya un mal uso o una configuración incorrecta de los perfiles de usuario al crearlos.
Pero los desarrolladores de Ubuntu ya pueden llegar a este punto y han proporcionado una solución segura con la ayuda de AppArmor.
LXC se envía con un perfil de Apparmor destinado a proteger al host de usos indebidos de privilegios dentro del contenedor. Por ejemplo, el contenedor no podrá escribir /proc/sysrq-trigger
en la mayoría de los /sys
archivos.
El perfil usr.bin.lxc-start se ingresa ejecutando lxc-start. Este perfil principalmente evita que lxc-start monte nuevos sistemas de archivos fuera del sistema de archivos raíz del contenedor. Antes de ejecutar el init del contenedor, LXC solicita un cambio al perfil del contenedor. Por defecto, este perfil es la política lxc-container-default que se define en /etc/apparmor.d/lxc/lxc-default
. Este perfil evita que el contenedor acceda a muchas rutas peligrosas y que monte la mayoría de los sistemas de archivos.
Si encuentra que lxc-start falla debido a un acceso legítimo que es negado por su política de Apparmor, puede deshabilitar el perfil lxc-start haciendo lo siguiente:
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/
Esto hará que lxc-start se ejecute sin restricciones, pero continuará confinando el contenedor. Si también desea deshabilitar el confinamiento del contenedor, además de deshabilitar el usr.bin.lxc-start
perfil, debe agregar:
lxc.aa_profile = unconfined
al archivo de configuración del contenedor. Si desea ejecutar un contenedor en un perfil personalizado, puede crear un nuevo perfil en /etc/apparmor.d/lxc/
. Su nombre debe comenzar con lxc- para que lxc-start pueda pasar a ese perfil. Después de crear la política, cárguela usando:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
El perfil se cargará automáticamente después de un reinicio, ya que el archivo lo obtiene /etc/apparmor.d/lxc-containers
. Finalmente, para hacer que el contenedor CN use este nuevo lxc-CN-profile
, agregue la siguiente línea a su archivo de configuración:
lxc.aa_profile = lxc-CN-profile
lxc-execute
no entra en un perfil de Apparmor, pero el contenedor que genera estará confinado.