Pregunta useradd no encripta contraseñas en / etc / shadow


Me encontré con este problema al intentar crear nuevos usuarios de FTP para vsftpd. Al crear un nuevo usuario con el siguiente comando e intentar iniciar sesión con FileZilla, obtendría un error de "contraseña incorrecta".

useradd f -p pass -d /home/f -s /bin/false

Después de hacer esto, / etc / shadow contiene

f:pass:1111:0:99:2:::

Una vez ejecuto el siguiente comando y proporciono el mismo pase pasar

passwd f

/ etc / shadow contiene

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Parece que el cifrado ocurre cuando ejecuto contraseña, pero no lo hace useradd

Es importante que después de hacer esto, puedo iniciar sesión en FTP con las mismas credenciales exactas.

Estoy usando CentOS 5.11, vsftpd para FTP y FileZilla para FTP.

/ var / log / secure contiene:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

¿Por qué no funciona cuando paso? -p pass a useradd? ¿Qué necesito hacer para que funcione?


18
2017-12-17 14:34


origen


No veo una pregunta allí? - Tales cosas se gestionan a través de PAM y normalmente se registran /var/log/secure - HBruijn
@HBruijn He actualizado mi respuesta para mostrar lo que está escrito / var / log / secure - BadToTheBone
De Verdad? ¿+12 para una pregunta que es respondida explícitamente por la página del manual relevante? - α CVn
Tenga en cuenta que en un hash de contraseña, $1$ indica que se usa MD5. MD5, si bien no es absoluto terrible para las contraseñas, es más bien en el lado débil en estos días. Es una pregunta completamente separada, pero absolutamente lo insto a que considere migrar a una función hash más fuerte. - α CVn
Nota al margen: contraseñas en /etc/shadow no están encriptados pero con hash - Tobias Kienzler


Respuestas:


Eso está funcionando según lo previsto. Si desea establecer una contraseña utilizando el useradd comando, se supone que debe dar una versión hash de la contraseña a useradd.

La cuerda pass satisface los criterios de formato para el campo de contraseña hash en /etc/shadow, pero no hay hashes de contraseña reales para esa cadena. El resultado es que, a todos los efectos, esa cuenta se comportará como si tuviera una contraseña, pero cualquier contraseña que intente usar para acceder a ella se rechazará por no ser la contraseña correcta.

Ver man useradd o la documentación de useradd:

-p, --password  CONTRASEÑA

La contraseña encriptada, según lo devuelto por cripta (3). El valor predeterminado es   para deshabilitar la contraseña.

Nota: esta opción no se recomienda porque la contraseña (o   contraseña encriptada) será visible por los usuarios que enumeran los procesos.

Debe asegurarse de que la contraseña respeta la contraseña del sistema   política.


42
2017-12-17 14:48





manuseradd:

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Se supone que debes pasarle una contraseña con hash.
No es una contraseña de texto plano.


31
2017-12-17 14:48





useradd espera que le pases el hash de la contraseña, no la contraseña en sí. Puede usar la siguiente variación en su comando para proporcionar una contraseña con hash al useradd mando:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Para conocer los métodos disponibles, use:

mkpasswd --method=help

Para evitar pasar la contraseña en la línea de comando, coloque la contraseña en un archivo (usando un editor y no usando echo o similar) y haz esto:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

Esto pasará la contraseña con hash en la línea de comando, pero no la de texto simple.

mkpasswd viene con el expect paquete.


15
2017-12-17 23:07



¡No uses MD5! Utilizar SHA-2 - Josef
Hacer tenga en cuenta que esto expone temporalmente la contraseña a través de varias interfaces del kernel (cualquier proceso puede leer la línea de comandos de cualquier otro proceso) y puede resultar en que se guarde en texto plano al disco a través de $ HISTORY o mecanismos similares. - α CVn
@ MichaelKjörling: A muy buen punto. Por favor, vea mi respuesta editada. - Dennis Williamson
Por supuesto, todavía está almacenando la contraseña de texto sin formato en el disco. Al menos, esto le da al administrador del sistema una opción. Tal vez en este punto sea mejor que usemos una contraseña ficticia al principio y ejecutemos inmediatamente passwd para cambiarlo a otra cosa ...... - α CVn
Absolutamente Dennis, es mucho mejor, pero la contraseña aún termina en el disco en texto plano. En algunas situaciones y bajo ciertos modelos de amenaza, eso puede ser un problema real. No lo hace tener ser. - α CVn