Le pire type de mot de passe n'est pas un mot de passe faible mais pas de mot de passe du tout. En tant qu'administrateur système, vous devez vous assurer que chaque compte d'utilisateur dispose d'un mot de passe fort. Ce bref tutoriel explique comment trouver des comptes d'utilisateurs avec un mot de passe vide sous Linux.
Avant d'entrer dans le sujet, récapitulons rapidement l'ombre fichier et son objectif.
Qu'est-ce qu'un fichier de mot de passe Shadow ?
Dans les systèmes RHEL, les mots de passe des utilisateurs sont hachés et stockés dans un fichier sécurisé appelé /etc/shadow
. Le fichier de mots de passe cachés contient les détails d'authentification de l'utilisateur et de vieillissement du mot de passe des comptes d'utilisateurs.
Le fichier de mot de passe caché appartient à la root
utilisateur et n'est lisible que par les super utilisateurs. Vous pouvez vérifier la propriété et l'autorisation du fichier shadow à l'aide de la commande suivante :
# ls -l /etc/shadow ---------- 1 root root 618 Apr 7 07:52 /etc/shadow
La structure typique d'un exemple de ligne du fichier shadow est donnée ci-dessous.
user1:$6$5ps/XV21$EFmQ463GJZnsdF/:19089:0:99999:7:::
Comme vous le savez peut-être déjà, le fichier fantôme contient neuf champs séparés par deux-points.
Examinons rapidement chaque champ.
- Classé 1 (nom de connexion) - Celui-ci contient le nom de connexion (user1) tel qu'il apparaît dans le
passwd
fichier. - Classé 2 (Mot de passe crypté) - Ce fichier contient le mot de passe haché (crypté) de l'utilisateur. S'il y a un seul point d'exclamation (!) au début de ce fichier, cela signifie que le compte utilisateur est verrouillé. Si ce champ est vide, l'utilisateur n'a pas de mot de passe.
- Fichier 3 (Dernière modification) - Ce champ indique le nombre de jours depuis l'époque Unix (c'est-à-dire l'heure Unix - 01 janvier 1970 00:00:00 UTC) lorsque le mot de passe a été modifié pour la dernière fois. Si ce champ contient 0, l'utilisateur est obligé de changer son mot de passe à la prochaine connexion.
- Déposé 4 (minimum) - Ce champ indique le nombre minimum de jours (mindays) qui doivent s'écouler avant que l'utilisateur soit autorisé à changer son mot de passe. Vous pouvez modifier cette valeur de champ avec
chage
commande avec-m
option. - Champ 5 (maximum) - Affiche le nombre maximum de jours (maxdays) de validité du mot de passe avant l'expiration du mot de passe de l'utilisateur. Si le champ est 0, cela signifie que cette fonctionnalité est désactivée. La valeur de ce champ peut être modifiée avec
chage
commande avec-M
option. - Classé 6 (Avertissement) - Indique le nombre de jours (warndays) pendant lesquels l'utilisateur reçoit des avertissements pour avoir changé son mot de passe avant son expiration. Vous pouvez modifier cette valeur avec
chage
commande avec-W
ou l'optionpasswd
commande avec-w
option. - Champ 7 (Expiration du mot de passe) - Définit le nombre maximal de jours autorisés pour que l'utilisateur puisse se connecter avec le mot de passe expiré. Cela peut être changé en utilisant
chage
commande avec-I
flag oupasswd
commande avec-i
drapeau. - Champ 8 (Expiration du compte) - Définit le nombre de jours depuis l'heure UNIX lorsque le compte d'utilisateur expirera et ne sera plus disponible. Vous pouvez modifier la valeur de ce champ en utilisant
chage
commande avec-E
option. - Champ 9 (Réservé) - Ce champ est réservé pour une utilisation future.
Comme mentionné ci-dessus, les mots de passe cryptés sont stockés dans le deuxième champ de chaque entrée du fichier de mots de passe cachés, juste après le nom d'utilisateur.
Ainsi, si le deuxième champ du fichier shadow est vide, l'utilisateur n'a pas de mot de passe. Permettez-moi de vous montrer un exemple pour trouver tous les comptes d'utilisateurs sans mot de passe.
Rechercher tous les comptes d'utilisateurs sans mot de passe sous Linux
Pour détecter tous les comptes d'utilisateurs locaux qui n'ont pas de mot de passe, exécutez simplement la commande suivante en tant que root
utilisateur :
# awk -F: '$2 == "" { print $1, "has empty password!. Please set a strong password ASAP!!" }' /etc/shadow
Exemple de résultat :
ostechnix has empty password!. Please set a strong password ASAP!!
Vous pouvez également utiliser getent
commande combinée avec grep
et cut
commandes pour identifier les comptes d'utilisateurs locaux sans mot de passe sous Linux.
# getent shadow | grep -Po '^[^:]*(?=::)'
Ou,
# getent shadow | grep '^[^:]*::' | cut -d: -f1
Toutes les commandes ci-dessus répertorieront uniquement les comptes d'utilisateurs locaux qui ont des mots de passe vides. Si vous souhaitez répertorier à la fois les comptes système et les comptes utilisateur avec un mot de passe vide, exécutez.
# getent shadow | grep -Po '^[^:]*(?=:.?:)'
Ou,
# getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Rechercher un compte d'utilisateur spécifique sans mot de passe
Les commandes ci-dessus listeront tous les comptes locaux et système qui n'ont pas de mot de passe. Vous pouvez également vérifier l'état du mot de passe d'un compte utilisateur spécifique en utilisant passwd
commande avec -S
drapeau.
# passwd -S ostechnix
Exemple de résultat :
ostechnix NP 2022-04-07 0 99999 7 -1 (Empty password.)
Le passwd
Les commandes indiqueront l'état du mot de passe du compte d'utilisateur donné. Les valeurs possibles sont :
- LK - Le compte utilisateur est verrouillé.
- NP - Le compte utilisateur n'a pas de mot de passe.
- PS - Le compte utilisateur a un mot de passe utilisable.
Attention : Dans les systèmes basés sur Debian, le statut du mot de passe sera noté L , N , P respectivement.
Définir le mot de passe utilisateur sous Linux
Vous pouvez vous connecter en tant qu'utilisateur sans mot de passe, c'est parfaitement bien. Cependant, ce n'est pas recommandé! Vous devez définir un mot de passe fort avec au moins 8 caractères dont une majuscule, des lettres minuscules, un caractère spécial et un chiffre.
Pour définir le mot de passe d'un compte utilisateur sous Linux, utilisez passwd
commande en tant que root
utilisateur comme ci-dessous.
En tant qu'utilisateur root :
# passwd ostechnix
Remplacez ostechnix par votre propre nom d'utilisateur.
Vérifiez maintenant l'état du mot de passe du compte utilisateur à l'aide de passwd
commande :
# passwd -S ostechnix
Exemple de résultat :
ostechnix PS 2022-04-07 0 99999 7 -1 (Password set, SHA512 crypt.)
Verrouiller les comptes utilisateur sous Linux
Parfois, vous souhaitez simplement verrouiller les comptes d'utilisateurs avec des mots de passe vides. Si c'est le cas, trouvez d'abord les utilisateurs avec des mots de passe vides comme décrit ci-dessus et verrouillez-les en utilisant passwd
commande avec -l
marquer comme root
utilisateur comme ci-dessous.
# passwd -l ostechnix
Exemple de résultat :
Locking password for user ostechnix. passwd: Success
Maintenant, vérifiez l'état du compte utilisateur :
# passwd -S ostechnix
Exemple de sortie :
ostechnix LK 2022-04-07 0 99999 7 -1 (Password locked.)
Voir? L'utilisateur a été verrouillé. Il ne peut plus se connecter au système.
Vous pouvez également utiliser le usermod
commande avec -L
(L majuscule) pour verrouiller un utilisateur.
# usermod -L ostechnix
Déverrouiller les comptes utilisateur sous Linux
Pour déverrouiller les utilisateurs sans mot de passe sous Linux, utilisez soit passwd
commande ou usermod
commande avec -p
en tant que root
utilisateur.
# passwd ostechnix
Entrez le mot de passe deux fois pour déverrouiller le mot de passe.
Déverrouillage de l'utilisateur avec un mot de passe vide avec usermod
la commande n'est pas possible, vous devez définir un mot de passe avec usermod -p
pour déverrouiller le mot de passe de l'utilisateur.
# usermod -p <password-here> ostechnix
Conclusion
Dans ce tutoriel, nous avons expliqué ce qu'est le fichier de mot de passe Shadow et le but de ce fichier sous Linux. Ensuite, nous avons discuté de diverses commandes pour trouver tous les comptes d'utilisateurs sans mot de passe sous Linux. Enfin, nous avons appris comment définir un mot de passe pour un utilisateur et également comment verrouiller et déverrouiller les utilisateurs sous Linux.