Création de politiques de mots de passe sous Linux

Bonjour à nouveau ! Les cours du nouveau groupe commencent dès demain. « Administrateur Linux », c'est pourquoi nous publions un article utile sur le sujet.

Création de politiques de mots de passe sous Linux

Dans le tutoriel précédent, nous avons expliqué comment utiliser pam_cracklib, pour renforcer les mots de passe dans les systèmes Red Hat 6 ou CentOS. Dans Red Hat 7, pam_pwquality a remplacé cracklib comme pam module par défaut pour la vérification des mots de passe. Le module pam_pwquality est également pris en charge dans Ubuntu et CentOS, ainsi que dans de nombreux autres systèmes d'exploitation. Ce module facilite la création de politiques de mots de passe pour s'assurer que les utilisateurs respectent vos normes de complexité.

Pendant longtemps, l'approche conventionnelle concernant les mots de passe était d'obliger l'utilisateur à utiliser des majuscules, des minuscules, des chiffres ou d'autres symboles. Ces règles de base sur la complexité des mots de passe ont été largement promues au cours des dix dernières années. De nombreux débats ont eu lieu pour déterminer si c'était une bonne pratique. L'un des principaux arguments contre l'imposition de telles conditions rigoureuses était que les utilisateurs écrivent leurs mots de passe sur des morceaux de papier et les conservent de manière peu sécurisée.

Une autre politique qui a récemment été remise en question oblige les utilisateurs à changer leurs mots de passe tous les x jours. Des recherches ont montré que cela pouvait également nuire à la sécurité.

De nombreux articles ont été écrits sur ces débats, justifiant l'une ou l'autre position. Mais ce n'est pas le sujet de cet article. Cet article expliquera comment définir correctement la complexité des mots de passe, plutôt que de gérer la politique de sécurité.

Paramètres de la politique des mots de passe

Vous trouverez ci-dessous les paramètres de la politique des mots de passe, ainsi qu'une brève description de chacun d'eux. Beaucoup d'entre eux sont similaires aux paramètres du module cracklib. Cette approche facilite le portage de vos politiques depuis un ancien système.

  • difok – Nombre de caractères dans votre nouveau mot de passe qui NE doivent PAS être présents dans votre ancien mot de passe. (Par défaut 5)
  • minlen – Longueur minimale du mot de passe. (Par défaut 9)
  • ucredit – Nombre maximal de crédits pour l'utilisation de lettres en majuscule (si le paramètre > 0), ou le nombre minimal requis de lettres en majuscule (si le paramètre < 0). Par défaut 1.
  • lcredit — Nombre maximal de crédits pour l'utilisation de caractères minuscules (si le paramètre > 0), ou nombre minimum requis de caractères minuscules (si le paramètre < 0). Par défaut 1.
  • dcredit — Nombre maximal de crédits pour l'utilisation de chiffres (si le paramètre > 0), ou nombre minimum requis de chiffres (si le paramètre < 0). Par défaut 1.
  • ocredit — Nombre maximal de crédits pour l'utilisation d'autres caractères (si le paramètre > 0), ou nombre minimum requis d'autres caractères (si le paramètre < 0). Par défaut 1.
  • minclass – Définit le nombre de classes requises. Les classes incluent les paramètres ci-dessus (caractères majuscules, minuscules, chiffres, autres caractères). Par défaut 0.
  • maxrepeat – Nombre maximal de répétitions d'un caractère dans le mot de passe. Par défaut 0.
  • maxclassrepeat — Nombre maximal de caractères consécutifs dans une seule classe. Par défaut 0.
  • gecoscheck – Vérifie si le mot de passe contient des mots issus des chaînes GECOS de l'utilisateur. (Informations sur l'utilisateur, c'est-à-dire nom réel, emplacement, etc.) Par défaut 0 (désactivé).
  • dictpath – Chemin vers les dictionnaires cracklib.
  • badwords – Mots interdits dans les mots de passe, séparés par des espaces (Nom de l'entreprise, le mot « mot de passe » etc.).

Si le concept de crédits semble étrange, ne vous inquiétez pas, c'est normal. Nous en parlerons plus en détail dans les sections suivantes.

Configuration de la politique des mots de passe

Avant de commencer à modifier les fichiers de configuration, il est conseillé de noter au préalable la politique de mots de passe de base. Par exemple, nous allons utiliser les règles de complexité suivantes :

  • Le mot de passe doit avoir une longueur minimale de 15 caractères.
  • Un même caractère ne doit pas apparaître plus de deux fois dans le mot de passe.
  • Les classes de caractères dans le mot de passe peuvent se répéter jusqu'à quatre fois.
  • Le mot de passe doit contenir des caractères de chaque classe.
  • Le nouveau mot de passe doit avoir 5 nouveaux caractères par rapport à l'ancien.
  • Activer la vérification GECOS.
  • Interdire les mots « password, pass, word, putorius »

Maintenant que nous avons exposé la politique, nous pouvons modifier le fichier /etc/security/pwquality.conf, afin de renforcer les exigences de complexité du mot de passe. Ci-dessous un exemple de fichier avec des commentaires pour une meilleure compréhension.

# 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 putorius

Comme vous avez pu le constater, certains paramètres dans notre fichier sont redondants. Par exemple, le paramètre minclass est excessif, car nous utilisons déjà au moins deux caractères de classe en utilisant des champs [u,l,d,o]credit. Notre liste de mots interdits est également excessive, car nous avons interdit la répétition de toute classe 4 fois (tous les mots de notre liste sont écrits en minuscules). J'ai inclus ces paramètres uniquement pour démontrer comment les utiliser pour configurer la politique de mot de passe.
Une fois que vous avez créé votre politique, vous pouvez obliger les utilisateurs à changer leurs mots de passe lors de leur prochaine connexion à système.

Une autre chose étrange que vous avez peut-être remarquée est que les champs [u,l,d,o]credit contiennent un nombre négatif. C'est parce que les nombres supérieurs ou égaux à 0 donneront un crédit pour l'utilisation d'un caractère dans votre mot de passe. Si un champ contient un nombre négatif, cela signifie qu'un certain nombre est requis.

Qu'est-ce que le crédit (credit) ?

Je les appelle des crédits, car cela reflète le mieux leur fonction. Si la valeur d'un paramètre est supérieure à 0, vous ajoutez un nombre de « crédits par caractère » égal à « x » à la longueur du mot de passe. Par exemple, si tous les paramètres (u,l,d,o)credit sont réglés à 1, et la longueur de mot de passe requise était de 6, alors vous aurez besoin de 6 caractères pour satisfaire l'exigence de longueur, car chaque caractère majuscule, minuscule, chiffre ou autre symbole vous donnera un crédit.

Si vous définissez dcredit à 2, vous pourrez théoriquement utiliser un mot de passe de 9 caractères et obtenir 2 crédits par caractère pour les chiffres, ce qui signifie que la longueur du mot de passe pourrait alors être de 10.

Regardez cet exemple. J'ai défini la longueur du mot de passe à 13, défini dcredit à 2, et tout le reste à 0.

$ pwscore
 Thisistwelve
 Vérification de la qualité du mot de passe échouée:
  Le mot de passe est plus court que 13 caractères

$ pwscore
 Th1sistwelve
 18

Mon premier test a échoué, car la longueur du mot de passe était inférieure à 13 caractères. La fois suivante, j'ai remplacé la lettre “I” par le chiffre “1” et j'ai obtenu deux crédits pour les chiffres, ce qui a porté la longueur du mot de passe à 13.

Test de mot de passe

Package libpwquality fournit la fonctionnalité décrite dans l'article. Il est également livré avec un programme pwscore, qui est conçu pour vérifier la complexité du mot de passe. Nous l'avons utilisé ci-dessus pour vérifier les crédits.
Utilitaire pwscore lit à partir de stdin. Il suffit de lancer l'utilitaire et d'entrer votre mot de passe, il renverra une erreur ou une valeur de 0 à 100.

L'indice de qualité du mot de passe correspond au paramètre minlen dans le fichier de configuration. En général, un score inférieur à 50 est considéré comme un « mot de passe normal », tandis qu'un score supérieur est considéré comme un « mot de passe fort ». Tout mot de passe qui réussit les tests de qualité (en particulier le contrôle de qualité obligatoire cracklib) doit résister aux attaques par dictionnaire, et un mot de passe ayant un score supérieur à 50 avec la configuration minlen par défaut même brute force attaques.

Conclusion

Configuration pwquality – c'est facile et simple par rapport aux inconvénients liés à l'édition directe des fichiers cracklib . Dans ce guide, nous avons passé en revue tout ce dont vous aurez besoin pour configurer des politiques de mot de passe sur Red Hat 7, CentOS 7 et même sur des systèmes Ubuntu. Nous avons également abordé le concept de crédits, rarement décrit en détail, ce qui rend souvent ce sujet difficile à comprendre pour ceux qui n'ont jamais été confrontés à cela. pampage de manuel pwquality

Sources :

page de manuel pam_pwquality
page de manuel pwscore
Choisir des mots de passe sécurisés – Bruce Schneier

Liens utiles :

Lorrie Faith Cranor discute de ses études sur les mots de passe à CMU
Le célèbre cartoon xkcd sur l'entropie
Systèmes d'exploitation : Trois morceaux faciles. Partie 4 : Introduction au planificateur (traduction)

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster