Sabemos que las contraseñas de los usuarios se guardan /etc/passwd
, pero de forma encriptada, por lo que incluso la raíz no puede verlas:
jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash
Como se muestra arriba, :x:
representa la contraseña.
¿Hay alguna forma (posible configuración) de guardar la contraseña en /etc/passwd
texto sin cifrar y que la raíz pueda verla?
Respuestas:
Las otras dos respuestas le han dicho, ¡correctamente! - que esta es una Mala Idea ™ . Pero también te han dicho que es difícil de hacer, que requieren cambiar un montón de programas.
Eso no es cierto. Es muy fácil. Solo necesita cambiar uno o dos archivos de configuración. Creo que es importante señalar esto, porque debe tenerlo en cuenta al iniciar sesión en sistemas que no controla. En realidad, no pondrán una contraseña de texto sin formato
/etc/passwd
o/etc/shadow
irán a un archivo diferente. Tenga en cuenta que no los he probado, ya que prefiero no tener mi contraseña en texto sin formato.Edite
/etc/pam.d/common-password
(para detectar el cambio de contraseña) o/etc/pam.d/common-auth
(para detectar el inicio de sesión) y agregue… pam_exec expose_authtok log=/root/passwords /bin/cat
Edite ambos y cambie de pam_unix a pam_userdb con
crypt=none
. Alternativamente, puede ponerlo solo en la contraseña común (dejando también pam_unix) para registrar las contraseñas cuando se cambian.Puede eliminar la
shadow
opción (así como cualquier opción de hash fuerte) de pam_unix para deshabilitar el archivo de sombra y volver a las contraseñas de criptas tradicionales. No es texto simple, pero John the Ripper lo arreglará por usted.Para más detalles, consulte la Guía de administración del sistema PAM .
También puede editar el código fuente de PAM o escribir su propio módulo. Solo necesitaría compilar PAM (o su módulo), nada más.
fuente
/root/passwords
.Oh querido, bien, comencemos desde el principio ...
No, ellos han sido almacenados en
/etc/passwd
, y eso fue hace bastante tiempo. Hoy las contraseñas se almacenan en un llamado archivo shadow , la mayoría de las veces/etc/shadow
.Sé que a veces se usa indistintamente, pero el hash no es cifrado . El cifrado es, por definición, reversible, lo que significa que puede traducir lo cifrado nuevamente a su formato de texto sin cifrar. Hashing está diseñado para no ser reversible de ninguna manera (excepto la fuerza bruta). No se supone que la forma original de texto en claro de algo que está en hash sea recuperable.
Las contraseñas en el archivo de sombra se almacenan como hashes.
En
x
este caso, solo es un marcador de posición para el campo de contraseña heredado. Estox
significa que la contraseña se puede encontrar en el archivo de sombra.Sí, esto es posible, pero no es una buena idea por algunas razones. La respuesta de Derobert explica una forma bastante simple de hacerlo .
Pero, ¿por qué no es una buena idea? Bueno, por una razón simple pero muy importante: seguridad. Sugiero leer estas preguntas:
Pero para resumir, suponga lo siguiente: hay un servidor en una empresa, todas las cuentas de usuario están protegidas por sus contraseñas y los datos en estas cuentas de usuario están encriptados con la misma contraseña. Un cracker externo obtiene acceso al servidor, pero no puede acceder a ninguno de los datos importantes porque todavía está encriptado en las cuentas de usuario.
Ahora suponga que las contraseñas se almacenarían en texto sin formato. El cracker de repente tendría acceso a todo , porque las contraseñas se pueden leer. Pero si se almacenan como valores hash, son casi inútiles para cualquier persona, excepto las personas con muchos recursos para hacer un ataque de fuerza bruta.
fuente
"$id$"
seguidos de una cadena terminada por"$"
:$id$salt$encrypted
entonces, en lugar de utilizar la máquina DES,id
identifica el método de cifrado utilizado y esto luego determina cómo se interpreta el resto de la cadena ».En primer lugar, las contraseñas cifradas no están en
/etc/passwd
, pero están en/etc/shadow
. Una de las razones de esto es que/etc/passwd
es públicamente legible (por lo que puede encontrar, por ejemplo, la información de campo GECOS para otro usuario) y, especialmente con esquemas de cifrado más antiguos, podría permitir ataques de fuerza bruta contra la contraseña cifrada.Simplemente almacenar las contraseñas en texto plano, no es necesario y requeriría actualizaciones para el programa de contraseñas y las bibliotecas que leen la
/etc/shadow
información para buscar contraseñas válidas. Y luego debe esperar que todas las utilidades utilicen bibliotecas compartidas para acceder a esa información en lugar de estar vinculadas estáticamente con algo que no comprende el almacenamiento de contraseñas de texto sin formato.Si esta fuera una opción en la configuración de una configuración, siempre habría personas estúpidas que la encenderían de manera inapropiada. Y mientras todavía están trabajando en pantallas CRT y transmiten esto de una manera que se puede recoger fácilmente desde el exterior de su edificio, mientras están mirando la información.
Aparte de eso, las personas tienden a usar la misma contraseña o una similar en varios sistemas, por lo que no es una buena idea que las contraseñas sean legibles por humanos. Como algunos administradores de sistemas pueden volver a intentarlo en otros sistemas, sabe que el usuario tiene una cuenta.
Debe haber cosas más interesantes, el funcionamiento de se puede investigar en su sistema.
fuente
/etc/shadow
no almacena contraseñas cifradas, almacena hashes de contraseñas. Sí, se llama a la funcióncrypt
, y la página del manual dice "encriptado", pero si llamas bicicleta a un pez, eso no le da ruedas. Tenga en cuenta que sería posible hacer/etc/shadow
las contraseñas de la tienda en un formato diferente sin compilar ningún programa (al menos en Linux y Solaris): los métodos de autenticación siempre están vinculados dinámicamente. Almacenar contraseñas como texto sin formato sería una idea terrible, pero es posible con un poco de trabajo .La razón básica (de por qué es una mala idea) es que ningún usuario (root, administrador u otro) debería tener acceso a la contraseña de otro usuario.
Simplemente porque la contraseña es un medio de autenticación. Si conozco la contraseña de otro usuario, conozco sus credenciales (nombre de usuario + contraseña), por lo que puedo iniciar sesión como ese usuario , suplantando a él (o ella o él).
Cualquier acción que realice cuando inicie sesión como ese usuario, el otro usuario será responsable. Y no es así como debería funcionar la autenticación.
Las acciones pueden ser desastrosas, como eliminar un montón de archivos importantes, borrar discos duros, borrar copias de seguridad, cerrar planes de energía nuclear, etc.
O simplemente ilegal. Imagine una institución bancaria donde yo (el administrador) tenga acceso a todas las contraseñas. Usando la contraseña del cajero, puedo ordenar un traslado de un millón de dólares de la cuenta bancaria del presidente a la cuenta bancaria del limpiador de ventanas. Luego use la contraseña superior del cajero para aprobar la transacción. Luego, apruebo un cheque de la cuenta del limpiador de ventanas a mi propia cuenta bancaria off-shore.
Luego me voy de vacaciones en las Bahamas ...
En esa vista, el hash de las contraseñas y el uso de archivos shadow separados se pueden ver como un medio para hacer cumplir esta regla (ningún usuario debe ser capaz de hacerse pasar por otro).
Y como comentó @ Miral * , existe la excepción de
su
que, si bien permite la suplantación (y los tipos de rechazos del argumento anterior), también mantiene un registro de su uso (por lo que cambia las reglas a "solo los administradores pueden hacerse pasar por otros, pero un se mantiene el registro ").* El ejemplo del banco probablemente no fue el mejor. En cualquier entorno donde la seguridad es crucial, generalmente se requieren más medios de autenticación y autorización que una sola contraseña.
fuente
su otheruser
.su
está registrado, su no mantiene un registro de lo que realmente se hace mientras un usuario se hace pasar por otro. Y una raíz maliciosa siempre puede alterar los registros para ocultar las acciones de futuros investigadores.