Nejhorší druh hesla není slabé heslo, ale žádné heslo. Jako správce systému musíte zajistit, aby měl každý uživatelský účet silné heslo. Tento stručný návod vysvětluje, jak v Linuxu najít uživatelské účty s prázdným heslem.
Než se pustíme do tématu, udělejme si rychlou rekapitulaci stínu soubor a jeho účel.
Co je soubor stínového hesla?
V systémech RHEL jsou uživatelská hesla hašována a uložena v zabezpečeném souboru s názvem /etc/shadow
. Soubor stínových hesel obsahuje podrobnosti o ověření uživatele a stárnutí hesla uživatelských účtů.
Soubor stínového hesla vlastní root
a je čitelný pouze pro superuživatele. Vlastnictví a oprávnění stínového souboru můžete ověřit pomocí následujícího příkazu:
# ls -l /etc/shadow ---------- 1 root root 618 Apr 7 07:52 /etc/shadow
Typická struktura ukázkového řádku ze stínového souboru je uvedena níže.
user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::
Jak již možná víte, stínový soubor má devět polí oddělené dvojtečkou.
Pojďme se rychle podívat na každé pole.
- Soubor 1 (přihlašovací jméno) - Obsahuje přihlašovací jméno (user1), jak je uvedeno v
passwd
soubor. - Fid 2 (šifrované heslo) - Tento soubor obsahuje hashované (šifrované) heslo uživatele. Pokud je na začátku tohoto souboru jeden vykřičník (!), znamená to, že uživatelský účet je uzamčen. Pokud je toto pole prázdné, uživatel nemá heslo.
- Polo 3 (poslední změna) - Toto pole zobrazuje počet dní od epochy Unixu (tj. čas Unixu - 1. ledna 1970 00:00:00 UTC), kdy bylo heslo naposledy změněno. Pokud toto pole obsahuje 0, uživatel je nucen změnit své heslo při příštím přihlášení.
- Podáno 4 (minimálně) - Toto pole zobrazuje minimální počet dní (mind), které musí uplynout, než si uživatel bude moci změnit heslo. Tuto hodnotu v poli můžete změnit pomocí
chage
příkaz s-m
možnost. - Pole 5 (maximálně) - Zobrazuje maximální počet dní (maxdays) platnosti hesla, než vyprší platnost hesla uživatele. Pokud je pole 0, znamená to, že tato funkce je zakázána. Hodnotu tohoto pole lze změnit pomocí
chage
příkaz s-M
možnost. - Soubor 6 (varování) - Udává počet dní (warndays), po které uživatel dostává upozornění na změnu hesla před vypršením jeho platnosti. Tuto hodnotu můžete změnit pomocí
chage
příkaz s-W
nebopasswd
příkaz s-w
možnost. - Pole 7 (vypršení platnosti hesla) - Definuje maximální povolený počet dní, po které se uživatel bude moci přihlásit pomocí hesla, jehož platnost vypršela. Toto lze změnit pomocí
chage
příkaz s-I
flag nebopasswd
příkaz s-i
vlajka. - Pole 8 (vypršení platnosti účtu) - Definuje počet dní od času UNIX, kdy uživatelský účet vyprší a již nebude dostupný. Hodnotu tohoto pole můžete změnit pomocí
chage
příkaz s-E
možnost. - Pole 9 (rezervováno) – Toto pole je vyhrazeno pro budoucí použití.
Jak bylo zmíněno výše, šifrovaná hesla jsou uložena ve druhém poli každé položky v souboru stínových hesel, hned za uživatelským jménem.
Pokud je tedy druhé pole ve stínovém souboru prázdné, uživatel nemá žádné heslo. Dovolte mi ukázat vám příklad, jak najít všechny uživatelské účty bez hesla.
Najděte všechny uživatelské účty bez hesla v systému Linux
Chcete-li zjistit všechny místní uživatelské účty, které nemají heslo, jednoduše spusťte následující příkaz jako root
uživatel:
# awk -F: '$2 == "" { print $1, "has empty password!. Please set a strong password ASAP!!" }' /etc/shadow
Ukázkový výstup:
ostechnix has empty password!. Please set a strong password ASAP!!
Můžete také použít getent
příkaz v kombinaci s grep
a cut
příkazy k identifikaci lokálních uživatelských účtů bez hesla v Linuxu.
# getent shadow | grep -Po '^[^:]*(?=::)'
Nebo,
# getent shadow | grep '^[^:]*::' | cut -d: -f1
Všechny výše uvedené příkazy zobrazí pouze místní uživatelské účty, které mají prázdná hesla. Pokud chcete vypsat seznam systémových i uživatelských účtů s prázdným heslem, spusťte.
# getent shadow | grep -Po '^[^:]*(?=:.?:)'
Nebo,
# getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Najděte konkrétní uživatelský účet bez hesla
Výše uvedené příkazy zobrazí seznam všech místních i systémových účtů, které nemají žádné heslo. Stav hesla konkrétního uživatelského účtu můžete také zkontrolovat pomocí passwd
příkaz s -S
vlajka.
# passwd -S ostechnix
Ukázkový výstup:
ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)
passwd
příkazy budou indikovat stav hesla daného uživatelského účtu. Možné hodnoty jsou:
- LK - Uživatelský účet je uzamčen.
- NP - Uživatelský účet nemá žádné heslo.
- PS - Uživatelský účet má použitelné heslo.
Pozor: V systémech založených na Debianu bude stav hesla označen jako L , N , P respektive.
Nastavit heslo uživatele v systému Linux
Můžete se přihlásit jako uživatel bez hesla, je to naprosto v pořádku. To se však nedoporučuje! Musíte nastavit silné heslo s alespoň 8 znaky včetně velkých, malých písmen, speciálního znaku a čísla.
Chcete-li nastavit heslo k uživatelskému účtu v systému Linux, použijte passwd
příkaz jako root
uživatel jako níže.
Jako uživatel root:
# passwd ostechnix
Nahraďte ostechnix svým vlastním uživatelským jménem.
Nyní zkontrolujte stav hesla uživatelského účtu pomocí passwd
příkaz:
# passwd -S ostechnix
Ukázkový výstup:
ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)
Uzamknout uživatelské účty v systému Linux
Někdy prostě chcete zamknout uživatelské účty prázdnými hesly. Pokud ano, nejprve vyhledejte uživatele s prázdnými hesly, jak je popsáno výše, a uzamkněte je pomocí passwd
příkaz s -l
označit jako root
uživatel jako níže.
# passwd -l ostechnix
Ukázkový výstup:
Locking password for user ostechnix. passwd: Success
Nyní zkontrolujte stav uživatelského účtu:
# passwd -S ostechnix
Ukázkový výstup:
ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)
Vidět? Uživatel byl uzamčen. Už se nemůže přihlásit do systému.
Můžete také použít usermod
příkaz s -L
(velké L) příznak pro uzamčení uživatele.
# usermod -L ostechnix
Odemknutí uživatelských účtů v systému Linux
K odemknutí uživatelů bez hesla v Linuxu použijte buď passwd
příkaz nebo usermod
příkaz s -p
jako root
uživatel.
# passwd ostechnix
Pro odblokování hesla zadejte heslo dvakrát.
Odemknutí uživatele s prázdným heslem pomocí usermod
příkaz není možný, měli byste nastavit heslo pomocí usermod -p
k odemknutí hesla uživatele.
# usermod -p <password-here> ostechnix
Závěr
V tomto tutoriálu jsme vysvětlili, co je soubor Shadow password a účel tohoto souboru v Linuxu. Poté jsme diskutovali o různých příkazech k nalezení všech uživatelských účtů, které nemají v Linuxu žádné heslo. Nakonec jsme se naučili, jak nastavit heslo pro uživatele a také jak zamykat a odemykat uživatele v Linuxu.