Comment forcer les utilisateurs à changer leurs mots de passe sous Linux
Les mots de passe constituent la pierre angulaire de la sécurité des comptes. Cet article explore les méthodes de réinitialisation des mots de passe, la configuration de leur expiration et l'application des changements sur un réseau Linux.
L'histoire du mot de passe : Près de 60 ans
Depuis le milieu des années 60, le mot de passe est utilisé pour confirmer l'identité auprès des ordinateurs. Cette innovation a émergé avec le système de partage de temps compatible du Massachusetts Institute of Technology. Ce système nécessitait un moyen d'authentifier les utilisateurs et de protéger leurs fichiers.
Fernando J. Corbató a introduit le concept d'un nom d'utilisateur unique associé à un mot de passe privé. Ce dernier sert de preuve d'identité pour accéder à un compte.
Le principe du mot de passe est simple : quiconque détient la clé peut l'utiliser. Si un mot de passe est découvert, deviné ou piraté, l'accès au compte est compromis. En attendant que l'authentification multifacteur devienne universelle, le mot de passe reste la première barrière contre les acteurs malveillants.
Bien que les connexions SSH puissent utiliser des clés SSH au lieu de mots de passe, cette méthode n'est pas applicable aux connexions locales.
Il est donc crucial de gérer efficacement les mots de passe, ainsi que les utilisateurs qui les emploient.
Ce qui définit un bon mot de passe
Un mot de passe de qualité doit répondre à plusieurs critères :
- Il doit être impossible à deviner.
- Il ne doit pas avoir été utilisé ailleurs.
- Il ne doit pas avoir été divulgué lors d'une violation de données.
La base de données "Ai-je été pwned" (HIBP) contient plus de 10 milliards d'identifiants compromis. La probabilité qu'un mot de passe soit déjà utilisé par d'autres est donc élevée, même si le compte en question n'a pas été piraté.
Un mot de passe présent sur HIBP est une cible facile pour les attaques par force brute et par dictionnaire.
Un mot de passe vraiment aléatoire (tel que 4HW@HpjDBr%*Wt@#b~aP) est très difficile à pirater mais difficile à mémoriser. L'utilisation d'un gestionnaire de mots de passe est fortement recommandée pour les comptes en ligne. Il génère des mots de passe complexes et aléatoires, que vous n'avez pas besoin de retenir.
Pour les comptes locaux, chaque utilisateur doit créer son propre mot de passe, en suivant une politique de mot de passe. Cela implique d'utiliser un certain nombre de caractères, de mélanger majuscules et minuscules, et d'inclure des symboles.
Selon une étude récente de l'Université Carnegie Mellon, la longueur (au moins 12 caractères) et la force du mot de passe sont les facteurs déterminants. La force étant mesurée à l'aide de logiciels de piratage, de statistiques et de réseaux de neurones.
Pour atteindre une telle longueur, on peut utiliser une phrase de passe de trois ou quatre mots indépendants, séparés par de la ponctuation.
Par exemple, le vérificateur de mot de passe Experte estime que le mot de passe "chicago99" peut être piraté en 42 minutes, tandis que "cheminée.sac.violet" nécessiterait 400 milliards d'années. Ce dernier est facile à retenir et à saisir, tout en contenant 18 caractères.
Vérification des paramètres actuels
Avant de modifier les paramètres d'un mot de passe, il est conseillé de consulter son état actuel. La commande passwd permet de visualiser les paramètres via l'option -S (statut). L'utilisation de sudo est nécessaire pour modifier les mots de passe d'autres utilisateurs.
Voici un exemple de commande :
sudo passwd -S mary
La sortie affiche une ligne d'informations structurées :

Voici les éléments affichés :
- Le nom d'utilisateur.
- Un indicateur :
P: Le mot de passe est valide.L: Le compte est verrouillé par l'administrateur.NP: Aucun mot de passe n'est défini.
- La date de dernière modification du mot de passe.
- L'âge minimum du mot de passe (en jours).
- L'âge maximum du mot de passe (en jours).
- La période d'avertissement avant expiration (en jours).
- La période d'inactivité du mot de passe (en jours).
Définition de l'âge maximum du mot de passe
Pour définir une période d'expiration du mot de passe, utilisez l'option -x (jours maximum) suivie du nombre de jours, sans espace. Exemple :
sudo passwd -x45 mary

Un message de confirmation confirme que l'expiration du mot de passe a été mise à jour :

Vous pouvez vérifier le nouveau paramètre avec l'option -S :
sudo passwd -S mary

Dans cet exemple, le mot de passe devra être changé dans 45 jours. L'utilisateur recevra des notifications 7 jours avant la date d'expiration. Si le mot de passe n'est pas changé à temps, le compte sera verrouillé.
Application d'un changement de mot de passe immédiat
L'option -e (expire) permet de forcer un utilisateur à changer son mot de passe lors de sa prochaine connexion. Exemple :
sudo passwd -e mary

Le message confirme la modification de l'expiration du mot de passe :

La vérification avec l'option -S révèle que la date de dernière modification est passée au 1er janvier 1970. L'utilisateur devra changer son mot de passe lors de sa prochaine connexion, en fournissant son mot de passe actuel :
sudo passwd -S mary


Faut-il imposer des changements de mot de passe ?
Autrefois, forcer les utilisateurs à changer régulièrement de mot de passe était considéré comme une mesure de sécurité essentielle. Cependant, cette vision a changé.
Le Centre national de cybersécurité du Royaume-Uni et le National Institute of Standards and Technology des États-Unis déconseillent les renouvellements réguliers de mots de passe, sauf en cas de suspicion de compromission.
En effet, les changements de mots de passe fréquents peuvent encourager l'utilisation de mots de passe faibles. Les utilisateurs ont tendance à réutiliser des mots de passe de base en y ajoutant une date ou un chiffre. Ils peuvent aussi les écrire, car ils sont souvent oubliés.
Ces organisations recommandent plutôt :
- D'utiliser un gestionnaire de mots de passe, pour les comptes en ligne et locaux.
- D'activer l'authentification à deux facteurs, chaque fois que possible.
- D'utiliser une phrase de passe forte, comme alternative pour les comptes incompatibles avec un gestionnaire de mots de passe.
- De ne jamais réutiliser un mot de passe, en évitant ceux répertoriés sur "Ai-je été pwned".
Il est préférable de modifier un mot de passe uniquement en cas de suspicion de compromission. Dans certains cas, cette décision peut être imposée par la politique de l'entreprise.
La commande chage
La commande chage sert à modifier les paramètres d'expiration des mots de passe. Son option -l (liste) affiche les mêmes informations que passwd -S, mais de manière plus lisible. Exemple :
sudo chage -l eric

L'option -E (expiration) permet de définir une date d'expiration pour un compte. Par exemple, pour expirer un compte au 30 novembre 2020 :
sudo chage eric -E 2020-11-30

On vérifie ensuite :
sudo chage -l eric

La date d'expiration du compte est désormais fixée au 30 novembre 2020.
L'option -M (jours maximum) permet de définir la durée de validité d'un mot de passe, avant que celui-ci ne soit expiré. Exemple :
sudo chage -M 45 mary

On vérifie ensuite avec l'option -l :
sudo chage -l mary

Le mot de passe doit être changé dans 45 jours à compter de sa définition.
Modification des mots de passe sur un réseau
Les paramètres par défaut des mots de passe (jours minimum, maximum et d'avertissement) sont définis dans le fichier /etc/login.defs. On peut le modifier avec la commande suivante :
sudo gedit /etc/login.defs

Les paramètres de vieillissement du mot de passe se trouvent à cet endroit :

Les modifications apportées à ce fichier seront appliquées aux nouveaux comptes. Pour modifier l'expiration des mots de passe des comptes existants, on peut utiliser un script. Il faut créer un fichier nommé "password-date.sh" :
sudo gedit password-date.sh

Voici le contenu du script :
#!/bin/bash reset_days=28 for username in $(ls /home) do sudo chage $username -M $reset_days echo $username password expiry changed to $reset_days done
Ce script définit l'expiration des mots de passe à 28 jours. La variable reset_days peut être ajustée selon les besoins. Il faut d'abord rendre le script exécutable :
chmod +x password-date.sh

On peut ensuite l'exécuter :
sudo ./password-date.sh

Le script traite tous les comptes utilisateurs :

On peut vérifier la modification avec la commande suivante pour l'utilisateur "mary" :
sudo change -l mary

L'expiration du mot de passe est maintenant réglée à 28 jours, ce qui donne le 21 novembre 2020 comme date d'échéance. On peut adapter ce script pour ajouter d'autres commandes chage ou passwd. La gestion des mots de passe est un aspect crucial de la sécurité. Cet article vous fournit les outils nécessaires pour en assurer le contrôle.