Hesla představují klíčový prvek zabezpečení uživatelských účtů. V následujícím textu si ukážeme, jak v prostředí Linux provádět resetování hesel, nastavovat dobu jejich platnosti a vynucovat jejich změnu.
Hesla s námi žijí téměř 60 let
Již od poloviny šedesátých let, kdy se hesla objevila poprvé, slouží jako prostředek prokazování naší identity počítačovým systémům. Tato nutnost vzešla z Kompatibilního systému sdílení času, který byl vyvinut na Massachusettském technologickém institutu. Tento systém vyžadoval metodu, jak odlišit jednotlivé uživatele a zároveň jim bránit v přístupu k cizím souborům.
Fernando J. Corbató přišel s návrhem, který každému uživateli přidělil unikátní jméno. Pro ověření identity bylo následně vyžadováno zadání osobního, soukromého hesla.
Zásadní problém s hesly je jejich princip fungování, který je srovnatelný s klíčem. Kdokoliv, kdo klíč získá, jej může použít. Pokud tedy někdo vaše heslo uhodne, zjistí nebo získá, bude mít volný přístup k vašemu účtu. Dokud nebude vícefaktorové ověřování standardem, hesla zůstávají hlavním faktorem, který odděluje autorizované uživatele od kybernetických hrozeb.
Vzdálená připojení, která využívají Secure Shell (SSH), mohou být nakonfigurována tak, aby místo hesel používala SSH klíče, což je bezpečnější alternativa. Nicméně, tato metoda se týká pouze některých typů připojení a není použitelná pro lokální přihlašování.
Je tedy jasné, že efektivní správa hesel, stejně jako správa uživatelů, kteří je používají, je naprosto klíčová.
Jak má vypadat ideální heslo?
Jaké vlastnosti by mělo mít kvalitní heslo? Mělo by především splňovat následující:
- Mělo by být nemožné ho uhodnout nebo odhalit.
- Nemělo by být používáno nikde jinde.
- Nemělo by být kompromitováno v rámci úniku dat.
Webová stránka Have I Been Pwned (HIBP) obsahuje databázi s více než 10 miliardami kompromitovaných přihlašovacích údajů. S takto rozsáhlou databází je poměrně pravděpodobné, že někdo jiný používá stejné heslo jako vy. I když se nejedná přímo o váš účet, vaše heslo se může vyskytovat v databázi.
Pokud je vaše heslo součástí databáze HIBP, znamená to, že je také zahrnuto v seznamech hesel, které jsou používány nástroji pro hrubou sílu a slovníkové útoky.
Naprosto náhodné heslo (např. [email protected]%*[email protected]#b~aP) je téměř nezranitelné, ale prakticky nemožné si ho zapamatovat. Z tohoto důvodu se důrazně doporučuje používat správce hesel pro online účty. Správce hesel generuje složitá a náhodná hesla pro všechny vaše online účty, a vy si je nemusíte pamatovat.
Pro lokální účty si musí každý uživatel vytvořit vlastní heslo. Měli byste také vědět, co je považováno za přijatelné a co ne. Měli byste být poučeni o tom, že hesla nemají být používána opakovaně na různých účtech a podobně.
Tyto požadavky jsou obvykle součástí bezpečnostní politiky hesel vaší organizace. Ta specifikuje minimální délku hesla, kombinaci velkých a malých písmen, použití speciálních znaků a interpunkce.
Nicméně, dle nové studie, kterou provedl tým z Carnegie Mellon University, tyto požadavky mají minimální nebo žádný vliv na celkovou bezpečnost hesla. Výzkumníci zjistili, že klíčové faktory pro silné heslo jsou délka (minimálně 12 znaků) a celková síla. Síla hesla byla měřena pomocí softwarových crackerů, statistických metod a neuronových sítí.
Požadavek minimální délky 12 znaků může zprvu působit odrazujícím dojmem. Nicméně, nemyslete na heslo jako na náhodnou sekvenci znaků, ale spíše jako na heslovou frázi, která se skládá ze tří nebo čtyř nesouvisejících slov, oddělených interpunkcí.
Například, Experte Password Check uvádí, že prolomení hesla „chicago99“ by trvalo 42 minut, zatímco prolomení hesla „chimney.purple.bag“ by trvalo 400 miliard let. Druhé heslo je přitom snadno zapamatovatelné, obsahuje pouze 18 znaků a je dostatečně silné.
Kontrola aktuálního nastavení
Před jakýmkoliv zásahem do nastavení hesel, je dobré si prohlédnout aktuální nastavení daného uživatele. Pomocí příkazu `passwd` s volbou `-S` (status) můžete zjistit jeho aktuální stav. V případě, že měníte nastavení hesel jiných uživatelů, je potřeba použít příkaz `sudo`.
Zadejte následující příkaz:
sudo passwd -S mary
V terminálu se zobrazí jeden řádek s informacemi, jak je ukázáno níže.
Tento řádek obsahuje následující informace (zleva doprava):
- Uživatelské jméno.
- Jeden ze tří indikátorů:
- `P`: Označuje, že účet má platné funkční heslo.
- `L`: Označuje, že účet byl uzamčen správcem (root).
- `NP`: Heslo nebylo nastaveno.
- Datum poslední změny hesla.
- Minimální stáří hesla: Minimální počet dnů, který musí uplynout mezi dvěma změnami hesla provedenými uživatelem. Správce (root) může heslo změnit kdykoliv. Pokud je hodnota 0, není omezení na frekvenci změny hesla.
- Maximální stáří hesla: Uživatel je vyzván ke změně hesla po uplynutí této doby. Hodnota je udávána ve dnech. Hodnota 99999 značí, že platnost hesla nikdy nevyprší.
- Období upozornění na změnu hesla: Pokud je nastaveno maximální stáří hesla, uživatel obdrží upozornění s předstihem.
- Doba nečinnosti hesla: Pokud uživatel nepřistoupí k systému po dobu překračující tuto lhůtu po vypršení platnosti hesla, dojde k uzamčení účtu. Hodnota -1 deaktivuje dobu odkladu.
Nastavení maximálního stáří hesla
Pro nastavení doby platnosti hesla, použijte volbu `-x` (maximální počet dnů) následovanou počtem dnů. Bez mezery mezi `-x` a číslem. Například:
sudo passwd -x45 mary
Systém potvrdí změnu hodnoty vypršení platnosti hesla:
Ověřte změnu pomocí volby `-S` (stav):
sudo passwd -S mary
Po 45 dnech bude nutné pro tento účet nastavit nové heslo. Upozornění začnou sedm dní před vypršením platnosti. Pokud nové heslo nebude včas nastaveno, bude účet uzamčen.
Vynucení okamžité změny hesla
Pomocí příkazu s volbou `-e` (vyprší), můžete vynutit změnu hesla při příštím přihlášení uživatele. Postupujte takto:
sudo passwd -e mary
Systém oznámí změnu informací o vypršení platnosti hesla.
Ověřte změnu pomocí volby `-S`:
sudo passwd -S mary
Datum poslední změny hesla je nastaveno na první den roku 1970. Při příštím pokusu o přihlášení bude uživatel vyzván ke změně hesla. Bude muset zadat své aktuální heslo, než bude moci nastavit nové.
Měli byste vynucovat změny hesel?
Dříve bylo běžné vyžadovat pravidelnou změnu hesel. Tato praktika byla považována za důležitou bezpečnostní strategii.
Dnes je pohled na tuto praxi odlišný. Například, Národní centrum kybernetické bezpečnosti ve Velké Británii doporučuje nevynucovat pravidelnou změnu hesel. Také Národní institut pro standardy a technologie v USA se s tímto názorem ztotožňuje. Obě organizace doporučují vynucovat změnu hesla pouze v případě, že máte podezření na jeho kompromitaci.
Pravidelné vynucování změn hesel vede k tomu, že uživatelé mají tendenci vytvářet slabá hesla. Začínají používat základní hesla s přidáním data nebo jiného čísla. Také si hesla zapisují, jelikož je musí měnit příliš často a nemohou si je pamatovat.
Výše zmíněné organizace doporučují následující pokyny pro zabezpečení hesel:
- Používejte správce hesel: Pro online i lokální účty.
- Aktivujte dvoufaktorové ověřování: Kdekoli je to možné.
- Používejte silné heslové fráze: Ideální pro účty, kde nelze použít správce hesel. Tři a více slov oddělených interpunkcí nebo symboly představuje dobrý postup.
- Nikdy nepoužívejte heslo opakovaně: Nepoužívejte stejné heslo, které máte pro jiný účet a rozhodně nepoužívejte hesla, která se objevila na Have I Been Pwned.
Pokud se budete držet těchto tipů, můžete vytvořit bezpečný způsob přístupu k vašim účtům. Jakmile máte tyto postupy zavedeny, dodržujte je. Není důvod měnit heslo, pokud je dostatečně silné a bezpečné. Pokud se dostane do nesprávných rukou – nebo pokud máte podezření – můžete ho změnit.
Nicméně, někdy nad tímto rozhodnutím nemáte kontrolu. Pokud se pravidla pro vynucování změn hesel změní, nemáte na výběr. Můžete hájit svůj postoj, ale pokud nejste šéf, musíte dodržovat firemní politiku.
Příkaz chage
Můžete použít příkaz chage k modifikaci nastavení stárnutí hesla. Název příkazu pochází z anglického „change aging“. Je podobný příkazu `passwd`, ale bez možnosti vytvářet hesla.
Volba `-l` (list) zobrazí stejné informace jako `passwd -S`, ale přehledněji.
Zadejte:
sudo chage -l eric
Další užitečná funkce je nastavení data vypršení platnosti účtu pomocí volby `-E` (expiry). Zadejte datum (ve formátu rok-měsíc-den), pro nastavení data vypršení platnosti na 30. listopadu 2020. K tomuto datu bude účet uzamčen.
Zadejte:
sudo chage eric -E 2020-11-30
Ověřte provedenou změnu pomocí následujícího příkazu:
sudo chage -l eric
Vidíme, že datum vypršení platnosti účtu bylo změněno z „nikdy“ na 30. listopadu 2020.
Pro nastavení doby platnosti hesla můžete použít volbu `-M` (maximální počet dní) následovanou maximálním počtem dnů, po které lze heslo používat, než je nutné ho změnit.
Zadejte:
sudo chage -M 45 mary
Pro kontrolu efektu našeho příkazu použijte volbu `-l` (list):
sudo chage -l mary
Datum vypršení platnosti hesla je nyní nastaveno na 45 dní od data nastavení, což je, jak vidíme, 8. prosince 2020.
Provádění změn hesel pro celou síť
Při vytváření uživatelských účtů se pro hesla používají výchozí hodnoty. Můžete definovat výchozí hodnoty pro minimální, maximální a varovné dny. Tyto hodnoty se ukládají do souboru `/etc/login.defs`.
Pro otevření tohoto souboru v editoru gedit zadejte:
sudo gedit /etc/login.defs
Přejděte na sekci nastavení stárnutí hesla.
Změňte hodnoty dle vašich požadavků, uložte změny a zavřete editor. Při vytváření nových uživatelských účtů budou použity tyto výchozí hodnoty.
Pokud chcete změnit nastavení vypršení platnosti hesla pro všechny existující uživatelské účty, můžete to snadno udělat pomocí skriptu. Pro otevření editoru gedit a vytvoření souboru s názvem `password-date.sh` zadejte:
sudo gedit password-date.sh
Zkopírujte následující text do editoru, uložte soubor a zavřete gedit:
#!/bin/bash reset_days=28 for username in $(ls /home) do sudo chage $username -M $reset_days echo $username password expiry changed to $reset_days done
Tento skript změní maximální počet dnů pro každý uživatelský účet na 28, a tedy i frekvenci resetování hesla. Hodnotu proměnné `reset_days` můžete upravit dle potřeby.
Nejprve udělejte skript spustitelným:
chmod +x password-date.sh
Nyní můžete spustit skript:
sudo ./password-date.sh
Nyní je zpracován každý účet, jak je ukázáno níže.
Pro kontrolu změn na účtu „mary“ zadejte:
sudo change -l mary
Maximální počet dnů byl nastaven na 28 a víme, že vypršení platnosti nastane 21. listopadu 2020. Můžete také snadno upravit skript a přidat další příkazy `chage` nebo `passwd`.
Správu hesel je nutné brát vážně. Nyní máte k dispozici nástroje pro to, abyste ji měli pod kontrolou.