Mi pregunta es sobre la seguridad de un contenedor LXC.
Si estoy ejecutando múltiples contenedores en mi caja, y les doy a los usuarios un acceso ssh separado a su contenedor, ¿puede alguno de esos contenedores piratear los otros contenedores en esa caja o incluso la máquina host?
¿Dónde están los límites de seguridad de los contenedores lxc?
Respuestas:
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:
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: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: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 nuevolxc-CN-profile
, agregue la siguiente línea a su archivo de configuración:lxc-execute
no entra en un perfil de Apparmor, pero el contenedor que genera estará confinado.fuente
dmesg
se puede llamar desde cualquier contenedor (al menos en la configuración predeterminada). Me temo que ese no es el único riesgo de seguridad ...