Forcer l’utilisation de mot de passe complexe

By | 30 mars 2020 |

L’utilisation d’un mot de passe complexe est l’une des première barrière de sécurité pour empêcher un accès non autorisé sur votre ordinateur ou votre serveur.
Malheureusement, si l’on laisse le choix à l’utilisateur, celui-ci sera tenté de choisir un mot de passe simple.
Cet article a pour but de forcer l’utilisateur à choisir un mot de passe complexe en refusant les mots de passe jugés trop simple.

Qu’appelle-t-on un mot de passe complexe ?

Par mot de passe complexe, on entend un password « fort », c’est à dire difficile à retrouver.
Pour que l’on considère le mot de passe comme « strong » celui-ci doit:

  • être suffisamment long, un minimum de 8 caractères
  • contenir au moins une majuscule
  • avoir au moins une minuscule
  • contenir au moins un chiffre
  • avoir au moins un caractère spécial

Ce sont les critères les plus couramment rencontrés à l’heure actuelle sur Internet lors du choix du mot de passe.

Pourquoi un mot de passe complexe

Sachez qu’aujourd’hui retrouver un mot de passe simple (seulement avec des minuscules ou des chiffres) ne prend que quelques millisecondes…

Comment forcer un mot de passe complexe

Par défaut, Linux Mint ne vous force pas à choisir un mot de passe « fort ».
Pour ce faire, nous allons installer/activer un module (pwquality) de PAM (Pluggable Authentication Modules). Pour faire court, PAM est le mécanisme qui se charge de l’authentification sur votre système Linux.
Si vous désirez plus d’information, je vous revois vers Wikipedia.

Installation du module libpam-pwquality

$ sudo apt-get install libpam-pwquality

Configuration du module

Commençons par créer une sauvegarde du fichier de configuration

$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password-backup

Nous pouvons maintenant modifier le fichier avec notre éditeur de texte préféré:

$ sudo vim /etc/pam.d/common-password

Nous allons modifier la ligne:

Password   requisite   pam_pwquality.so retry=3

Afin d’y faire apparaître nos critères de mot de passe complexe:

password   requisite   pam_pwquality.so retry=3 minlen=9 difok=4 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username enforce_for_root

Dans cet exemple, on force:

  • la longueur à 8 caractères (minlen=9)
  • un minimum de 1 minuscule (lcredit=1)
  • l’utilisation de minimum de 1 majuscule (ucredit=1)
  • un minium de 1 chiffre (dcredit=1)
  • l’utilisation de minimum 1 caractère spécial (ocredit=1)
  • le mot de passe ne peut contenir le user (reject_username)
  • cette règle est valable pour le compte « root » (enforce_for_root)
  • que maximum 4 caractères peuvent être semblable au dernier mot de passe (difok=4)

Pour les critères lcredit, ucredit, dcredit, ocredit la valeur est bien négative « 1″, on veut au moins 1 caractère, il peut y en avoir plus.
Une valeur positive « 1 » ou « +1 » signifie maximum 1 (il peut donc ne pas y en avoir).
Je vous invite à lire la documentation pour plus d’information sur les différents réglages.
On peut, par exemple, rassembler tous les paramètres « xcredit » en un seul « minclass » si l’on utilise la même valeur pour tous (comme dans l’exemple plus haut), ce qui devient:

password   requisite   pam_pwquality.so retry=3 minlen=9 difok=4 minclass=1 reject_username enforce_for_root

Ou encore ajouter une liste de mot de passe que l’on refuse, refuser les répétition « aaaa », « bbb », … bref plein de possibilités.
Une fois votre configuration terminée, il ne vous reste plus qu’à redémarrer pour que cette nouvelle configuration soit prise en compte.

Comment vérifier

Cette stratégie ne sera appliquée qu’aux nouveaux mots de passe.
Le plus simple est de créer un nouvel utilisateur, par exemple « testuser »

$ sudo useradd testuser

et de tenter de lui assigner un mot de passe:

$ sudo passwd testuser

Si le mot de passe ne correspond pas à vos critères celui-ci sera refusé, par exemple si j’essaie d’assigner le mot de passe « abcd »

Test Assignment mot de passe complexe
Test Assignment mot de passe complexe

On voit que le mot de passe est refusé, le message ne donne qu’une erreur, même si plusieurs critères ne sont pas respectés.
Si j’ajoute le chiffre par exemple « abc1 », je vais recevoir un message qu’il n’y a pas de majuscule..
Et ainsi de suite jusque quand mon mot de passe couvrira tous les critères définis plus haut.

A la fin du test, on peut évidemment supprimer cet utilisateur

$ sudo userdel testuser

Pour aller plus loin

Il ne suffit pas d’avoir un mot de passe complexe, idéalement il faudrait aussi le changer régulièrement, dans un prochain article je décrirai la procédure pour forcer l’expiration des mots de passe.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.