Los permisos de /etc/shadow
son 600, lo que significa que no es legible para nadie excepto para root.
Sin embargo, como todas las contraseñas que contiene no se almacenan en texto claro sino como hash (lo que significa que es imposible calcular la contraseña original del hash), ¿por qué no todos pueden leerla?
permissions
files
shadow
Shubhanshu Vishwakarma
fuente
fuente
/etc/shadow
son600
?Respuestas:
Para evitar ataques de fuerza bruta fuera de línea.
Aunque no puede revertir un hash, aún puede intentar descifrar todas las contraseñas posibles hasta que encuentre una coincidencia, y puede hacer millones de intentos por segundo con un buen hardware y acceso local al archivo.
Si el archivo tuviera
644
permisos, cualquiera que haya iniciado sesión en su sistema, incluso en una sesión de invitado, podría copiar este archivo de su computadora (ya sea a una memoria USB o remotamentescp
) e intentar un ataque de fuerza bruta fuera de línea , sin dejar ninguna evidencia de esto en su computadora .Tenga en cuenta que los permisos en Ubuntu son en realidad
640
, no600
:Sin embargo, esto no importa mucho, ya que todavía no hay permisos para otros y, por defecto, nadie está en el
shadow
grupo.Originalmente, los hash se almacenaban
/etc/passwd
(por eso se llamapasswd
), ya que cuando se creó Linux, descifrar un hash, incluso los tipos débiles utilizados en ese momento, era prácticamente imposible. Sin embargo, con el tiempo, la potencia de procesamiento avanzó hasta el punto en que fue posible descifrar un hash, al menos de una contraseña relativamente débil.El cambio de los permisos de
/etc/passwd
que640
o600
no funcionaría, ya que hay muchas razones legítimas para ser capaz de leer/etc/passwd
como un usuario normal (la conversión de los UID de nombres de usuario, obtener el nombre, número de teléfono completo de un usuario, etc), por lo que los hashes fueron trasladados a/etc/shadow
, que recibió640
permisos. Unx
lugar en lugar del campo hash de contraseña para un usuario/etc/passwd
se utiliza para indicar que el hash para ese usuario se almacena en su/etc/shadow
lugar.fuente
ls
no necesitan ser setuid root para traducir de uid a name.En realidad, / etc / shadow se creó para permitir alejarse de una lista pública de nombres de usuario y contraseñas.
Espera, esta será una pequeña lección de historia, antes de llegar a la respuesta real. Si no te importa la historia, solo desplázate un poco hacia abajo.
En los viejos tiempos, los sistemas operativos tipo Unix, incluido Linux, generalmente mantenían las contraseñas en / etc / passwd. Ese archivo era legible en todo el mundo, y todavía lo es, porque contiene información que permite la asignación, por ejemplo, entre ID de usuario numéricos y nombres de usuario. Esa información es muy útil incluso para usuarios comunes con fines perfectamente legítimos, por lo que tener el mundo legible en el archivo fue de gran beneficio para la usabilidad.
Incluso en aquel entonces, las personas se dieron cuenta de que tener las contraseñas en texto plano en un archivo en una ubicación conocida que cualquiera que pudiera iniciar sesión podía leer libremente era una mala idea. Así que las contraseñas fueron hash, en cierto sentido Ese es el antiguo mecanismo de cifrado de contraseñas "cripta", que casi nunca se usa en los sistemas modernos, pero a menudo es compatible con fines heredados.
Eche un vistazo a / etc / passwd en su sistema. ¿Ves ese segundo campo, que dice en
x
todas partes? Solía contener la contraseña hash para la cuenta en cuestión.El problema era que la gente podía descargar / etc / passwd, o incluso no descargarlo, y trabajar en descifrar las contraseñas. Esto no fue un gran problema, mientras que las computadoras no eran particularmente poderosas (Clifford Stoll, en The Cuckoo's Egg , da, según recuerdo, el tiempo para descifrar una contraseña en un sistema de clase de PC IBM a mediados de la década de 1980 como aproximadamente un segundo ), pero se convirtió en un problema a medida que aumentaba la potencia de procesamiento. En algún momento, con una lista de palabras decente, descifrar esas contraseñas se volvió demasiado fácil. Por razones técnicas, este esquema tampoco podía admitir contraseñas de más de ocho bytes.
Se hicieron dos cosas para resolver esto:
Ese archivo es / etc / shadow.
El software que funciona con / etc / shadow es generalmente muy pequeño, altamente enfocado y tiende a recibir un escrutinio adicional en las revisiones debido a la posibilidad de problemas. También se ejecuta con permisos especiales, lo que le permite leer y modificar / etc / shadow, mientras mantiene a los usuarios normales incapaces de mirar ese archivo.
Así que ahí lo tiene: los permisos en / etc / shadow son restrictivos (aunque, como ya se señaló, no tan restrictivos como usted dice) porque el propósito de ese archivo es restringir el acceso a datos confidenciales.
Se supone que un hash de contraseña es fuerte, pero si su contraseña está en las 500 principales contraseñas en las listas de Internet , cualquiera que tenga acceso al hash aún podrá encontrar la contraseña rápidamente. Proteger el hash evita ese ataque simple y eleva el listón para un ataque exitoso, desde una simple ojeada hasta requerir que uno sea administrador del sistema en el host o pasar primero por un ataque de escalada de privilegios. Especialmente en un sistema multiusuario administrado correctamente, ambos son significativamente más difíciles que solo mirar un archivo legible en todo el mundo.
fuente
/etc/shadow
no contiene "contraseñas ocultas" (porque eso no es una cosa). Todo el archivo es una sombra de/etc/passwd
. Vea cómo se usa la terminología en el Linux Shadow Password COMO : ¿Por qué sombrear su archivo passwd? . A diferencia de algunos otros usos del término "sombra" en el cómputo, no es una sombra copia , aunque (como sombras código de la BIOS en la memoria RAM en lugar de correr desde la ROM). El campo en / etc / passwd es un marcador de posición, que contiene un carácter especial que significa "el hash de contraseña real está en / etc / shadow".¿Quién te dijo eso?
Respuesta simple: los permisos en Linux se toman en serio. No hay razón para que "otros" hagan algo con ellos
/etc/shadow
. Y no hay razón para que el grupo "shadow" le escriba. Y la ejecución está fuera de orden.Porque no hay una sola razón para hacerlo.
Los hashes son unidireccionales. Darle a alguien acceso de lectura le permite usar un script para abusar de esta manera: simplemente enumere cualquier palabra que pueda imaginar y cree el hash. En algún momento puede coincidir con la contraseña. Aunque podría tomar un tiempo también.
Esta respuesta es interesante y tiene algunas estimaciones sobre el forzamiento bruto.
fuente
Antecedentes importantes:
/etc/shadow
existe únicamente con el propósito de mantener ocultos los hashes de contraseñas. En los primeros días de Unix, se almacenaban hashes de contraseñas/etc/passwd
. A medida que las computadoras se volvieron más potentes, las conexiones de red más persistentes y las explotaciones de seguridad más sofisticadas, la gente se dio cuenta de que mantener los hash de contraseña legibles por palabras era un problema. (No detallaré las hazañas; ya hay suficientes buenas respuestas al respecto).Pero
/etc/passwd
no podía protegerse contra la lectura: es utilizado por todo tipo de programas para asignar identificadores numéricos de usuario a nombres de usuario y para buscar directorios de inicio, shells predeterminados, el nombre completo del usuario (y el número de la oficina, etc.man finger
). . Entonces, la parte sensible, los hashes de la contraseña, se movieron a/etc/shadow
, y el resto permaneció como estaba. Es por eso que/etc/passwd
, a pesar del nombre, contiene todo excepto la contraseña (hash).fuente