GNU/Linux >> Znalost Linux >  >> Cent OS

Složitost hesla PAM a kreditní systém pam_cracklib v CentOS/RHEL

Tento příspěvek popisuje kreditní systém PAM pam_cracklib ve vztahu ke složitosti hesla PAM pro Linux.

Přehled PAM

Pluggable Authentication Modules (PAM) je centrální, flexibilní, modulární rámec používaný ke správě zásad autentizace systému a usnadnění autentizace uživatelů. PAM poskytuje obecné rozhraní API (Application Programming Interface), na které se programy udělující oprávnění odkládají za účelem ověření uživatele.

Postup ověření PAM je následující:
Aplikace (přihlášení, ssh, sudo, su, ftp atd.) -> PAM -> Zdroj ověření (místní heslo, LDAP, Kerberos atd.)

PAM rozděluje úlohy ověřování do čtyř skupin správy:

  • Správa účtu – zkontrolovat oprávnění uživatele ke službě, vypršení platnosti hesla uživatele atd.
  • Správa ověřování – ověření uživatele, přihlašovací údaje uživatele, výzva/odpověď (heslo), biometrie.
  • Správa hesel – usnadňuje správu hesel – změny, aktualizace atd.
  • Správa relací – úkoly před/po připojení uživatelské služby, např. audit trail, připojit domovský adresář uživatele atd.

Modul PAM pam_cracklib

Po přidání do zásobníku hesel PAM modul pam_cracklib provede kontrolu síly navrhovaných uživatelských hesel. Modul zavolá rutinu cracklib, která porovnává hesla se slovníkem známých (běžných, slabých, výchozích atd.) slov před provedením dalších kontrol síly, jako například:

  • Palindrom :Je nové heslo palindrom, tj. řetězec, který se čte stejně dozadu i dopředu, např. radar, paní atd.
  • Pouze malá a velká písmena :Je nové heslo stejné jako staré, pouze se mění malá a velká písmena?
  • Podobné :Je nové heslo příliš podobné tomu starému?
  • Jednoduché :Je nové heslo příliš malé? To je řízeno 6 argumenty:minlen , maxclassrepeat , dcredit , ukreditovat , lkredit a okreditovat .
  • Otočeno :Je nové heslo otočenou verzí starého hesla?
  • Již použito :Bylo heslo již použito?
  • Stejné po sobě jdoucí znaky :Volitelná kontrola stejných po sobě jdoucích znaků.
  • Obsahuje uživatelské jméno :Volitelně zkontrolujte, zda heslo obsahuje jméno uživatele.

Když je povoleno bez argumentů, výchozí možnosti/hodnoty kontroly síly pam_cracklib pomáhají zajistit, aby byla přijímána dostatečně bezpečná hesla.

Kreditní systém pam_cracklib

Modul pam_cracklib nabízí různé možnosti, z nichž následující přímo řídí složitost hesla:

  • minlen – Minimální délka hesla
  • lkredit – Minimální počet malých písmen
  • ukreditovat – Minimální počet velkých písmen
  • dcredit – Minimální počet číselných znaků
  • úvěr – Minimální počet nealfanumerických znaků

minlen definuje minimální přijatelnou velikost pro nové heslo. Kromě počtu znaků se však kredit (tj. skóre) uděluje za každý jiný použitý typ znaku, tj. dolní, horní, číslice, jiné. Kreditní hodnota každého použitého typu postavy se započítává do splnění definované hodnoty minlen.

lcredit=N :(N>=0) Toto je maximální kredit za použití malých písmen v novém hesle. Pokud máte méně než nebo N malých písmen, každé písmeno se bude počítat +1 ke splnění aktuální hodnoty minlen. Výchozí hodnota pro lcredit je 1, což je doporučená hodnota pro minlen menší než 10.

(N <0) Toto je minimální počet malých písmen, který musí být splněn pro nové heslo.

ucredit=N :(N>=0) Toto je maximální kredit za použití velkých písmen v novém hesle. Pokud máte méně než nebo N velkých písmen, každé písmeno se bude počítat +1 ke splnění aktuální hodnoty minlen. Výchozí hodnota pro ucredit je 1, což je doporučená hodnota pro minlen menší než 10.

(N <0) Toto je minimální počet velkých písmen, který musí být splněn pro nové heslo.

dcredit=N (N>=0) Toto je maximální kredit za to, že nové heslo obsahuje číslice. Pokud máte méně než nebo N číslic, každá číslice se bude počítat +1 do splnění aktuální minlenové hodnoty. Výchozí hodnota pro dcredit je 1, což je doporučená hodnota pro minlen menší než 10.

(N <0) Toto je minimální počet číslic, které musí být splněny pro nové heslo.

ocredit=N :(N>=0) Toto je maximální kredit pro další znaky v novém hesle. Pokud máte méně než nebo N dalších postav, každá postava se bude počítat +1 ke splnění aktuální hodnoty minlenu. Výchozí hodnota pro ocredit je 1, což je doporučená hodnota pro minlen menší než 10.

(N <0) Toto je minimální počet dalších znaků, které musí být splněny pro nové heslo.

Při použití kreditního systému PAM je docela možné, že bude přijato heslo s délkou menší, než je délka definovaná minlenem, tj. heslo může také obsahovat znaky jednoho nebo více typů znaků – dolní, horní, číslice, jiné.

Zvažte následující konfiguraci pam_cracklib:

--/etc/pam.d/system-auth-ac:
...
password required pam_cracklib.so minlen=12 lcredit=1 ucredit=1 dcredit=2 ocredit=1
...

Následuje výpočet kreditu hesla pam_cracklib pro uživatelské heslo „@1Bcdef2“:

  • @1Bcdef2:uděleno 8 kreditů, tj. jeden za každou postavu
  • @:1 udělený kredit (jiné)
  • 1,2:1 udělený kredit (číslice)
  • B:1 udělený kredit (horní)
  • cdef:1 udělený kredit (nižší)

8 + 4 =12 (minlen)

Vzhledem k počtu a typu znaků použitých ve výše uvedeném hesle systém akceptuje minimální délku hesla 8 znaků. Upozorňujeme, že bude přijato také heslo obsahující pouze 11 malých písmen, tj.:

  • abcdefghijk:11 udělených kreditů – jeden za každou postavu
  • abcdefghijk:0 udělených kreditů (jiné)
  • abcdefghijk:0 udělených kreditů (číslice)
  • abcdefghijk:0 udělených kreditů (horní)
  • abcdefghijk:1 udělený kredit (nižší)

11 + 1 =12 (min)

Níže jsou uvedeny podrobné příklady přijatých a nepřijatých hesel:

minlen Heslo Délka hesla (znaky) Kredit Heslo přijato?
10 qwertasdf 9 9 (znaků) + 1 (nižší) =10 Ano
12 qwertasdfgz 11 11 (znaků) + 1 (nižší) =12 Ano
14 qwertasdfgzxc 13 13 (znaků) + 1 (nižší) =14 Ano
14 qwertasdf1$ 11 11 (znaky) + 1 (nižší) + 1 (číslice) + 1 (ostatní) =14 Ano
10 qwertasd 8 8 (znaků) + 1 (nižší) =  9 Ne
12 qwertasdfg 10 10 (znaků) + 1 (nižší) =11 Ne
14 qwertasdfgzx 12 12 (znaků) + 1 (nižší) =13 Ne

Vynucení složitosti hesel pomocí kreditního systému pam_cracklib

Ve všech dosavadních příkladech si všimněte, že použití kreditního systému ve skutečnosti nevynucuje složitost hesla. Chcete-li vynutit složitost hesla, zadejte záporné hodnoty pro volby pam_cracklib lcredit, ucredit, dcredit, ocredit. Při zadávání záporných hodnot se neudělují kredity za použití malých, velkých, číslic a dalších znaků, ale heslo musí stále obsahovat znaky z každé ze zadaných skupin znaků.

Zvažte následující konfiguraci pam_cracklib:

--/etc/pam.d/system-auth-ac:
...
password required pam_cracklib.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1
...

S výše uvedeným musí úspěšné uživatelské heslo …

  • má délku alespoň 8 znaků a
  • obsahují alespoň 1 malé písmeno a
  • obsahují alespoň 1 velké písmeno a
  • obsahují alespoň 2 číslice a
  • obsahují alespoň 1 další znak

Poznámka :CentOS/RHEL 7 používá pam_pwquality modul místo pam_cracklib a modul pam_pwquality je zpětně kompatibilní s jeho možnostmi.

PAM_PWQUALITY(8) System Manager's Manual PAM_PWQUALITY(8)

NAME
pam_pwquality - PAM module to perform password quality checking

SYNOPSIS
pam_pwquality.so [...]

DESCRIPTION
This module can be plugged into the password stack of a given service to provide some plug-in strength-checking for passwords. 
The code was originally based on pam_cracklib module and the module is backward compatible with its options.


Cent OS
  1. Režim jednoho uživatele v CentOS 7 / RHEL 7

  2. Obnovte heslo root v CentOS 7 / RHEL 7

  3. Jak nakonfigurovat systém CentOS/RHEL 6, aby nebyla použita poslední 3 použitá hesla

  1. Jak deaktivovat ACPI v CentOS/RHEL 7

  2. „BAD PASSWD:is too simple“ – chyba při změně hesla v CentOS/RHEL 7 a 8

  3. CentOS / RHEL :Jak zakázat přihlášení uživatele root nebo přístup root v systému

  1. Heslo Méně Přihlášení SSH – CentOS 6 / RHEL 6

  2. Jak resetovat zapomenuté heslo root RHEL / CentOS 7

  3. Oprava problémů se souborovým systémem při spouštění v CentOS/RHEL 7 a 8