Création d'une politique de mot de passe sous Linux

Bonjour encore! Les cours commenceront demain dans le nouveau groupe du cours Administrateur Linux , et à cet égard, nous publions un article utile sur le sujet.



Dans le dernier tutoriel, nous avons pam_cracklib comment utiliser pam_cracklib pour compliquer les mots de passe sur les systèmes Red Hat 6 ou CentOS. Dans Red Hat 7, pam_pwquality remplacé cracklib comme module pam pour la vérification des mots de passe. Le module pam_pwquality également pris en charge sur Ubuntu et CentOS, ainsi que sur de nombreux autres systèmes d'exploitation. Ce module facilite la création de politiques de mot de passe pour s'assurer que les utilisateurs acceptent vos normes de complexité de mot de passe.

Pendant longtemps, l'approche habituelle des mots de passe consistait à forcer l'utilisateur à utiliser des majuscules et des minuscules, des chiffres ou d'autres caractères. Ces règles de base sur la complexité des mots de passe ont été activement promues au cours des dix dernières années. Il y a eu beaucoup de discussions pour savoir si c'est une bonne pratique ou non. Le principal argument contre la création de conditions aussi difficiles était que les utilisateurs écrivent des mots de passe sur papier et les stockent de manière non sécurisée.

Une autre politique récemment remise en cause oblige les utilisateurs à changer de mot de passe tous les x jours. Plusieurs études ont été menées qui ont montré que cela est également préjudiciable à la sécurité.

De nombreux articles ont été écrits sur le sujet de ces discussions qui justifient tel ou tel point de vue. Mais ce n'est pas ce que nous allons discuter dans cet article. Cet article vous expliquera comment définir correctement la complexité du mot de passe et ne pas gérer la stratégie de sécurité.

Paramètres de stratégie de mot de passe

Ci-dessous, vous verrez les paramètres de stratégie de mot de passe et 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 stratégies à partir de l'ancien système.

  • difok - Le nombre de caractères dans votre nouveau mot de passe qui ne devraient PAS être présents dans votre ancien mot de passe. (La valeur par défaut est 5)
  • minlen - La longueur minimale du mot de passe. (La valeur par défaut est 9)
  • ucredit - Le nombre maximum de crédits pour l'utilisation de caractères majuscules (si paramètre> 0), ou le nombre minimum requis de caractères majuscules (si paramètre <0). La valeur par défaut est 1.
  • lcredit - Le nombre maximum de crédits pour l'utilisation de caractères minuscules (si paramètre> 0), ou le nombre minimum requis de caractères minuscules (si paramètre <0). La valeur par défaut est 1.
  • dcredit - Le nombre maximum de crédits pour l'utilisation de chiffres (si paramètre> 0), ou le nombre minimum requis de chiffres (si paramètre <0). La valeur par défaut est 1.
  • ocredit - Le nombre maximum de crédits pour l'utilisation d'autres symboles (si paramètre> 0), ou le nombre minimum requis d'autres symboles (si paramètre <0). La valeur par défaut est 1.
  • minclass - Définit le nombre de classes requises. Les classes incluent les paramètres ci-dessus (majuscules, minuscules, nombres, autres caractères). La valeur par défaut est 0.
  • maxrepeat - Le nombre maximum de fois qu'un caractère est répété dans un mot de passe. La valeur par défaut est 0.
  • maxclassrepeat - Le nombre maximum de caractères consécutifs dans une même classe. La valeur par défaut est 0.
  • gecoscheck - Vérifie si le mot de passe contient des mots des lignes GECOS de l'utilisateur. (Informations utilisateur, c'est-à-dire nom réel, emplacement, etc.) Par défaut 0 (désactivé).
  • dictpath - Permet de cracker les dictionnaires.
  • badwords - Mots séparés par des espaces qui sont interdits dans les mots de passe (nom de l'entreprise, mot "mot de passe", etc.).

Si le concept de prêt semble étrange, ça va, ça va. Nous en parlerons plus en détail dans les sections suivantes.

Configuration de la politique de mot de passe

Avant de commencer à modifier les fichiers de configuration, il est recommandé de pré-écrire la stratégie de base de mot de passe. Par exemple, nous utiliserons les règles de complexité suivantes:

  • Le mot de passe doit avoir une longueur minimale de 15 caractères.
  • Dans le mot de passe, le même caractère ne doit pas être répété plus de deux fois.
  • Dans un mot de passe, les classes de caractères peuvent être répétées 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.
  • Activez la validation GECOS.
  • Refuser les mots "mot de passe, passe, mot, putorius"

Désormais, dès que nous avons défini la politique, nous pouvons modifier le fichier /etc/security/pwquality.conf pour renforcer les exigences de complexité des mots de passe. Voici un exemple de fichier de 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 l'avez peut-être remarqué, certains paramètres de notre fichier sont redondants. Par exemple, le paramètre minclass redondant, car nous utilisons déjà au moins deux caractères de la classe en utilisant les champs de [u,l,d,o]credit . Notre liste de mots qui ne peuvent pas être utilisés est également redondante, 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 options uniquement pour montrer comment les utiliser pour configurer une politique de mot de passe.
Une fois que vous avez créé votre stratégie, vous pouvez forcer les utilisateurs à modifier leur mot de passe lors de leur prochaine connexion.

Une autre chose étrange que vous avez pu remarquer est que les champs de [u,l,d,o]credit contiennent un nombre négatif. En effet, les nombres supérieurs ou égaux à 0 donneront le crédit d'utiliser le caractère dans votre mot de passe. Si le champ contient un nombre négatif, cela signifie qu'un certain montant est requis.

Quels sont les prêts?

Je les appelle des prêts, car ils expriment précisément leur objectif. Si la valeur du paramètre est supérieure à 0, vous ajoutez le 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 définis sur 1 et que la longueur de mot de passe requise est 6, vous aurez besoin de 6 caractères pour satisfaire à la longueur requise, car chaque caractère est en majuscule, minuscule, chiffre ou autre caractère vous accordera un prêt.

Si vous définissez dcredit sur 2, vous pourriez théoriquement pouvoir utiliser un mot de passe avec une longueur de 9 caractères et obtenir 2 crédits pour les caractères pour les nombres, et le mot de passe peut déjà être 10.

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

 $ pwscore Thisistwelve Password quality check failed: The password is shorter than 13 characters $ pwscore Th1sistwelve 18 

Ma première vérification a échoué car le mot de passe comptait moins de 13 caractères. La prochaine fois, j'ai changé la lettre «I» en «1» et j'ai reçu deux crédits pour les chiffres, ce qui équivaut à 13 pour le mot de passe.

Test de mot de passe

Le package libpwquality fournit les fonctionnalités décrites dans l'article. Il est également livré avec le 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 prêts.

L'utilitaire pwscore lit à partir de stdin . Exécutez simplement l'utilitaire et écrivez votre mot de passe, il donnera une erreur ou une valeur de 0 à 100.

Le score de qualité du mot de passe est lié au paramètre minlen dans le fichier de configuration. En général, un indicateur inférieur à 50 est considéré comme un «mot de passe normal» et surtout comme un «mot de passe fort». Tout mot de passe qui réussit les contrôles de qualité (en particulier les contrôles forcés de cracklib ) doit résister aux attaques par dictionnaire, et un mot de passe avec un score supérieur à 50 avec le paramètre minlen par défaut minlen même une brute force .

Conclusion

La configuration de pwquality est pwquality et facile par rapport à l'inconvénient d'utiliser cracklib avec l'édition directe de fichiers pam . Dans ce guide, nous avons couvert tout ce dont vous avez besoin pour configurer des politiques de mot de passe sur Red Hat 7, CentOS 7 et même les systèmes Ubuntu. Nous avons également parlé du concept de prêt, qui est rarement écrit en détail, de sorte que ce sujet est souvent resté incompréhensible pour ceux qui ne l'avaient pas rencontré auparavant.

Sources:

page de manuel pwquality
page de manuel de pam_pwquality
page de manuel pwscore

Liens utiles:

Choisir des mots de passe sécurisés - Bruce Schneier
Lorrie Faith Cranor discute de ses études sur les mots de passe à la CMU
Le dessin animé infâme de xkcd sur Entropy

Source: https://habr.com/ru/post/fr448996/


All Articles