El mejor método para sandbox X aplicaciones en ubuntu

16

¿Cuál es la mejor manera de aislar una aplicación X como Firefox o Thunderbird en Ubuntu (yendo hacia la dirección de lo que qubes os hace?) , pero solo para aplicaciones individuales)?

Sé que hay muchas tecnologías de sandboxing diferentes. Por ejemplo

  • Solo usando una caja virtual: esto parece ser muy seguro pero es un exceso de recursos. Necesitaría un sistema operativo mínimo en VirtualBox para ejecutar Firefox.

  • Utilizando la tecnología de zona de pruebas de SE-Linux . Esta parece ser la mejor opción pero, por lo que sé, SElinux está disponible en Ubuntu, pero no está muy bien configurada por defecto (en contraste, por ejemplo, con RedHat-linux). Además, parece faltar la parte de la caja de arena de SELinux: enlace para que uno tenga que compilarlo.

  • El apparmor equivalente no parece estar listo para producción y actualmente no se envía con ubuntu por lo que sé. Sin embargo, no puedo estimar cuál es el estado de desarrollo y si valdría la pena esperar hasta el próximo lanzamiento de Ubuntu, donde probablemente formará parte de él.

  • El escritorio de gnome parece admitir X-sandboxing . No me queda claro si uno puede usar esto de una manera independiente de wm.

  • La herramienta lightweigt mbox parece funcionar solo a nivel del sistema de archivos, lo que no sería suficiente para X -aplicaciones.

  • Lo mismo se aplica a las soluciones chroot de creación propia como, por ejemplo, el sandfox-script .

  • Una opción más liviana y segura que chroot parece ser Plash . Pero no estoy seguro de qué tan bien se implementa la protección X.

  • La misma Inmunidad y FBAC-LSM

  • También hay un programa llamado arkose que parece estar bien soportado para ubuntu, pero al mismo tiempo hay muchos poca documentación de cómo funciona y no tengo idea de qué tan seguro es en comparación con otros enfoques.

  • Docker parece estar hecho más para las aplicaciones de servidor que para las de escritorio. No veo si es seguro para las aplicaciones X. Hay un proyecto más nuevo llamado kagome que parece combinar Docker con xephyr para el aislamiento de X. Pero el autor señala que la ventana acoplable tiene algunos fallos de seguridad y que podría ser mejor cambiar a otra solución de contenedor como systemd-nspawn, rkt o lxd.

  • Otras soluciones son: seccomp-nurse , Rainbow , vagrantup

  • Finalmente, especialmente para Firefox hay un apparmor profile para ubuntu pero que es no habilitado por defecto . Esto no es una caja de arena, pero debería brindarle un cierto nivel de seguridad al usar Firefox (pero no sé cómo se compara con las soluciones de la caja de arena anteriores).

Parece que hay muchos enfoques, pero no sé cómo (y por qué) se comparan en términos de seguridad para sandboxing X -aplicaciones como Firefox o Thunderbird, en términos de usabilidad, especialmente en ubuntu-linux y que están listos para la producción y bien soportados. Quisiera saber que alguien podría dar algunos detalles sobre esto, cómo categorizarlos y cuál de ellos valdría la pena para que los analice más detenidamente para mi propósito.

    
pregunta student 25.04.2014 - 09:59
fuente

3 respuestas

6

Puede usar subuser para un sandbox de una aplicación usando Docker. Digamos que querías sandbox Firefox:

Deberías crear una carpeta my-subuser-images y luego crear una segunda carpeta firefox en la primera:

my-subuser-images/firefox

En la carpeta firefox , debe crear otra subcarpeta: docker-image

Una vez que hayas hecho eso, necesitas crear dos archivos:

  • permissions.json

Y

  • docker-image/SubuserImagefile

El diseño de su archivo debe verse como el que se encuentra en subuser-default-repository

En el archivo permissions.json , le dices al subusuario qué puede hacer Firefox:

{"description":"A popular web browser."
,"maintainer":"student"
,"executable":"/usr/bin/firefox"
,"gui":{"clipboard":true}
,"sound-card":true
,"allow-network-access":true
,"basic-common-permissions":true}

Aquí hay una descripción general de los permisos que acabo de establecer:

  • "gui": permite que Firefox muestre ventanas a X11 de forma segura utilizando el puente XPRA X11
  • "tarjeta de sonido": permite que Firefox se comunique con tu tarjeta de sonido
  • "permitir acceso a la red": permite a Firefox acceder a la red
  • "basic-common-permissions": permite a Firefox hacer algunas cosas básicas como guardar la configuración en su propio directorio de inicio especialmente contenido, ver LOCAL y la zona horaria ect.

Sin embargo, NO permite que Firefox acceda a ningún archivo fuera de su propio subusuario. Podría agregar un permiso user-dirs para permitirle acceder al directorio de descargas, por ejemplo, si lo desea.

Una vez que haya creado un archivo permissions.json , puede crear un SubuserImagefile .

El docker-image/SubuserImagefile debería verse como un Dockerfile :

FROM ubuntu
RUN apt-get update && apt-get upgrade -y && apt-get install -yq firefox

Ahora ha terminado de configurar su imagen de subusuario.

Puedes crear un subusuario de Firefox ejecutando:

$ subuser subuser add firefox firefox@/home/student/my-subuser-images

Puede ejecutar el subusuario de Firefox ejecutando:

$ subuser run firefox

Puedes crear más de un subusuario de Firefox. Esto es útil, si desea tener más de una cuenta de Facebook o cuenta de Google y no tener que cerrar la sesión todo el tiempo. También es útil si desea reducir el riesgo de secuencias de comandos entre sitios cuando hace banca por Internet.

subuser subuser add internet-banking firefox@/home/student/my-subuser-images

Puede ejecutar su subusuario de banca por Internet con el comando

subuser run internet-banking

Puede acceder al directorio principal de un subusuario visitando ~/.subuser/homes .

Aquí hay una captura de pantalla de Firefox que se ejecuta en mi sistema con la configuración demostrada:

Tengaencuentaque,apesardequeestoyejecutandoDebian,¡eslaversióndeUbuntudeFirefoxqueestáinstalada!

Puedecompartirsusimágenesdesubusuarioconotros,parareducirlacargadelasaplicacionesdesandboxingparatodos.SideseacompartirsuimagendeFirefox,puedecdamy-subuser-imagesyconvertiresacarpetaenunrepositoriodegit:

$cd~/my-subuser-images$gitinit$gitadd.$gitcommit-m"Add Firefox image"

Si luego empujas este repositorio git en algún lugar, otros pueden instalar tu imagen de Firefox fácilmente con el comando:

$ subuser subuser add firefox firefox@http://example.com/student/my-subuser-images.git

Ejecutarían ese subusuario de la misma manera que si hubieran hecho la configuración localmente.

    
respondido por el timthelion 14.08.2015 - 18:07
fuente
4

La documentación de Ubuntu tiene un comando de sandbox para aplicaciones X que utiliza SELinux:

enlace

SELinux es una ruta agradable ya que hay muchas páginas web, libros, herramientas, etc. sobre su uso. Se integra muy bien con el sistema operativo, lo que es una de las razones por las que es complejo. Tresys vende herramientas agradables que facilitan su configuración.

Cosas como SELinux descienden de las estaciones de trabajo en modo compartimentado de la era del Libro naranja que intentaron agregar seguridad a los sistemas operativos de vainilla. El último producto sobreviviente (y mantenido) que conozco es la línea Argus Pitbull. Solo era Solaris, pero ahora es RHEL. Son mucho más completos que SELinux, aunque pagará por eso. También existe la plataforma de alta seguridad de General Dynamics que combina VMWare & Linux.

El enfoque de VM es más fácil de usar, pero requiere más recursos & Más características en la base de computación confiable. Lo mejor que puedes hacer es usar una distribución muy ligera (CrunchBang viene a la mente), agregar lo que necesitas y recortar lo que no. Las máquinas virtuales pueden restringirse a carpetas individuales a través de los controles obligatorios SELinux o SMACK si desea permitir el uso compartido de carpetas para mover archivos entre el host y el invitado.

También está el proyecto QubesOS que tiene como objetivo hacer que la opción de VM sea más segura. Está en muy buena forma en este momento y es fácil de usar.

El problema general con su pregunta es que ni X ni Ubuntu están diseñados para la separación segura de aplicaciones que desconfían mutuamente. Décadas de investigación se dedicaron a hacer eso para UNIX y X con muchos prototipos / productos. Habiéndolos visto y amp; visto Ubuntu, te garantizo que no están haciendo eso. Las cosas de SELinux solo hacen un poco por eso & Los enfoques de máquina virtual aún tienen mucha superficie de ataque (VMM, Dom0, etc.). Genode, QubesOS, la arquitectura de seguridad Perseus de Europa, la suite OKL4 / OKLinux y la arquitectura Nizza de TU Dresden son solo métodos abiertos que conozco y que son compatibles con Linux. Sus características y amp; la integridad varía considerablemente.

Si está ejecutando Linux de uso general, hay 0 días de espera para ser encontrado, se lo garantizo. Simplemente mantengo mi solución anterior de tener PC separadas, una no en línea y un conmutador KVM. Y el uso de medios de solo lectura (por ejemplo, CD-R), cables de una vía o guardas para mover datos. Y copias de seguridad en medios de sólo lectura. Y cargando desde medios de solo lectura donde sea posible. La configuración completa cuesta menos de $ 1,000 si uno obtiene componentes baratos y amp; Acepta un rendimiento moderado. $ 2,000- $ 3,000 por alto rendimiento.

    
respondido por el Nick P 19.05.2014 - 03:42
fuente
1

Me gustaría agregar este proyecto a la excelente lista de proyectos arriba. Puede hacer sandbox en cualquier tipo de procesos: servidores, aplicaciones gráficas e incluso sesiones de inicio de sesión de usuario.

enlace

Firejail es un programa de recinto de seguridad de SUID que reduce el riesgo de violaciones de seguridad al restringir el entorno de ejecución de aplicaciones no confiables que usan espacios de nombres de Linux. Permite que un proceso y todos sus descendientes tengan su propia vista privada de los recursos del kernel compartidos globalmente, como la pila de red, la tabla de procesos, la tabla de montaje.

    
respondido por el bensonw 23.01.2015 - 16:05
fuente

Lea otras preguntas en las etiquetas