Gérer les mots de passe

Gestion de la politique de mots de passe et du (dé)verouillage des comptes.

Format

Fichier /etc/shadow

Le fichier /etc/shadow contient les mots de passe chiffrés des utilisateurs :

# cat /etc/shadow
[...]
john:$6$BxDsd3v$awt/IiD0DClCydf:13370:0:90:14:5:18100:

Signification des champs :

  • john : nom du compte
  • $6$BxDsd3v$awt/IiD0DClCydf : mdp chiffré
  • 13370 : nbres de jours depuis le dernier changement de mdp
  • 0 : nbre de jours avant que l’utilisateur puisse à nouveau changer son mdp
  • 90 : nbre de jours avant expiration du mdp. Si le champs est vide = le mdp n’expire jamais
  • 14 : nbre de jours à l’avance pour avertir l’utilisateur que son mdp expirera
  • 7 : nbre de jours d’inactivité depuis l’expiration du mdp, le compte sera ensuite verrouillé
  • 18100 : indique le jour où le compte a été désactivé (format epoch : à partir du 01/01/1970)
  • <vide> : Généralement vide, réservé pour un usage ultérieur

Mot de passe

Dans ce mot de passe chiffré : $6$DFaDkYQ5H/9RsTP/$2L8agpPboKzRjGwv2W.68Tu7I41D

  • 6 : algorithme de hachage utilisé, 6 indique du SHA-512, 1 indique du MD5, 5 indique du SHA-256
  • DFaDkYQ5H/9RsTP/ : sel (salt) utilisé pour hacher le mot de passe, choisi au hasard
  • 2L8agpPboKzRjGwv2W.68Tu7I41D : hachage du mot de passe = (salt + mot de passe en clair) => hachachage en SHA-512 = Mot de passe haché

Gestion des mots de passe

Commande date

La commande date est très utile pour calculer une date antérieure et ultérieure.

Afficher la date courrante :

# date +%F
2023-12-26

Afficher la date courrante + 10 jours :

# date -d "+10 days" +%F
2024-01-05

Commande chage

La commande chage signifie “Change Age” et permet de définir une politique de gestion des mots de passe (veillissement, date de changement, avertissement, inactivité, etc.).

Définir un âge minimum (-m) de 0 jour, un âge maximum (-M) de 30 jours, une période d’avertissement (-W) de 7 jours et une période d’inactivité (-I) de 14 jours.

# chage -m 0 -M 30 -W 7 -I 14 <username>

Repousser la date d’expiration du mot de passe à 180 jours :

# chage -E $(date -d "+180 days" +%F) <username>

Forcer un utilisateur à changer son mot de passe :

# chage -d 0 <username>

Extrait de l’aide et du manuel de chage

Change user password expiry information

The chage command changes the number of days between password changes and the date of the last password change. This information is used by the system to determine when a user must change his/her password.

Utilisation:

# chage [options] [LOGIN]

Aide :

-d, --lastday LAST_DAY                // Fixe la date du dernier changement de mdp
-E, --expiredate EXPIRE_DATE // Définir une date d'expiration du mdp
-h, --help // Affiche l'aide
-i, --iso8601 // Utilise AAAA-MM-JJ lors de l'affichage des dates
-I, --inactive INACTIVE // Définir une date d'inactivité quand la date d'expiration a été atteinte
-l, --list // Afficher les informations sur l'ancienneté du compte
-m, --mindays MIN_DAYS // Définit le nombre minimum de jours avant le changement de mdp
-M, --maxdays MAX_DAYS // Définit le nombre maximum de jours avant le changement de mdp
-R, --root CHROOT_DIR // Directory to chroot into
-W, --warndays WARN_DAYS // Définit le jour d'avertissement pour signaler l'expiration future du mdp

/!\ Résumé des commandes

Commandes :

# date -d "+90 days" +%F              // Afficher la date dans 90 jours
# chage -l <user> // Lister les informations sur le mdp
# chage -E 2023-12-31 <user> // Définir une date d'expiration du mdp
# chage -E $(date -d "+180 days" +%F) // Définir une date d'expiration du mdp
# chage -M 60 <user> // Forcer le changement du mdp tous les 60 jours
# chage -d 0 <user> // Forcer le changement du mdp à la prochaine connexion

Fichiers :

/etc/shadow           // mots de passe chiffrés des utilisateurs
/etc/login.defs // configurations des politiques de mots de passe
/var/log/secure // Log des connexions utilisateurs

Cas pratique

Repousser l’expiration du mot de passe à 90j :

[root@SERVER01 ~]# chage -M 90 paul
[root@SERVER01 ~]# chage -l paul
Last password change                                    : Sep 08, 2024
Password expires : Dec 07, 2024
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7

Forcer le changement du mdp à la prochaine connexion :

[root@SERVER01 ~]# chage -d 0 paul
[root@SERVER01 ~]# chage -l paul
Last password change                                    : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7

Vérification :

[aline@SERVER01 root]$ su paul
Password:
You are required to change your password immediately (administrator enforced).
Current password:
New password:

Changement de la politique de changement des mdp directement dans le fichier de configuration /etc/login.def. Ceci s’appliquera pour les nouveaux utilisateurs :

# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
## PASS_MAX_DAYS 99999
PASS_MAX_DAYS 180
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

Documentation

https://manpages.ubuntu.com/manpages/trusty/fr/man1/chage.1.html

> Partager <