¿Cuál es el propósito de los archivos /etc/shadow y shadow cache en el sistema operativo Linux?

¿Cuál es el propósito de los archivos /etc/shadow y shadow cache en el sistema operativo Linux?

¿Cuál es el propósito del archivo /etc/shadow en el sistema operativo Linux? Además, ¿sucede lo mismo con los clientes de SUSE? Hay un archivo de caché oculto que se mantiene, ¿cuál es el propósito de eso?

Respuesta1

Desde el principio, los sistemas operativos Unix y estilo Unix (incluido Linux) siempre han almacenado las contraseñas como hashes criptográficos (1). Estos hashes se almacenaron originalmente en /etc/passwd, pero este archivo debía ser legible en todo el mundo para que la información estuviera disponible para otros fines; incluso uno simple ls -ldebe leerse /etc/passwdpara convertir la identificación de usuario numérica del propietario de cada archivo en su nombre de usuario para su visualización. Sin embargo, tener las contraseñas hash en un archivo legible en todo el mundo permitió a los usuarios malintencionados obtener fácilmente esos hashes e intentar generar contraseñas utilizables(2) para las cuentas de otros usuarios.

Para evitar esto, las contraseñas hash finalmente se movieron a un archivo legible solo por root (y ocasionalmente por un grupo privilegiado de administradores) /etc/shadow. Esto oculta los hash a los usuarios normales del sistema y los mantiene disponibles para fines de autenticación del usuario.

Notas:

  1. Pedante, lo sé, pero las contraseñas almacenadas sonnocifrado. Se procesan utilizando un algoritmo de hash criptográficamente seguro (al menos en el momento en que se escribió). Las principales distinciones relevantes aquí son que los hashes son de longitud fija (la longitud del texto cifrado varía según la longitud del texto que se cifró) y no reversibles (el texto cifrado se puede descifrar; el texto cifrado no).

  2. Debido a que los hashes tienen una longitud fija, hay un número infinito de entradas que coincidirán con cualquier representación hash determinada. Por lo tanto, un atacante podría encontrar una contraseña que funcione y que no sea necesariamente la misma que la del usuario propietario, aunque esto es muy poco probable dado el tamaño de los hashes criptográficos modernos.

Respuesta2

El /etc/shadowarchivo se creó por razones de seguridad y contiene la contraseña cifrada de cada usuario.

Originalmente, la contraseña cifrada se almacenaba en /etc/passwd. /etc/passwdtenía que ser legible en todo el mundo para que el sistema pudiera asignar ID de usuario a nombres de usuario y para que los usuarios pudieran encontrar información entre sí, por ejemplo, el directorio personal del otro usuario o su número de teléfono, que tradicionalmente se almacenaba en el campo "gecos". y mostrado por la utilidad "dedo".

Pero luego la gente se dio cuenta de que se trataba de un problema de seguridad. Cualquiera con tiempo suficiente podría hacer lo que se llamaataque de fuerza bruta, generando mediante programación contraseñas cifradas para cada contraseña posible. Si el atacante hizo eso sin intentar iniciar sesión a través de telneto ssh, el sistema no podría saber que estaba siendo atacado.

Entonces, la contraseña cifrada se movió a la contraseña recién creada /etc/shadow, que solo puede ser leída por root.

También contiene otra información que el /etc/passwdarchivo no admitía relacionada con la cuenta y la contraseña del usuario, por ejemplo, cuándo se cambió la contraseña por última vez y cuándo caducará.

Ver man 5 shadow(versión web) para obtener detalles completos del formato del archivo.


No puedo decir si es lo mismo para SUSE, sin saber con qué versión de SUSE estás tratando. Por ejemplo, su sistema SUSE puede utilizar Blowfish en lugar de MD5.

También insinuó que estaba mezclando su /etc/shadowarchivo con un sistema que ejecuta una distribución de Linux diferente, pero no dijo cuál era la otra distribución.

VerProblemas al migrar archivos ocultos de SuSE 9.3 a Ubuntu Server x86_64Por ejemplo.

Para intentar resolverlo, abra /etc/shadowy vea si el campo de contraseña cifrada comienza con $1$o $2$. Si contiene $1$, entonces es MD5 y es compatible con la mayoría de las otras distribuciones. Si contiene $2$, entonces probablemente sea Blowfish segúnArchivos ocultos de Blowfish en Debian.

Si está utilizando Ubuntu, elprimer resultado de búsqueda en Google para Ubuntu Blowfishpodría ser un buen punto de partida.

Respuesta3

Los usuarios aparecen listados en el /etc/passwdarchivo. Este archivo contiene mucha información utilizada por el sistema no solo para permitir que los usuarios inicien sesión.

Cada línea corresponde a una entrada de usuario y los diferentes campos están separados por dos puntos. El primer campo es el de inicio de sesión, seguido de la contraseña correspondiente.

Las contraseñas cifradas solían almacenarse en este campo. Sin embargo, el /etc/passwdarchivo debe ser legible por todos los usuarios del sistema, por lo que el cifrado no evita ataques de fuerza bruta, como dijo @Mikel. La solución fue mover estas contraseñas cifradas a un archivo legible solo para root: /etc/shadow.

Así, /etc/shadowcontiene las contraseñas cifradas de los usuarios del sistema. El sistema sabe que tiene que verificar las contraseñas en este archivo cuando los campos de contraseña /etc/passwdcontienen solo una x (que significa "cruza /etc/shadow")

Respuesta4

Veamos si puedo obtener todos los votos positivos del mundo, ya que escribí lo que se convirtió en Linux Shadow Password Suite en el 87;)

El /etc/passwdarchivo original contenía un hash modificado basado en DES de la contraseña de texto sin cifrar. En el momento en que se creó la crypt()función, se creía (y así lo afirmaron los creadores del sistema operativo UNIX) que los ataques contra el hash de contraseñas serían inviables, debido a la cantidad de contraseñas posibles y al uso de un código de 12 bits. (4.096 valores posibles) "sal". Cada posible contraseña de texto sin cifrar tenía 4096 valores hash posibles y, con un resultado hash de 64 bits, eso daba un total de 2^72 posibles hashes de contraseña.

Como mencionó otro cartel, /etc/passwdvarias utilidades también lo utilizaron para asignar nombres de usuario y valores UID (el /etc/grouparchivo proporciona la función análoga para grupos) y eso requería que fuera legible en todo el mundo.

En la década de 1980 se hizo evidente que los ataques de diccionario contra el hash de contraseña almacenado en el /etc/passwdarchivo se estaban volviendo factibles y /etc/shadowse introdujeron en AT&T UNIX en una versión temprana de System V. Documenté qué páginas de manual usé para escribir la biblioteca Shadow original y Lo he olvidado desde entonces, pero definitivamente fue una versión temprana de System V, probablemente SVR3.2.

Lo que hizo AT&T, y lo que implementé para SCO Xenix (el SCO Xenix original, no el posterior malvado SCO Xenix) en 1987, que finalmente empezó a usarse en Linux, fue simplemente mover la contraseña hash a /etc/shadow. Esto evitó el ataque drive-by, en el que un usuario sin privilegios adquirió una copia /etc/passwdy ejecutó un ataque contra ella. Si está familiarizado con por qué escribí Shadow en primer lugar, un usuario descargó mi /etc/passwdarchivo a través de UUCP en los días en que todavía usábamos UUCP para casi todo.

Cuando se creó Linux y su uso se generalizó, existía una gran cantidad de herramientas para atacar hashes de contraseñas. Las reimplementaciones de alto rendimiento de crypt()eran una vía y los ataques basados ​​en diccionarios a través de herramientas comoGrietaylibcrackfueron otros. El port inicial lo hicieron Nate Holloway y Floria La Roche (les di crédito, no sé si alguien hizo el trabajo antes que ellos).

Con el tiempo, el uso de crypt()hashes basados ​​en -, incluso en un archivo protegido, ya no era seguro y MD5se realizaron los cambios de hash basados ​​en -originales. MD5finalmente se consideró demasiado débil y se utilizaron hashes más nuevos.

En teoría, se podría almacenar un hash lo suficientemente fuerte /etc/passwd. La mala seguridad operativa significa que muchos sistemas tienen sus /etc/shadowarchivos disponibles a través de varios vectores de ataque; "robé los archivos de respaldo" es probablemente el más fácil.

información relacionada