Quiero ejecutar pequeños programas no confiables, pero restringirles el acceso a cualquier archivo fuera de su carpeta, acceso a la red y todo lo que realmente no necesitan. ¿Cuál es la forma más sencilla de lograr esto?
@JavierRivera FWIW, SELinux también. Sin embargo, no tengo idea de lo fácil que sería ejecutar Ubuntu.
TC1
Apparmor ya está instalado por defecto en Ubuntu, por lo que debería ser más fácil.
Javier Rivera
1
Parece que son múltiples posibilidades: virtualización usando algo como Virtualbox (como Vagrant), chroot, LXC, App Armor y SE Linux.
Flimm
Respuestas:
26
Si realmente no son de confianza, y desea estar seguro, debería configurar una caja separada. Realmente o virtualmente.
Además, no quieres que esa caja esté en la misma red que tus cosas importantes, si eres lo suficientemente paranoico. En todas las soluciones, configuraría un usuario separado sin derechos, de modo que no abra demasiadas herramientas al posible comprometido.
Por lo tanto, la opción más segura sería una casilla separada eliminada físicamente de su red.
Podría ceder un poco agregándolo a la red física, pero en una subred diferente: no hay conexión 'real' dentro
Una máquina virtual sería una opción, pero podría tener que renunciar a algo de rendimiento.
Si está obligado a ejecutarlo en el mismo cuadro, tiene, por ejemplo, esta opción
chroot. Esta es una opción predeterminada para hacerlo para muchas personas, y para amenazas no específicas, incluso podría funcionar. Pero NO es una opción de seguridad, y se puede romper fácilmente. Sugeriría usar esto según lo previsto, es decir, no por seguridad.
Al final, es posible que deba configurar un modelo de sandboxing específico sin la molestia de la virtualización o cajas separadas, o la situación de riesgo chroot. Dudo que esto sea lo que quisiste decir, pero mira este enlace para obtener información más detallada.
¿Cuán seguro sería prudente ejecutar una aplicación no confiable en una máquina virtual? He oído hablar de exploits teóricos que pueden acceder al sistema operativo host a través del hipervisor e infectarlo.
zuallauz
Podría ser, aunque actualmente no estoy al tanto de amenazas reales como esa, ciertamente no son amenazas no específicas. Debes considerar que el atacante que escribe malware en un juego no iría tan lejos. Ahora, por supuesto, un ataque de lanza contra usted solo podría, si conocen su diseño, pero aún así no creo que sea su primera preocupación. Si está seguro de que son maliciosos, debería configurar una caja aislada de todos modos, en cuanto a la red.
Nanne
14
Firejail es bastante nuevo y está en constante desarrollo. Fácil de usar.
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Mark Kirby
12
Docker lo ayudará a configurar contenedores que puede ejecutar desde su núcleo actual, pero a la vez mantenerse alejado del resto de su sistema. Parece bastante innovador, pero hay un enfoque de Ubuntu y una buena documentación.
Creo que esta es una buena opción para la mayoría de los casos. Sin embargo, la parte "no confiable" de la pregunta original me preocuparía un poco. Hay hacks demostrados disponibles que pueden permitir que una aplicación "salga" de su contenedor. Y dado que los contenedores Docker se ejecutan en el acceso raíz, esto podría ser peligroso, si su objetivo era proteger las aplicaciones entre sí.
Cris Holdorph
@CrisHoldorph es correcto, aunque Docker está mejorando e incluso creo que hoy en día es posible ejecutar un docker sin privilegios (no como root). Esto es ciertamente cierto ahora para LXC y LXD (el a veces llamado demonio LXC) puede simplificar enormemente la creación de dichos contenedores. Por lo tanto, los contenedores modernos sin privilegios se pueden considerar como una mejora en términos de seguridad sobre chroot. ¡Pero no son una barrera impenetrable!
Huygens
Docker no es una herramienta de seguridad!
Federico
10
Virtualización / emulación completa (VirtualBox)
Una posible solución es el software de virtualización como VirtualBox, que puede encontrar en el centro de software.
Instalar caja virtual
Cree una máquina virtual con redes habilitadas
Instale Ubuntu o quizás un escritorio más ligero como Lubuntu
Actualice completamente el sistema operativo instalado (dentro de la caja virtual)
Deshabilitar redes en la máquina virtual
Toma una foto
Ahora puede instalar el software en el que no confía para ver qué hace. No puede alterar el mundo exterior o aloja el sistema operativo ya que no tiene acceso.
Sin embargo, puede destruir su máquina virtual, pero si lo hace, puede restaurar desde su instantánea.
Puede haber otros métodos para limitar el poder destructivo del software no confiable, pero este es el método más robusto que se me ocurre.
Virtualización basada en contenedores (Docker / LXC)
LXC es el paquete de control de espacio de usuario para Linux Containers, un mecanismo de sistema virtual liviano que a veces se describe como "chroot con esteroides".
LXC se acumula desde chroot para implementar sistemas virtuales completos, agregando mecanismos de gestión de recursos y aislamiento a la infraestructura de gestión de procesos existente de Linux.
Está disponible en el centro de software. Sin embargo, no tengo experiencia.
Eso es solo un inconveniente. ¿Crear una máquina virtual completa solo para ejecutar juegos? Esa no es una muy buena solución. ¿No crees que configurar el GID y el UID del proceso sería MUCHO más fácil que esto?
Jack Mayerz
En realidad, creo que configurar una caja virtual es lo suficientemente fácil como para que probablemente no me moleste en tomar una instantánea. Si destruye mi máquina virtual, puedo descartarla.
emory
Voto negativo: razonamiento incorrecto real incluso si la solución es correcta. Los programas no necesitan tener los mismos privilegios que el usuario que los ejecuta. Linux y Ubuntu han sido compatibles con MAC desde hace años. Ubuntu usa AppArmos para esto, y puede contener un programa en un directorio fácilmente.
Javier Rivera
@JavierRivera "fácilmente" no es la palabra correcta, o un perfil de AppArmor y una política SELinux para Firefox se enviarían por defecto con cada distribución y ese no es el caso. Ubuntu incluye dicho perfil pero no está activo por defecto, ya que rompe algunas características "populares" de Firefox. Tampoco hay muchas políticas de SELinux para la mayoría de las aplicaciones GUI, tales aplicaciones requieren demasiados permisos para seguir siendo llamadas sandbox. Si no está de acuerdo, publique aquí enlaces a Sandbox Firefox de forma segura con AppArmor o SELinux. Si puedes, sería realmente feliz :-)
Huygens
Probablemente deberías definir "seguro" para una respuesta significativa, pero la política predeterminada de Firefox en Ubuntu es bastante razonable para mí. Por supuesto, rompe las cosas, ya que no es tan fácil de usar como no usar nada, pero sigue siendo mucho más fácil de usar que una máquina virtual completa para mí (eso también rompe las características populares de Firefox).
Puede usar el subusuario para proteger sus aplicaciones con Docker. Esto le permite hacer cosas como aplicaciones GUI de sandbox, que no es fácil de hacer con Docker directamente.
Creo que una posible solución es crear un usuario separado para fines de prueba y limitar sus privilegios. De esta manera, no perderá rendimiento, lo que definitivamente sucedería en la máquina virtual, pero creo que esto es menos seguro, si no se configura de manera muy adecuada, lo que no puedo aconsejar sobre cómo hacerlo.
Esto no protege el sistema del software malicioso que aún puede instalarse o ejecutarse; tampoco es un entorno limitado de la manera en que esta pregunta significa
En caso de que simplemente desee proteger la actividad de los usuarios, puede usar "DoSH"
DoSH (que significa Docker SHell) es un desarrollo para crear contenedores Docker cuando los usuarios inician sesión en el sistema Linux y ejecutan un shell en ellos, en lugar de crear el shell de manera simple.
Respuestas:
Si realmente no son de confianza, y desea estar seguro, debería configurar una caja separada. Realmente o virtualmente.
Además, no quieres que esa caja esté en la misma red que tus cosas importantes, si eres lo suficientemente paranoico. En todas las soluciones, configuraría un usuario separado sin derechos, de modo que no abra demasiadas herramientas al posible comprometido.
Si está obligado a ejecutarlo en el mismo cuadro, tiene, por ejemplo, esta opción
chroot
. Esta es una opción predeterminada para hacerlo para muchas personas, y para amenazas no específicas, incluso podría funcionar. Pero NO es una opción de seguridad, y se puede romper fácilmente. Sugeriría usar esto según lo previsto, es decir, no por seguridad.Al final, es posible que deba configurar un modelo de sandboxing específico sin la molestia de la virtualización o cajas separadas, o la situación de riesgo
chroot
. Dudo que esto sea lo que quisiste decir, pero mira este enlace para obtener información más detallada.fuente
Firejail es bastante nuevo y está en constante desarrollo. Fácil de usar.
Puedes simplemente:
fuente
Docker lo ayudará a configurar contenedores que puede ejecutar desde su núcleo actual, pero a la vez mantenerse alejado del resto de su sistema. Parece bastante innovador, pero hay un enfoque de Ubuntu y una buena documentación.
fuente
Virtualización / emulación completa (VirtualBox)
Una posible solución es el software de virtualización como VirtualBox, que puede encontrar en el centro de software.
Ahora puede instalar el software en el que no confía para ver qué hace. No puede alterar el mundo exterior o aloja el sistema operativo ya que no tiene acceso.
Sin embargo, puede destruir su máquina virtual, pero si lo hace, puede restaurar desde su instantánea.
Puede haber otros métodos para limitar el poder destructivo del software no confiable, pero este es el método más robusto que se me ocurre.
Virtualización basada en contenedores (Docker / LXC)
Otra opción puede ser LXC más información aquí
LXC es el paquete de control de espacio de usuario para Linux Containers, un mecanismo de sistema virtual liviano que a veces se describe como "chroot con esteroides".
LXC se acumula desde chroot para implementar sistemas virtuales completos, agregando mecanismos de gestión de recursos y aislamiento a la infraestructura de gestión de procesos existente de Linux.
Está disponible en el centro de software. Sin embargo, no tengo experiencia.
fuente
mbox
Lo he usado para un par de cosas de manera confiable.
fuente
subusuario
Puede usar el subusuario para proteger sus aplicaciones con Docker. Esto le permite hacer cosas como aplicaciones GUI de sandbox, que no es fácil de hacer con Docker directamente.
fuente
Creo que una posible solución es crear un usuario separado para fines de prueba y limitar sus privilegios. De esta manera, no perderá rendimiento, lo que definitivamente sucedería en la máquina virtual, pero creo que esto es menos seguro, si no se configura de manera muy adecuada, lo que no puedo aconsejar sobre cómo hacerlo.
fuente
DoSH - Docker SHell
En caso de que simplemente desee proteger la actividad de los usuarios, puede usar "DoSH"
fuente