En el chat, resultó que el sistema estaba usando el almacenamiento de contraseñas tradicional (no en la sombra) y el algoritmo tradicional de hash de contraseñas de Unix. Ambas son malas elecciones en el entorno de seguridad actual.
Dado que el algoritmo hash de contraseña tradicional solo almacena y compara los primeros 8 caracteres de la contraseña, eso explica el comportamiento observado en la pregunta original.
La salida sshd publicada incluye la línea:
Could not get shadow information for user
Supongo que esto significa al menos sshd
(o posiblemente la biblioteca de almacenamiento de contraseñas de PAM Unix) en este sistema incluye la funcionalidad de contraseña oculta, pero por alguna razón, el proveedor del sistema ha optado por no usarla.
En una distribución basada en BusyBox, como suele ser una construida con Yocto, esto quizás se pueda solucionar habilitando las opciones apropiadas en la configuración de BusyBox. Esta solución asume que tiene las recetas y puede crear su propia imagen de sistema operativo adaptada, o al menos un binario BusyBox adecuado. También necesita algoritmos hash criptográficos avanzados (al menos SHA-256, mejor SHA-512) disponibles (de libc).
En la configuración de BusyBox, establezca
- Utilidades de administración de inicio de sesión/contraseña
- Soporte para contraseñas ocultas → habilitado
- Usar funciones internas de cifrado → deshabilitado
- Método de cifrado de contraseña predeterminado →
sha512
osha256
Además, el contenido de /etc/passwd
y /etc/shadow
tienen que ser adaptados, p. gramo. utilizando las herramientas de línea de comandos de la versión mejorada de BusyBox (passwd
, mkpasswd
, chpasswd
), o configurándolos durante la creación de la imagen con EXTRA_USERS_PARAMS
:
EXTRA_USERS_PARAMS = " \
usermod -p '\$6\$<salt>\$<encrypted_pwd>' root; \
useradd -m -s /bin/sh -G … -u … -p '…' <username>; \
"