Ejecutar software propietario en Linux de forma segura

10

Como proyecto de verano, busco evitar que cualquier software propietario, como muchos juegos que ejecuto, tenga acceso a mis archivos personales. Después de mirar mucho el sandboxing, decidí que cualquier cosa como chroot es demasiado complicada para mi uso, como simplicidad = seguridad. He creado un usuario con el que se ejecutarán todas estas aplicaciones y me aseguré de que solo los miembros del grupo de mi cuenta personal, en los que este usuario no está, puedan acceder a mis documentos. Las cosas parecen estar en un nivel superficial como si estuvieran funcionando (especialmente después de que lo agregué al grupo de videos), pero pensé que era prudente preguntar qué problemas de seguridad aún existen.

  • ¿Puede una aplicación robar el control de Control-Alt-Fn [1-12]?
    • ¿Puede una aplicación leer lo que está sucediendo en otro servidor x ejecutado por el otro usuario?
  • ¿Importa si mi cuenta para software propietario tiene una contraseña débil?
  • Ya que mi propia carpeta / home / $ USER no da permisos a nadie que no esté en mi grupo o en mí, no importa qué permisos tengan los archivos allí, ¿verdad? Los nombres de los archivos en el interior no se pueden leer, ¿verdad?
  • Wine no hace nada funky a nivel de sistema que podría ser una vulnerabilidad, ¿verdad?
  • ¿Existen vulnerabilidades en el directorio / tmp?
  • ¿Hay otras vulnerabilidades que cualquier aplicación que se ejecute en esa cuenta pueda usar para obtener acceso a mis documentos?
  • ¿Cuáles son las buenas prácticas para este tipo de cosas?

Estoy ejecutando pruebas de Debian. Cualquier consejo sería apreciado.

    
pregunta AviD 12.08.2011 - 23:35
fuente

2 respuestas

11

Chroot no te daría ninguna seguridad de todos modos, solo está diseñado para casos de uso muy específicos. Consulte problemas de seguridad de chroot de Debian inestables y chroot "jail": ¿qué es y cómo lo uso? .

Cualquier aplicación que tenga acceso al servidor X puede hacer muchas cosas. Puede fisgonear en otras aplicaciones que muestran ventanas en el mismo servidor. Puede registrar pulsaciones de teclas. Puede rebindir llaves. Puede inyectar pulsaciones de teclas en otras aplicaciones. Tiene acceso al portapapeles. Si ejecuta las aplicaciones que no son de confianza en un servidor X en el que nunca ejecuta ninguna aplicación que se ejecute como su usuario normal, esto no es un problema, excepto que la aplicación puede eliminar su capacidad de cambiar a otra consola.

El vino en sí no se ejecuta con privilegios elevados. El servidor X lo hace (se ejecuta como root), por lo que si hay una vulnerabilidad en él, lo perderá. Se está haciendo un esfuerzo para evitar ejecutar el servidor X como root, pero eso implica mover partes del código al controlador del kernel que se ejecuta con el máximo nivel de privilegio. Siempre debes confiar en tu kernel.

Cualquier aplicación puede acceder a los archivos en /tmp y /var/tmp . Si esto es una preocupación, no use estos directorios para sus propios archivos. Es muy fácil configurar los directorios temporales por usuario: instale el libpam-tmpdir package . Las aplicaciones también pueden acceder a otros datos que puede considerar confidenciales, como la lista de usuarios en su sistema, la lista de programas que ha instalado, etc. Datos debajo de un directorio que no es legible (más precisamente, no tiene permiso de ejecución) por parte de La aplicación no puede acceder a la aplicación.

Si las aplicaciones no son demasiado exigentes (en particular, no requieren demasiados gráficos), ejecútelas en una instalación de SO dedicada en una máquina virtual. Esto es lo más aislado que puede faltar en el hardware dedicado. Deniegue el acceso a la red de la máquina virtual y no ingrese datos confidenciales, esto le brinda doble protección contra las violaciones de privacidad.

    
respondido por el Gilles 13.08.2011 - 00:26
fuente
7

El enfoque más seguro es ejecutar el software propietario en una máquina virtual (VM). Esto es bastante simple de configurar, y puede encontrar máquinas virtuales gratuitas (por ejemplo, VirtualBox). Sin embargo, dado que menciona juegos, es posible que esto no funcione para los juegos (puede producir una degradación del rendimiento inaceptable en algunos juegos con uso intensivo de gráficos).

Otra posibilidad es instalar una segunda copia del sistema operativo en una partición separada en el disco duro, y luego reiniciar en su sistema operativo "por diversión" cuando desee ejecutar las aplicaciones propietarias. Sin embargo, esto es probablemente demasiado doloroso para usar en la práctica.

Una tercera posibilidad, si puede instalar el software desde una cuenta de usuario (no root), es crear una nueva cuenta de usuario para su software propietario, instalar el software como esa cuenta y ejecutarlo desde esa cuenta. Es posible que ni siquiera necesite salir y volver a iniciar sesión, si usa sudo o 'ssh -X' (aunque esto podría causar cierta pérdida de seguridad debido a vulnerabilidades fundamentales en el protocolo X).

Una cuarta posibilidad, si está ejecutando una distribución de Linux que admita SELinux, es usar el programa sandbox de SELinux. Consulte, por ejemplo, este artículo de la Fundación Linux , o publicación del blog de Dan Walsh , Dan Las diapositivas de Walsh sobre él . Sin embargo, te advierto que esto podría ser un poco más complicado de usar.

Si desea obtener más detalles, sandboxing.org , enumera una serie de otras tecnologías de sandboxing. Para sus propósitos, Plash (vea también the wiki de Plash ) es probablemente el sandbox más sofisticado y maduro, por lo que también puedes probar Plash si lo deseas.

Lamentablemente, nada de esto es súper fácil. Desearía que OS haya hecho esto mucho más fácil, pero en la actualidad, me temo que es un poco molesto.

    
respondido por el D.W. 13.08.2011 - 03:44
fuente

Lea otras preguntas en las etiquetas