Cómo proteger / inicio adecuadamente con cuentas de usuario separadas en Linux

4

Una gran cita de este Subproceso de InfoSec stackExchange.

  

La forma de evitar que los códigos maliciosos dañen archivos en su hogar   El directorio es no ejecutarlo usando tu cuenta. Crea un separador_usuario   que no tiene ningún permiso especial y código de ejecución bajo ese UID   hasta que hayas determinado si puedes confiar o no.

La mayoría de los códigos que ejecuto, que pueden ser maliciosos, son aplicaciones científicas específicas que se instalan a través de sudo apt-get install suspect_program . apt-get le dará al sospechoso_programa acceso a la raíz durante la instalación. Por lo tanto, el código puede ejecutar cualquier cosa maliciosa que desee en cualquier lugar que desee en mi sistema.

¿De qué manera la ejecución del código bajo una cuenta de seperate_user protege cualquier otra cuenta en mi caja de Ubuntu Linux? Ya le di el acceso root a suspect_program cuando instalé la maldita cosa.

    
pregunta stackinator 27.03.2018 - 20:59
fuente

1 respuesta

4

Si le dio acceso a la raíz del programa, no puede evitar que acceda a su cuenta.

(Por "acceso de raíz", me refiero a "el nivel más alto de privilegios". Es posible ejecutar programas como el usuario root sin otorgarles el nivel más alto de privilegios, a través de marcos de seguridad como SELinux. Sin embargo, para obtener la protección real, tendría que ejecutar el administrador de paquetes con privilegios restringidos, de una manera que no le permita aumentar sus privilegios, por ejemplo, creando un binario setuid o un trabajo cron. Creo que esto es posible, pero sería muy difícil de configurar y no tengo conocimiento de un marco existente que haga esto.)

Para aislar realmente el programa (incluidos los scripts de instalación), debe instalarlo y ejecutarlo en un entorno virtual. Si el programa no necesita acceder directamente al hardware y no necesita exprimir el máximo rendimiento de la CPU, ejecútelo en una máquina virtual. Si eso no es posible, ejecute el programa en un contenedor , que crea un entorno virtual de usuario en el mismo núcleo que su entorno principal. Dado que el programa se ejecuta sobre el mismo kernel, su rendimiento no se ve afectado por la ejecución en un contenedor, y el contenedor tiene acceso a cualquier dispositivo que elija para permitirle acceder. Un programa que se ejecuta como root en un contenedor es solo root dentro del contenedor y no puede acceder a archivos que no están compartidos con el contenedor. Docker es un software popular para administrar y distribuir contenedores.

    
respondido por el Gilles 27.03.2018 - 22:30
fuente

Lea otras preguntas en las etiquetas