Ahoj znovu! Již zítra začínají kurzy v nové skupině. , proto zveřejňujeme užitečný článek na toto téma.

V minulém tutoriálu jsme popisovali, jak použít pam_cracklib, aby se zkomplikovaly hesla v systémech nebo CentOS. V Red Hat 7 pam_pwquality nahradil cracklib jako pam jako výchozí modul pro kontrolu hesel. Tento modul je také podporován v Ubuntu a CentOS, stejně jako v mnoha dalších operačních systémech. Usnadňuje vytváření politik hesel, aby se zajistilo, že uživatelé dodržují vaše standardy složitosti hesel. pam_pwquality Dlouhou dobu byl běžným přístupem k heslům nutit uživatele používat velká a malá písmena, čísla nebo jiné symboly. Tato základní pravidla složitosti hesel jsou aktivně prosazována posledních deset let. Proběhlo mnoho diskusí o tom, zda je to dobrá praxe nebo ne. Hlavním argumentem proti zavedení takových složitých podmínek bylo, že si uživatelé zapisují hesla na papírky a uchovávají je nezabezpečeně.
Další politika, která byla nedávno zpochybněna, nutí uživatele měnit svá hesla každých x dní. Bylo provedeno několik výzkumů, které ukázaly, že to také poškozuje bezpečnost.
Na téma těchto diskusí bylo napsáno mnoho článků, které obhajovaly ten či onen názor. Ale to není to, co budeme diskutovat v tomto článku. Tento článek se zaměří na to, jak správně stanovit složitost hesla, nikoli na řízení bezpečnostní politiky.
Parametry politiky hesel
Níže uvidíte parametry politiky hesel a krátký popis každého z nich. Mnohé z nich jsou podobné parametrům v modulu
. Takový přístup usnadňuje přenášení vašich politik ze starého systému. cracklibdifok
- – Počet znaků ve vašem novém hesle, které NESMÍ být přítomny ve vašem starém hesle. (Výchozí hodnota 5) minlen
- – Minimální délka hesla. (Výchozí hodnota 9) ucredit
- – Maximální počet kreditů za použití velkých písmen (pokud je parametr > 0), nebo minimální požadovaný počet velkých písmen (pokud je parametr < 0). Výchozí hodnota 1. lcredit
- lcredit — Maximální počet kreditů za použití malých písmen (pokud je parametru > 0), nebo minimální požadovaný počet malých písmen (pokud je parametru < 0). Ve výchozím nastavení 1.
- dcredit — Maximální počet kreditů za použití číslic (pokud je parametru > 0), nebo minimální požadovaný počet číslic (pokud je parametru < 0). Ve výchozím nastavení 1.
- ocredit — Maximální počet kreditů za použití jiných znaků (pokud je parametru > 0), nebo minimální požadovaný počet jiných znaků (pokud je parametru < 0). Ve výchozím nastavení 1.
- minclass – Určuje požadovaný počet tříd. Třídy zahrnují výše uvedené parametry (velká písmena, malá písmena, číslice a další znaky). Ve výchozím nastavení 0.
- maxrepeat – Maximální počet opakování znaku v hesle. Ve výchozím nastavení 0.
- maxclassrepeat — Maximální počet po sobě jdoucích znaků v jedné třídě. Ve výchozím nastavení 0.
- gecoscheck – Kontroluje, zda heslo obsahuje nějaká slova z GECOS řetězců uživatele. (Informace o uživateli, tj. skutečné jméno, místo atd.) Ve výchozím nastavení 0 (vypnuto).
- dictpath – Cesta k slovníkům cracklib.
- badwords – Mezi slovy zakázanými v heslech (název společnosti, slovo „heslo“ atd.) oddělenými mezerou.
Pokud pojem kreditů zní podivně, nevadí, je to v pořádku. O tom budeme podrobněji hovořit v následujících oddílech.
Konfigurace politiky hesel
Předtím, než začneme upravovat konfigurační soubory, je dobrou praxí nejprve zapsat základní politiku bezpečnosti hesel. Například, budeme používat následující pravidla složitosti:
- Heslo musí mít minimální délku 15 znaků.
- Ve hesle se stejný znak nesmí opakovat více než dvakrát.
- Ve hesle se mohou třídy znaků opakovat maximálně čtyřikrát.
- Heslo musí obsahovat znaky z každé třídy.
- Nové heslo musí mít 5 nových znaků ve srovnání se starým.
- Povolit kontrolu GECOS.
- Zakázat slova „password, pass, word, putorius“
Nyní, jakmile jsme uvedli politiku, můžeme upravit soubor /etc/security/pwquality.conf, abychom zpřísnili požadavky na složitost hesla. Níže uvádíme příklad souboru s komentáři pro lepší porozumění.
# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putoriusJak jste si možná všimli, některé parametry v našem souboru jsou nadbytečné. Například parametr minclass je nadbytečný, protože už používáme alespoň dva znaky z třídy pomocí polí [u,l,d,o]credit. Náš seznam zakázaných slov je také nadbytečný, protože jsme zakázali opakování jakékoli třídy 4krát (všechna slova v našem seznamu jsou napsána malými písmeny). Tyto parametry jsem zahrnul pouze proto, abych ukázal, jak je použít k nastavení politiky hesel.
Jakmile vytvoříte svou politiku, můžete donutit uživatele změnit svá hesla při jejich dalším přihlášení do .
Další zvláštní věcí, kterou jste si možná všimli, je, že pole [u,l,d,o]credit obsahují záporné číslo. To je proto, že čísla větší nebo rovná 0 poskytnou kredit za použití znaku ve vašem hesle. Pokud pole obsahuje záporné číslo, znamená to, že je vyžadováno určité množství.
Co jsou kredity (credit)?
Nazývám je kredity, protože to nejlépe vystihuje jejich účel. Pokud je hodnota parametru větší než 0, přidáte množství „kreditů na znaky“ roven „x“ k délce hesla. Například, pokud jsou všechny parametry (u,l,d,o)credit nastaveny na 1, a požadovaná délka hesla byla 6, pak potřebujete 6 znaků k splnění požadavku na délku, protože každý znak velkého písmene, malého písmene, číslice nebo jiný znak vám dá jeden kredit.
Pokud nastavíte dcredit na 2, teoreticky budete moci použít heslo o délce 9 znaků a získat 2 kredity na znaky pro číslice, a pak délka hesla může být již 10.
Podívejte se na tento příklad. Nastavil jsem délku hesla na 13, nastavil jsem dcredit na 2, a všechno ostatní na 0.
$ pwscore
Thisistwelve
Kontrola kvality hesla selhala:
Heslo je kratší než 13 znaků
$ pwscore
Th1sistwelve
18Moje první kontrola selhala, protože délka hesla byla méně než 13 znaků. Příště jsem změnil písmeno „I“ na číslici „1“ a získal dva kredity za číslice, což učinilo heslo rovným 13.
Testování hesla
Balíček libpwquality poskytuje funkcionalitu popsanou v článku. Spolu s tím je dodáván program pwscore, který slouží k ověřování složitosti hesla. Použili jsme ho výše k ověření kreditů.
Nástroj pwscore čte z . Stačí spustit utilitu a napsat své heslo, ona vám vydá chybu nebo hodnotu od 0 do 100.
Ukazatel kvality hesla odpovídá parametru – Minimální délka hesla. (Výchozí hodnota 9) v konfiguračním souboru. Obecně se skóre pod 50 považuje za "normální heslo", zatímco skóre nad 50 za "silné heslo". Jakékoli heslo, které splňuje kritéria kvality (zejména povinnou kontrolu cracklib) by mělo odolávat útokům ze slovníků, a heslo se skóre nad 50 s nastavením – Minimální délka hesla. (Výchozí hodnota 9) ve výchozím nastavení. brute force útokům.
Závěr
Nastavení pwquality – to je snadné a jednoduché ve srovnání s nevýhodami použití cracklib přímého úpravy souborů. pamV této příručce jsme probrali vše, co budete potřebovat při nastavování pravidel pro hesla v Red Hat 7, CentOS 7 a dokonce i v systémech Ubuntu. Také jsme se dotkli konceptu kreditů, o kterých se často píše málo, což tuto problematiku činí těžko pochopitelnou pro ty, kteří se s ní ještě nesetkali.
Zdroje:
Užitečné odkazy:
Zdroj: habr.com
