¿Dónde están los límites de seguridad de los contenedores lxc?

8

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?

iCode
fuente
sabes que debes preocuparte por eso, AppArmor se encargará de eso.
rɑːdʒɑ

Respuestas:

8

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-triggeren la mayoría de los /sysarchivos.

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

rɑːdʒɑ
fuente
Muchas gracias por tu respuesta. Entonces, ¿estás diciendo que es seguro si uso AppArmor?
iCode
@iCode, Sí appArmor diseñado para proteger las aplicaciones de Ubuntu y LXC también obtiene un gran soporte en términos de seguridad si usa AppArmor.
rʒɑdʒɑ
AppArmor no lo es todo, por ejemplo, descubrí que dmesgse puede llamar desde cualquier contenedor (al menos en la configuración predeterminada). Me temo que ese no es el único riesgo de seguridad ...
Daniel Alder