GNU/Linux >> Tutoriels Linux >  >> Cent OS

Complexité du mot de passe PAM et système de crédit pam_cracklib dans CentOS/RHEL

Cet article décrit le système de crédit PAM pam_cracklib en relation avec la complexité du mot de passe Linux PAM.

Présentation de PAM

Les modules d'authentification enfichables (PAM) sont un cadre central, flexible et modulaire utilisé pour gérer les politiques d'authentification du système et faciliter l'authentification des utilisateurs. PAM fournit une interface de programmation d'application (API) générale à laquelle les programmes d'octroi de privilèges se réfèrent pour l'authentification des utilisateurs.

Le flux d'authentification PAM est le suivant :
Application (login, ssh, sudo, su, ftp, etc.) -> PAM -> Source d'authentification (mot de passe local, LDAP, Kerberos, etc.)

PAM sépare les tâches d'authentification en quatre groupes de gestion :

  • Gestion du compte – vérifier l'autorisation de l'utilisateur au service, l'expiration du mot de passe de l'utilisateur, etc.
  • Gestion de l'authentification – authentification de l'utilisateur, informations d'identification de l'utilisateur, défi/réponse (mot de passe), biométrie.
  • Gestion des mots de passe – facilite la gestion des mots de passe – changement, mises à jour, etc.
  • Gestion des sessions – tâches de connexion au service avant/après l'utilisateur, par ex. piste d'audit, monter le répertoire personnel de l'utilisateur, etc.

Module PAM pam_cracklib

Lorsqu'il est ajouté à la pile de mots de passe PAM, le module pam_cracklib effectue une vérification de la force des mots de passe utilisateur proposés. Le module appelle la routine cracklib qui compare les mots de passe à un dictionnaire de mots connus (communs, faibles, par défaut, etc.) avant d'effectuer d'autres vérifications de force, telles que :

  • Palindrome :Le nouveau mot de passe est-il un palindrome, c'est-à-dire une chaîne qui lit la même chose en arrière et en avant, par ex. radar, madame, etc.
  • Changement de cas uniquement  :Le nouveau mot de passe est-il le même que l'ancien avec seulement un changement de casse ?
  • Similaire  :Le nouveau mot de passe ressemble-t-il trop à l'ancien ?
  • Simple :Le nouveau mot de passe est-il trop petit ? Ceci est contrôlé par 6 arguments :minlen , maxclassrepeat , dcredit , ucredit , lcrédit , et ocredit .
  • Pivoté  :Le nouveau mot de passe est-il une version alternée de l'ancien mot de passe ?
  • Déjà utilisé :Le mot de passe a-t-il déjà été utilisé ?
  • Mêmes caractères consécutifs  :vérification facultative des mêmes caractères consécutifs.
  • Contient le nom d'utilisateur :Vérifiez en option si le mot de passe contient le nom de l'utilisateur.

Lorsqu'elles sont activées sans arguments, les options/valeurs de vérification de la force pam_cracklib par défaut permettent de s'assurer que des mots de passe suffisamment sécurisés sont acceptés.

Le système de crédit pam_cracklib

Le module pam_cracklib offre diverses options dont les suivantes contrôlent directement la complexité du mot de passe :

  • minlen – Longueur minimale du mot de passe
  • lcrédit – Nombre minimum de lettres minuscules
  • ucredit – Nombre minimum de lettres majuscules
  • dcredit – Nombre minimum de caractères numériques
  • ocrédit – Nombre minimum de caractères non alphanumériques

Le minlen L'option définit la taille minimale acceptable pour un nouveau mot de passe. Cependant, en plus du nombre de caractères, un crédit (c'est-à-dire un score) est attribué pour chaque type de caractère différent utilisé, c'est-à-dire inférieur, supérieur, chiffre, autre. La valeur de crédit de chaque type de caractère utilisé compte pour atteindre la valeur minlen définie.

lcredit=N :(N>=0) C'est le crédit maximum pour avoir des lettres minuscules dans le nouveau mot de passe. Si vous avez moins de ou N lettres minuscules, chaque lettre comptera +1 pour atteindre la valeur minlen actuelle. La valeur par défaut pour lcredit est 1, qui est la valeur recommandée pour minlen inférieur à 10.

(N <0) Il s'agit du nombre minimum de lettres minuscules à respecter pour un nouveau mot de passe.

ucredit=N :(N>=0) C'est le crédit maximum pour avoir des lettres majuscules dans le nouveau mot de passe. Si vous avez moins de ou N lettres majuscules, chaque lettre comptera +1 pour atteindre la valeur minlen actuelle. La valeur par défaut pour ucredit est 1, qui est la valeur recommandée pour minlen inférieur à 10.

(N <0) Il s'agit du nombre minimum de lettres majuscules à respecter pour un nouveau mot de passe.

dcredit=N (N>=0) C'est le crédit maximum pour avoir des chiffres dans le nouveau mot de passe. Si vous avez moins de ou N chiffres, chaque chiffre comptera +1 pour atteindre la valeur minlen actuelle. La valeur par défaut pour dcredit est 1, qui est la valeur recommandée pour minlen inférieur à 10.

(N <0) Il s'agit du nombre minimum de chiffres à respecter pour un nouveau mot de passe.

ocredit=N :(N>=0) C'est le crédit maximum pour avoir d'autres caractères dans le nouveau mot de passe. Si vous avez moins de ou N autres caractères, chaque caractère comptera +1 pour atteindre la valeur minlen actuelle. La valeur par défaut pour ocredit est 1, qui est la valeur recommandée pour minlen inférieur à 10.

(N <0) Il s'agit du nombre minimum d'autres caractères à respecter pour un nouveau mot de passe.

Lors de l'utilisation du système de crédit PAM, il est tout à fait possible qu'un mot de passe d'une longueur inférieure à celle définie par minlen soit accepté, c'est-à-dire que le mot de passe peut également contenir des caractères d'un ou plusieurs types de caractères - inférieur, supérieur, chiffre, autre.

Considérez la configuration pam_cracklib suivante :

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

Voici le calcul du crédit de mot de passe pam_cracklib pour un mot de passe utilisateur de "@1Bcdef2":

  • @1Bcdef2 :8 crédits attribués soit un pour chaque personnage
  • @ :1 crédit attribué (autre)
  • 1,2 :1 crédit attribué (chiffre)
  • B :1 crédit attribué (supérieur)
  • cdef :1 crédit attribué (inférieur)

8 + 4 =12 (minlen)

Compte tenu du nombre et du type de caractères utilisés dans le mot de passe ci-dessus, le système accepte une longueur minimale de mot de passe de 8 caractères. Notez qu'un mot de passe contenant uniquement 11 lettres minuscules sera également accepté, c'est-à-dire :

  • abcdefghijk :11 crédits attribués - un pour chaque personnage
  • abcdefghijk :0 crédit accordé (autre)
  • abcdefghijk :0 crédit accordé (chiffre)
  • abcdefghijk :0 crédit accordé (supérieur)
  • abcdefghijk :1 crédit accordé (inférieur)

11 + 1 =12 (minlen)

Voici des exemples détaillés de mots de passe acceptés et non acceptés :

minlen Mot de passe Longueur du mot de passe (caractères) Crédit Mot de passe accepté ?
10 qwertasdf 9 9 (caractères) + 1 (inférieur) =10 Oui
12 qwertasdfgz 11 11 (caractères) + 1 (inférieur) =12 Oui
14 qwertasdfgzxc 13 13 (caractères) + 1 (inférieur) =14 Oui
14 qwertasdf1$ 11 11 (caractères) + 1 (inférieur) + 1 (chiffre) + 1 (autre) =14 Oui
10 qwertasd 8 8 (caractères) + 1 (inférieur) =  9 Non
12 qwertasdfg 10 10 (caractères) + 1 (inférieur) =11 Non
14 qwertasdfgzx 12 12 (caractères) + 1 (inférieur) =13 Non

Application de la complexité des mots de passe avec le système de crédit pam_cracklib

Dans tous les exemples jusqu'à présent, notez que l'utilisation du système de crédit n'impose pas réellement la complexité du mot de passe. Pour appliquer la complexité du mot de passe, spécifiez des valeurs négatives pour les options pam_cracklib lcredit, ucredit, dcredit, ocredit. Lorsque vous spécifiez des valeurs négatives, les crédits ne sont pas attribués pour l'utilisation de caractères inférieurs, supérieurs, numériques et autres, mais le mot de passe doit toujours contenir des caractères de chacun des groupes de caractères spécifiés.

Considérez la configuration pam_cracklib suivante :

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

Avec ce qui précède, un mot de passe utilisateur réussi doit …

  • comporter au moins 8 caractères et
  • contiennent au moins 1 caractère minuscule et
  • contiennent au moins 1 caractère majuscule et
  • contiennent au moins 2 chiffres et
  • contenir au moins 1 autre caractère

Remarque :CentOS/RHEL 7 utilise pam_pwquality module au lieu de pam_cracklib et le module pam_pwquality est rétrocompatible avec ses options.

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. Comment configurer le système CentOS/RHEL 6 pour ne pas utiliser les 3 derniers mots de passe utilisés

  2. Comment désactiver ACPI dans CentOS/RHEL 7

  3. "BAD PASSWD :est trop simple" - erreur lors du changement de mot de passe dans CentOS/RHEL 7 et 8

  4. Comment appliquer la complexité du mot de passe pour tous les utilisateurs, y compris "root", en utilisant le module PAM "passwdqc" CentOS/RHEL

  5. Comment configurer l'expiration du mot de passe et les exigences de complexité dans CentOS/RHEL

RHEL 8 / CentOS 8 récupèrent le mot de passe root

Comment installer ONLYOFFICE sur Red Hat Linux (RHEL) et CentOS

Comment installer Cockpit sur CentOS 8 / RHEL 8

Comment vérifier et réparer le système de fichiers XFS dans RHEL/Centos

CentOS / RHEL 7 :Comment réinitialiser le mot de passe root

CentOS / RHEL 7 :processus de démarrage