¿Los archivos de usuario siguen siendo privados cuando existen dos usuarios de sudo en Ubuntu?

31

Estoy compartiendo mi PC Ubuntu personal con uno de mis colegas.

Creé otro usuario con una contraseña diferente (él lo sabe, por supuesto) y la agregué a la sudoerlista.

Dado que hay dos sudousuarios en un solo sistema Ubuntu:

  • ¿Los archivos privados (especificados por los propietarios y los permisos) de alguno de estos usuarios siguen siendo privados?

  • ¿Puedo modificar los archivos de mi colega mediante un sudocomando, incluso sudo su, o viceversa?

Jizhou Huang
fuente
66
Ubuntu permite encriptar una carpeta de inicio al crear el usuario. Esa puede ser exactamente la característica necesaria aquí.
Thorbjørn Ravn Andersen
Relacionado:   ¿Es posible retener a un servidor como rehén si alguien tiene acceso a la raíz?
G-Man dice 'Restablecer a Monica' el
@ ThorbjørnRavnAndersen Una vez que encripte la carpeta de inicio, ¿puedo acceder a los archivos dentro tan conveniente como antes?
Jizhou Huang
3
¿Por qué no eliminas el acceso a sudo del otro usuario y te conviertes en el único administrador? Cualquiera sea la razón por la que el otro usuario necesita sudo, puede arreglarlo para que no necesite sudo (montaje, impresión, actualizaciones automáticas, etc.)
Xen2050

Respuestas:

51

Si su colega está en la lista de sudoers, él es root tanto como usted si lo desea (y también puede hacerse pasar por usted), y luego puede ver todo.

Esta es la peor configuración que puede tener si desea privacidad del usuario. Debería leer definitivamente cómo funciona la gestión de usuarios en Linux. Aquí hay algunos artículos con los que puede comenzar:

E incluso entonces, si alguien tiene acceso físico a la máquina en cuestión, no hay privacidad, podría caer al inicio en un shell raíz y ver todo sin importar qué, y si esto estaría protegido con contraseña, aún podría usar una memoria USB y entra de esta manera.

Entonces, lo mejor en ese caso es la administración de usuarios adecuada, la contraseña para la raíz y la unidad cifrada y / o los directorios principales cifrados.

Videonauth
fuente
2
Aunque asegúrese de sudo -ique no funciona :)
Wilf
3
Mientras que la configuración más simple y más común de sudoers es permitir que una lista de usuarios tenga privilegios de root temporalmente, sudoers permite un control de acceso detallado. Por ejemplo, puede especificar que un usuario pueda ejecutar solo ciertos comandos específicos como root. Si tiene cuidado de permitir que un usuario solo ejecute comandos que no permiten crear un shell raíz o de otro modo crear un acceso root persistente más allá del alcance de los comandos que desea permitir, puede evitar darle acceso root en general.
bgvaughan 01 de
19

Una alternativa simple es mantener sus datos privados en un archivo cifrado (podría ser un archivo de archivo tar, que se cifra, por ejemplo, con gpg). Debe recordar sobrescribir y eliminar los archivos de texto claro después de mirarlos.

Otra alternativa para todos los que comparten una computadora y acceso a sudo (root) es usar el hogar encriptado y el intercambio encriptado.

Pero esto no ayudará si ha iniciado sesión al mismo tiempo. De hecho, debe reiniciar la computadora para deshacerse de sus archivos en formato de texto claro, incluso con el hogar encriptado.


En general, la seguridad es muy difícil, y un sistema de usuario único con disco cifrado (LVM con cifrado) sería la forma más sencilla de mantener las cosas seguras.

  • No almacene datos privados confidenciales en una computadora compartida
  • No almacene datos privados en una computadora que pertenezca a su empleador
sudodus
fuente
3
Un contenedor dm-crypt / LUKS no tendría que preocuparse por sobrescribir archivos de texto sin formato (excepto los archivos temporales y el intercambio de cualquier aplicación), o un solo directorio cifrado ~ / .Private conecryptfs-mount-private
Xen2050
66
Esto ni siquiera lo protege de ataques malvados de sirvientas: el otro usuario de sudo puede alterar el sistema para engañarlo y que le dé su frase de contraseña. Dicha pregunta debería leerse como "Sospecho que mi colega es un espía ruso. ¿Debería darle los derechos de sudo en mi computadora?"
sleblanc
¿Qué pasa con una máquina virtual con imagen de disco encriptada? blogs.oracle.com/scoter/…
leftaroundabout
1
Si necesita privacidad, necesita un sistema de usuario único, en otras palabras, ningún otro usuario, definitivamente ningún otro usuario de sudo. El Ubuntu LVM con sistema de encriptación es vulnerable a los ataques de las criadas malvadas. Aún así, creo que es mejor que las otras alternativas fáciles, incluido el hogar encriptado. Por supuesto, si lo desea, puede tener el disco encriptado y el hogar encriptado y un solo sistema de usuario, para hacer las cosas más difíciles para un intruso, por ejemplo, según este enlace, iso.qa.ubuntu.com/qatracker/milestones / 363 / builds / 126342 /…
sudodus
Todo lo que el nuevo usuario root necesita hacer es instalar un rootkit de espacio del kernel como la diamorfina. Ni siquiera tiene que molestarse en hurgar con los LD_PRELOADhacks de los usuarios : simplemente haga un simple registrador de pulsaciones de teclas y tírelo a algunos scripts de Python para hacer una segmentación borrosa de K-means basada en el tiempo / agrupación de la escritura, y un poco de análisis de texto, y hecho. Ahora tiene la frase de contraseña para el usuario y probablemente pueda acceder a sus datos personales.
Nube
8

Una vez que pueda obtener rootpermisos (p. Ej sudo. su, Uso, etc.).
Tiene acceso completo a todos los archivos del sistema.

Por lo tanto, los dos usuarios que tienen sudopermiso y pueden rootusarlo sudo bashtendrán acceso completo a todos los archivos del sistema

De acuerdo con estas preguntas y respuestas en SE-Security: Es posible que pueda modificar SELinux(que no es Ubuntu) para limitar el rootacceso:

Si su pregunta es "¿puedo hacer esto ahora de manera fácil y segura?" la respuesta es no. Si su respuesta es "Estoy preparado para aprender sobre SELinux, ensuciarse con mi distribución y soportar muchas cosas que no funcionan", la respuesta es que es posible restringir la raíz mucho más que su instalación promedio. Dicho esto, esto de ninguna manera te hace invulnerable a los exploits, no hace que sea imposible para un usuario eludir este control de acceso adicional, ya sea en software o físicamente.

Yaron
fuente
2
Puede limitar la raíz con apparmor y selinux, sin embargo, alguien con acceso completo a la raíz o acceso a través del shell de recuperación o un CD en vivo, con cualquiera de los sistemas (apparmor o selinux) puede cambiarlo de nuevo.
Pantera
1
Incluso si usa SELinux o similar para limitar lo que la raíz puede hacer directamente, aún podrían modificar las utilidades que los usuarios ejecutan ellos mismos. Y si se supone que pueden ejecutar cualquier actualización, necesitarán acceso para modificar los archivos binarios en el sistema ...
ilkkachu
5

Para dejar en claro lo que las otras respuestas ya declararon: ese otro usuario no solo es "root tanto como usted" (la respuesta de Videonauth), sino que también puede convertirse en usted (cambiar a su cuenta de usuario) .

Esto se debe a que con los privilegios de superusuario, uno puede cambiar a cualquier cuenta.

Probablemente lo sepas

sudo su

que es una opción para abrir un shell de root si root no tiene una contraseña establecida (por lo que no puede iniciar sesión directamente como root).

sues la abreviatura de "cambiar de usuario". ¿A qué usuario cambia? No se indica ninguno, ¿verdad? Pero desde la página del manual, podemos aprender que:

Invocado sin un nombre de usuario, su valor predeterminado es convertirse en superusuario.

Entonces esto efectivamente es

sudo su root

si no cambiaste el nombre roota otra cosa.

Si acaba de ejecutar su <someuser>, se le pedirá una contraseña. Entonces, si ejecuta su root, se le solicita la contraseña de root (que no existe en Ubuntu de manera predeterminada, por lo que no puede iniciar sesión (tenga en cuenta que no se establece una contraseña significa que no hay medios para iniciar sesión a través de una contraseña que es diferente de la contraseña que es la cadena vacía)). Pero si ejecuta sudo su root, se le solicita su propia contraseña. Y solo te lo pide sudo. Una vez que sudorecibe su contraseña, ejecuta el comando que recibió como parámetros con privilegios de superusuario. Como uno puede cambiar a cualquier cuenta cuando tiene privilegios de superusuario, no es necesario solicitar una contraseña.

Entonces al ejecutar

sudo su <yourusername>

, el otro sudoer puede iniciar sesión como usted.

UTF-8
fuente
+1; Sí, no mencioné esto por no causar confusión, el campo de proteger una máquina correctamente es amplio y está lleno de piedras por las que puedes luchar. Sigue siendo una buena adición a lo que ya se ha dado como respuesta.
Videonauth
¿No está seguro, pero no sudo susiempre está predeterminado en UID 0 y GUID 0? En caso afirmativo, no debería importar cómo denominó 'root'.
Videonauth
@Videonauth Tienes razón con la segunda oración en tu segundo comentario. Sin embargo, esta es la razón por la que incluí la oración que estás criticando. Si cambia el nombre roota john, sudo suahora es equivalente a sudo su johny ya no sudo su root.
UTF-8
3

Es posible limitar los programas que se pueden ejecutar mediante la escalada de privilegios sudo editando el archivo sudoers ( /etc/sudoers).

Consulte la respuesta aceptada a esta pregunta en Super User para obtener más detalles y también aquí en Unix y Linux . Consulte la respuesta de slm para obtener una sugerencia sobre la limitación de privilegios en /etc/sudoers.

También revise la manpágina de sudoers escribiendo man sudoersy no olvide probarlo. Recuerde que con un acceso sudo ilimitado, un usuario puede suplantar completamente a cualquier otro usuario. por ejemplo, si el usuario fooejecutara el comando

sudo exec su - bar

entonces podrían actuar como usuarios bar, con todos los privilegios de ese usuario.

hombre encantador
fuente
66
Tenga en cuenta que los específicos de sudoerslas líneas que se muestran en la SLM y mtak de respuestas no funcionan para dar la posibilidad de realizar algunas acciones y no a otros, ya que es trivialmente fácil de utilizar para ejecutar cualquier comando. (Consulte los comentarios sobre cada una de esas respuestas para obtener explicaciones detalladas de por qué). Esta respuesta puede no ser estrictamente incorrecta, ya que a veces es posible permitir que los usuarios utilicen sudocomandos específicos como root sin convertirlos efectivamente en administradores. Pero es muy difícil hacer esto bien.
Eliah Kagan
@EliahKagan Derecha. Sería necesario asegurarse cuidadosamente de no permitirles alcanzar un mecanismo que les permita ejecutar cualquier comando. Por supuesto, depende del nivel de confianza que deposite en la otra persona.
1
@EliahKagan De ahí la exhortación a leer la página del manual y probar cualquier implementación. Limitar a un usuario con privilegio sudo es factible. Sin embargo, como usted señala, no es una solución totalmente segura y debe otorgarse cierto nivel de confianza a los usuarios que tienen derechos de sudo. Es interesante ver votos negativos para una respuesta que recomienda el uso del mecanismo (entradas del archivo sudoers) que está específicamente diseñado con el propósito de limitar el alcance del comando sudo.
Encantador
Creo que no se trata de la recomendación de utilizar un mecanismo incorporado, así que permítanme llegar al punto de qué crítica constructiva podría darle por su respuesta. 1) Contiene algunos errores tipográficos y está mal formateado y parece extraño cuando lo lees, lo que en sí mismo se puede solucionar muy fácilmente. 2) señala otras respuestas dadas fuera de Ask Ubuntu , aquí debe tomar las partes esenciales como comillas en bloque y publicarlas aquí, haciendo que sus enlaces formen parte de las citas para señalar las fuentes de las que las ha tomado. Espero que esto ayude a mejorar su respuesta.
Videonauth
Y como me he quedado sin personajes en mi comentario anterior: 3) Podrías profundizar un poco más en la explicación, señala las advertencias que mencionó @EliahKagan.
Videonauth
0

Las respuestas anteriores no se aplican completamente, si marcó encrypt home foldermientras instalaba Ubuntu. Esto garantiza las carpetas de inicio encriptadas para cada usuario, aun así la raíz no puede leer los datos sin la contraseña adecuada del usuario / propietario de esa carpeta de inicio. Su colega necesitaría cambiar su contraseña para leer los archivos, lo que se notaría.

Y, por supuesto, las personas tienen razón: compartir máquinas con datos valiosos o confidenciales y, además, acceso raíz con colegas, no es una buena idea.

Dependiendo del valor de estos datos, le sugiero que solicite su propia máquina.

s1mmel
fuente
1
Esto podría no impedir que un usuario root realice una "su -" o una maniobra similar tan pronto como la "víctima" inicie sesión y tenga la unidad cifrada montada ... también podría haber un script cron u otro desencadenante esperando eso a suceder Además, un usuario root podría reemplazar fácilmente el binario que maneja la entrada de contraseña para desbloquear el directorio de inicio cifrado con una versión que almacena la contraseña de texto sin cifrar y esperar. Cualquier mecanismo de seguridad que detenga dichos ataques aún podría eliminarse cambiando algunos archivos binarios que la víctima usará por algo que haga lo que usted quiera.
rackandboneman
55
Estoy rechazando esta respuesta ya que un directorio de inicio encriptado solo ayuda si no está conectado actualmente. Tan pronto como inicie sesión, sus datos se descifrarán y estarán disponibles para el otro usuario con acceso sudo.
Pantera
2
¿Pero por qué tendrían que serlo? Incluso si los inicios de sesión simultáneos nunca se realizan de forma remota (por ejemplo, SSH) o con consolas virtuales, ¿no pueden iniciar sesión dos usuarios gráficamente al mismo tiempo y cambiar entre ellos? Uso Lubuntu (que tiene LXDE) y nunca he iniciado sesión gráficamente con varios usuarios al mismo tiempo, pero mi impresión fue que más entornos de escritorio con muchas funciones lo han soportado durante algunos años y lo habilitan de manera predeterminada. ¿Me equivoco al respecto? Alternativamente, ¿los archivos ya no se descifran ni se pueden leer por root cuando la pantalla está bloqueada?
Eliah Kagan
2
IRRC: las claves de cifrado del usuario se almacenan abiertamente en la máquina para proporcionar cifrado y descifrado, por sudo su - <username>lo que normalmente no se necesita la contraseña de otros usuarios, normalmente descifraría con éxito el directorio de otros usuarios. Pero podría estar equivocado aquí, necesito probarlo en una máquina virtual y lo haré más tarde. De todos modos, el 99% de todos los casos se reduce a esto: "Si tengo acceso físico a su máquina, ¡tiene una manguera!".
Videonauth
1
Un súper usuario puede cambiar el procedimiento de inicio de sesión para registrar los nombres de usuario y las contraseñas que ve. Espere hasta que el otro usuario inicie sesión y se resuelva el problema.
Stig Hemmer