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

20

Me topé con este problema al intentar crear nuevos usuarios 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 que ejecuto el siguiente comando y proporciono el mismo pase

passwd f

/ etc / shadow contiene

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

Parece que el cifrado ocurre cuando ejecuto passwd , pero no con useradd

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

Estoy usando CentOS 5.11, vsftpd para FTP y FileZilla para acceso 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 passa useradd? ¿Qué necesito hacer para que funcione?

Malo para los huesos
fuente
No veo una pregunta allí? - Tales cosas se administran a través de PAM y generalmente se registran/var/log/secure
HBruijn
@HBruijn He actualizado mi respuesta para mostrar lo que está escrito en / var / log / secure
BadToTheBone
2
De Verdad? ¿+12 para una pregunta que es respondida explícitamente por la página de manual relevante?
un CVn
Tenga en$1$ cuenta que en un hash de contraseña, indica que se utiliza MD5 . MD5, aunque no es absolutamente terrible para las contraseñas, está más bien débil en estos días. Es una pregunta completamente separada, pero le recomiendo que considere migrar a una función hash más fuerte.
un CVn
2
Nota al /etc/shadow
margen

Respuestas:

43

Eso está funcionando según lo previsto. Si desea establecer una contraseña con el useraddcomando, debe proporcionar una versión hash de la contraseña useradd.

La cadena passsatisface los criterios de formato para el campo de contraseña hash /etc/shadow, pero no hay hash de contraseña real para esa cadena. El resultado es que, a todos los efectos, esa cuenta se comportará como una contraseña, pero cualquier contraseña que intente utilizar para acceder a ella será rechazada por no ser la contraseña correcta.

Consulte man useraddo la documentación de useradd :

-p, --password CONTRASEÑA

La contraseña cifrada, devuelta por crypt (3) . El valor predeterminado es deshabilitar la contraseña.

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

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

Kasperd
fuente
32

manuseradd :

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

Se supone que debe pasarle una contraseña hash.
No es una contraseña de texto sin formato.

falsificador
fuente
16

useraddespera que le pase 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 hash para el useraddcomando:

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 echoo similar) y haga esto:

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

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

mkpasswdViene con el expectpaquete.

Pausado hasta nuevo aviso.
fuente
2
¡No uses MD5! Use SHA-2
Josef
99
Hacer notar que esto expone temporalmente la contraseña a través de las diferentes interfaces del núcleo (se permite cualquier proceso de leer la línea de comandos de cualquier otro proceso) y puede dar lugar a que se guarda en texto plano en el disco a través $ HISTORY o mecanismos similares.
un CVn
@ MichaelKjörling: Un muy buen punto. Por favor vea mi respuesta editada.
Pausado hasta nuevo aviso.
1
Por supuesto, todavía está almacenando la contraseña de texto sin formato en el disco. Al menos, esto le da al administrador una opción. Tal vez en este momento estamos en mejor situación sólo mediante una contraseña ficticia en un primer momento e inmediatamente se ejecuta passwdpara cambiar a otra cosa ......
un CVn
2
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 tiene que ser así.
un CVn