V chatu se ukázalo, že systém používá tradiční (nestínové) ukládání hesel a tradiční unixový algoritmus hašování hesel. Obojí je v dnešním bezpečnostním prostředí špatná volba.
Protože tradiční algoritmus hašování hesla ukládá a porovnává pouze prvních 8 znaků hesla, vysvětluje to chování zaznamenané v původní otázce.
Odeslaný výstup sshd obsahuje řádek:
Could not get shadow information for user
Předpokládal bych, že to znamená alespoň sshd
(nebo možná knihovna pro ukládání hesel PAM Unix) na tomto systému obsahuje funkci stínového hesla, ale z nějakého důvodu se prodejce systému rozhodl ji nepoužívat.
V distribuci založené na BusyBox, jakou obvykle bývá postavená s Yocto, to lze možná opravit povolením příslušných možností v konfiguraci BusyBox. Toto řešení předpokládá, že máte recepty a jste schopni sestavit svůj vlastní přizpůsobený obraz operačního systému nebo alespoň vhodný binární soubor BusyBox. Potřebuje také, aby byly k dispozici pokročilé kryptografické hašovací algoritmy (alespoň SHA-256, lépe SHA-512) (z libc).
V konfiguraci BusyBox nastavte
- Nástroje pro správu přihlášení/hesla
- Podpora stínových hesel → povoleno
- Používejte interní šifrovací funkce → zakázáno
- Výchozí metoda šifrování hesla →
sha512
nebosha256
Navíc obsah /etc/passwd
a /etc/shadow
se musí přizpůsobit, např. G. pomocí nástrojů příkazového řádku vylepšeného sestavení BusyBox (passwd
, mkpasswd
, chpasswd
), nebo je nastavte během vytváření obrazu pomocí EXTRA_USERS_PARAMS
:
EXTRA_USERS_PARAMS = " \
usermod -p '\$6\$<salt>\$<encrypted_pwd>' root; \
useradd -m -s /bin/sh -G … -u … -p '…' <username>; \
"