¿Cuál es el propósito del archivo / etc / shadow en el sistema operativo Linux? Además, ¿es lo mismo para los clientes de SUSE? Hay un archivo de caché de sombra que se mantiene ¿cuál es el propósito de eso?
Desde el principio, los sistemas operativos estilo Unix y Unix (incluido Linux) siempre han almacenado contraseñas como hashes criptográficos (1). Estos hashes se almacenaron originalmente /etc/passwd
, pero este archivo debía ser legible en todo el mundo para que la información estuviera disponible para otros fines, incluso una simple ls -l
necesidad de lectura /etc/passwd
para convertir la identificación numérica de usuario del propietario de cada archivo a su nombre de usuario para mostrar. Sin embargo, tener las contraseñas hash en un archivo legible en todo el mundo permitió a los usuarios malintencionados obtener fácilmente esos hash 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 un grupo privilegiado de administradores) /etc/shadow
. Esto oculta los hash de los usuarios normales del sistema mientras los mantiene disponibles para fines de autenticación de usuarios.
Notas :
Pedantic, lo sé, pero las contraseñas almacenadas no están encriptadas. Se procesan utilizando un algoritmo de cifrado seguro criptográficamente (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 cifrado) y no reversible (el texto cifrado puede descifrarse; el texto cifrado no puede).
Debido a que los hashes son de longitud fija, hay un número infinito de entradas que coincidirán con cualquier representación hash dada. Por lo tanto, un atacante podría encontrar una contraseña de trabajo que no sea necesariamente la misma que la contraseña del usuario propietario, aunque esto es muy poco probable dado el tamaño de los hashes criptográficos modernos.
El
/etc/shadow
archivo 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/passwd
tenía que ser legible en todo el mundo para que el sistema pudiera asignar los ID de usuario a los nombres de los usuarios, y para que los usuarios pudieran encontrar información sobre los demás, por ejemplo, el directorio de inicio del otro usuario o su número de teléfono, que tradicionalmente se almacenaba en el campo "gecos" y se muestra con la utilidad "dedo".Pero luego la gente se dio cuenta de que se trataba de un problema de seguridad. Cualquier persona con tiempo suficiente podría hacer lo que se llama un ataque de fuerza bruta , mediante la generación programática de contraseñas cifradas para cada contraseña posible. Si el atacante hizo eso sin intentar iniciar sesión a través de
telnet
ossh
, el sistema no podría saber que estaba siendo atacado.Por lo tanto, la contraseña cifrada se movió a la recién creada
/etc/shadow
, que solo puede leer la raíz.También contiene otra información que el
/etc/passwd
archivo no admitía en relación 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á.Consulte
man 5 shadow
( versión web ) para obtener detalles completos del formato de archivo.No puedo decir si es lo mismo para SUSE, sin saber con qué versión de SUSE está tratando. Por ejemplo, su sistema SUSE puede usar Blowfish en lugar de MD5.
También dio a entender que estaba mezclando su
/etc/shadow
archivo con un sistema que ejecuta una distribución de Linux diferente, pero no dijo cuál era la otra distribución.Consulte Problemas al migrar archivos de sombra de SuSE 9.3 a Ubuntu Server x86_64, por ejemplo.
Para tratar de resolverlo, abra
/etc/shadow
y vea si el campo de contraseña cifrada comienza con$1$
o$2$
. Si contiene$1$
, es MD5 y es compatible con la mayoría de las otras distribuciones. Si contiene$2$
, entonces probablemente sea Blowfish según los archivos de sombra de Blowfish en Debian .Si está utilizando Ubuntu, el primer resultado de búsqueda de Google para Ubuntu Blowfish podría ser un buen punto de partida.
fuente
Los usuarios se enumeran en el
/etc/passwd
archivo. 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 archivo es el inicio de sesión, seguido de la contraseña correspondiente.
Las contraseñas cifradas solían almacenarse en este campo. Sin embargo, el
/etc/passwd
archivo debe ser legible por todos en el sistema, por lo que el cifrado no evita los ataques de fuerza bruta, como lo ha dicho @Mikel. La solución fue mover estas contraseñas cifradas en un archivo legible solo para root:/etc/shadow
.Por lo tanto,
/etc/shadow
contiene 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/passwd
contienen solo una x (que significa " cruzar a / etc / shadow")fuente
/etc/passwd
was / are hash todavía de la misma manera que lo estarían si estuvieran/etc/shadow
. En realidad, no dice que las contraseñas/etc/passwd
sean texto sin formato, pero sería fácil para alguien que no esté familiarizado con el manejo de contraseñas * nix malinterpretar su respuesta como si implicara eso.x
realmente signifique nada. Está ahí solo como un hash no válido (uno que no coincide con ninguna contraseña). Algunos sistemas usan!
.Veamos si puedo obtener todos los votos positivos en el mundo, ya que escribí lo que se convirtió en Linux Shadow Password Suite en el '87;)
El
/etc/passwd
archivo original contenía un hash modificado basado en DES de la contraseña de texto sin cifrar. En el momento encrypt()
que se creó la función, se creía (y esto fue establecido por los creadores del sistema operativo UNIX) que los ataques contra el hash de contraseña no serían factibles, debido a la cantidad de contraseñas posibles y al uso de un sistema de 12 bits. (4.096 valores posibles) "sal". Cada posible contraseña de texto sin cifrar tenía 4.096 posibles valores hash, y con un resultado hash de 64 bits, eso dio un total de 2 ^ 72 posibles hashes de contraseña.Como se mencionó en otro póster,
/etc/passwd
varias utilidades también lo utilizaron para mapear entre los nombres de usuario y los valores de UID (el/etc/group
archivo 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/passwd
archivo se estaban volviendo factibles y/etc/shadow
se introdujo en AT&T UNIX en una versión anterior del Sistema V. Documenté qué páginas de manual usé para escribir la biblioteca Shadow original, y yo ' Lo he olvidado, pero definitivamente fue un lanzamiento temprano de System V, probablemente SVR3.2.Lo que hizo AT&T, y lo que implementé para SCO Xenix (el SCO Xenix original, no el malvado SCO Xenix posterior) en el '87 que finalmente entró en uso en Linux, fue simplemente mover la contraseña hash
/etc/shadow
. Esto evitó el ataque drive-by, donde un usuario no privilegiado adquirió una copia/etc/passwd
y realizó un ataque contra él. Si está familiarizado con por qué escribí Shadow en primer lugar, tuve un usuario que descargó mi/etc/passwd
archivo a través de UUCP en los días en que todavía usábamos UUCP para casi todo.Para cuando se creó Linux y entró en uso generalizado, habí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 como Crack y libcrack eran otros. El puerto inicial fue realizado por Nate Holloway y Floria La Roche (les di crédito, no sé si alguien hizo el trabajo antes que ellos).Finalmente, el uso de
crypt()
hashes basados en archivos, incluso en un archivo protegido, ya no era seguro y se realizaron losMD5
cambios de hash originales .MD5
finalmente se consideró que era demasiado débil y se usaron 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/shadow
archivos disponibles a través de varios vectores de ataque: "Robé los archivos de respaldo" es probablemente la más fácil.fuente