Nella chat, si è scoperto che il sistema utilizzava l'archiviazione delle password tradizionale (non shadow) e l'algoritmo di hashing delle password Unix tradizionale. Entrambe sono scelte sbagliate nell'ambiente di sicurezza odierno.
Poiché il tradizionale algoritmo di hashing delle password memorizza e confronta solo i primi 8 caratteri della password, ciò spiega il comportamento notato nella domanda originale.
L'output sshd pubblicato include la riga:
Could not get shadow information for user
Presumo che questo significhi almeno sshd
(o possibilmente la libreria di archiviazione delle password PAM Unix) su questo sistema include la funzionalità di password shadow, ma per qualche ragione, il fornitore del sistema ha scelto di non utilizzarla.
In una distribuzione basata su BusyBox, come di solito è una costruita con Yocto, questo può forse essere risolto abilitando le opzioni appropriate nella configurazione di BusyBox. Questa soluzione presuppone che tu abbia le ricette e sei in grado di costruire la tua immagine del sistema operativo adattata, o almeno un binario BusyBox adatto. Ha anche bisogno di algoritmi di hashing crittografici avanzati (almeno SHA-256, meglio SHA-512) disponibili (da libc).
Nella configurazione di BusyBox, imposta
- Utilità di gestione login/password
- Supporto per password shadow → abilitato
- Utilizza le funzioni di crittografia interne → disabilitato
- Metodo di crittografia della password predefinito →
sha512
osha256
Inoltre il contenuto di /etc/passwd
e /etc/shadow
devono essere adattati, ad es. g. utilizzando gli strumenti della riga di comando della build migliorata di BusyBox (passwd
, mkpasswd
, chpasswd
), o impostandoli durante la creazione dell'immagine con EXTRA_USERS_PARAMS
:
EXTRA_USERS_PARAMS = " \
usermod -p '\$6\$<salt>\$<encrypted_pwd>' root; \
useradd -m -s /bin/sh -G … -u … -p '…' <username>; \
"