Estoy probando varias soluciones de sandboxing en Linux. Estoy acostumbrado a ejecutar programas que no son de confianza (por ejemplo, un navegador web, un lector de documentos pdf, etc.) dentro de una caja de arena selinux, con lo que estoy bastante satisfecho, pero hay un problema: solo es compatible con rhel / fedora. AFAIK otras distribuciones realmente no son compatibles con selinux (incluso cuando dicen que sí, no envían políticas o documentación utilizables), e incluso cuando se proporciona una política casi de trabajo, policycoreutils-sandbox no está disponible (vea debian).
¿Qué podría ser una solución de caja de arena multi-distro? Estoy probando la ventana acoplable / subusuario, que me permite iniciar un contenedor acoplable que ejecuta la aplicación de interés y le da acceso solo a una parte del sistema de archivos. Por ejemplo, puedo ejecutar 'chrome' en un contenedor de la ventana acoplable y dejar que solo acceda a mi directorio de descargas.
Esto parece una solución conveniente ya que es independiente de la distribución y no requiere que instale el programa que planeo ejecutar y sus dependencias en el host.
Sin embargo, no estoy muy seguro de cuánta seguridad hay en 'subuser-security': enlace
En primer lugar, la ventana acoplable aún no admite espacios de nombres de usuarios. Esto significa que cada 'contenedor' se ejecuta como root en mi host, incluso si está aislado por lxc. esto también significa que, si sigo las recomendaciones del subusuario, debo agregar mi usuario al grupo de docker. dado que dockerd se ejecuta como root, tener acceso a él significa que tengo acceso completo a todo el sistema de archivos del host como root, puedo ejecutar contenedores privilegiados, etc. Si esto no permite la escalada de privilegios (incluso si no es desde las aplicaciones 'invitadas', Espero), no sé lo que es.
además, digamos que estoy ejecutando Chrome en subusuario. Ahora tengo un navegador Chrome con su caja de arena deshabilitada (una capa menos) dentro de otra caja de arena debajo del usuario root. ¿Es realmente un beneficio simplemente ejecutando Chrome con su sandbox en un usuario sin privilegios?
No podría limitar su acceso a mi directorio principal, pero aparte de eso, no veo razones para preferir subusuario / docker.
¿Qué otras soluciones independientes de distro quedan?
Estoy empezando a pensar que la solución menos complicada sería simplemente usar usuarios estándar de Unix. Un usuario por aplicación, tal vez instale una aplicación y sus dependencias en ~ local, ~ bin, etc.
¿Qué gestores de paquetes admiten la instalación de un paquete, manteniendo un árbol de paquetes, como usuario dentro del directorio de inicio de un usuario? ¿Hay algún administrador de paquetes de terceros para Linux que admita esto?
¿Cómo compartirías archivos entre usuarios? Estoy pensando en la posibilidad de ejecutar un demonio ftp sin privilegios en localhost, digamos como usuario 'estándar' o 'almacenamiento' y usar usuarios virtuales para exportar partes de ese directorio de inicio (por ejemplo, / home / me / apps / webdownloads ) a otros usuarios, aplicaciones y montaje a través de fusibles.
¿Es esto razonable?