passwd
| Formats lus | /etc/passwd (en) |
|---|---|
| Type |
Utilitaire UNIX (d) Logiciel utilitaire Logiciel de sécurité informatique (en) Utilitaire de ligne de commande (en) |
passwd est une commande disponible sur la plupart des systĂšmes d'exploitation Unix et de type Unix permettant Ă un utilisateur de changer son mot de passe. passwd est aussi le nom du fichier qui contenait les mots de passe sur ces mĂȘmes systĂšmes.
Le nouveau mot de passe entré par l'utilisateur est traité par une fonction de dérivation de clé pour créer une version hachée du nouveau mot de passe. C'est cette version hachée qui est enregistrée par le serveur. Seule la version hachée est conservée ; le mot de passe saisi par l'utilisateur n'est pas sauvegardé pour des raisons de sécurité.
Lorsque l'utilisateur se connecte au serveur, le mot de passe saisi par l'utilisateur pendant le processus de connexion est traitĂ© par la mĂȘme fonction de dĂ©rivation de clĂ© et la version hachĂ©e rĂ©sultante est comparĂ©e Ă la version sauvegardĂ©e. Si les hachages sont identiques, le mot de passe saisi est considĂ©rĂ© comme correct et l'utilisateur est authentifiĂ©. En thĂ©orie, il est possible que deux mots de passe diffĂ©rents produisent le mĂȘme hachage. Cependant, les fonctions de hachage cryptographiques utilisĂ©es comme fonction de dĂ©rivation de clĂ© sont conçues de telle sorte que trouver un mot de passe qui produit le mĂȘme hachage est trĂšs difficile et pratiquement impossible, donc si le hachage produit correspond au mĂ©morisĂ©, l'utilisateur peut ĂȘtre authentifiĂ©.
La commande passwd peut ĂȘtre utilisĂ©e pour changer les mots de passe des comptes locaux, et sur la plupart des systĂšmes, elle peut Ă©galement ĂȘtre utilisĂ©e pour changer les mots de passe gĂ©rĂ©s dans un mĂ©canisme d'authentification distribuĂ© tel que NIS, Kerberos ou LDAP.
Exemple
[modifier | modifier le code]# passwd autre_compte
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Le fichier /etc/passwd
[modifier | modifier le code]
Le fichier /etc/passwd est une base de données textuelle d'informations sur les utilisateurs qui peuvent se connecter au systÚme.
Le nom du fichier provient de l'une de ses fonctions initiales qui était de contenir les données utilisées pour vérifier les mots de passe des comptes d'utilisateurs. Toutefois, sur les systÚmes Unix modernes, les mots de passe sont enregistrés dans un autre fichier et ils y sont enregistrés dans une forme hashée.
Le fichier /etc/passwd possĂšde gĂ©nĂ©ralement des autorisations qui lui permettent d'ĂȘtre lu par tous les utilisateurs du systĂšme (lisibles dans le monde), bien qu'il ne puisse ĂȘtre modifiĂ© que par l'utilisateur root ou par certaines commandes spĂ©ciales.
Le fichier /etc/passwd est un fichier texte, chaque enregistrement décrivant un compte d'utilisateur. Chaque enregistrement se compose de sept champs séparés par un deux-points. L'ordre des enregistrements dans le fichier est généralement sans importance.
Voici un exemple d'un enregistrement :
jsmith:x:1001:1000:Joe Smith,Room 1007,(234)555-8910,(234)5550044,email:/home/jsmith:/bin/sh
Les champs, de gauche Ă droite, sont[1]Â :
- jsmith : le nom de l'utilisateur (login name). C'est la chaĂźne de caractĂšres que l'utilisateur entre lorsqu'il se connecte au systĂšme. Le nom d'utilisateur doit ĂȘtre unique dans le systĂšme.
- x : les informations utilisĂ©es pour valider le mot de passe d'un utilisateur. Dans la plupart des usages modernes, ce champ contient "x" (ou "*", ou un autre indicateur) et les informations de mot de passe Ă©tant stockĂ©es dans un fichier de mots de passe sĂ©parĂ©. Sur les systĂšmes Linux, "*" empĂȘche les connexions d'un compte tout en conservant son nom d'utilisateur, alors que "*NP*" indique d'utiliser un serveur NIS pour obtenir le mot de passe[2]. Avant le masquage du mot de passe (c'est-Ă -dire dans les premiĂšres implantations de Unix), ce champ contenait un hachage cryptographique du mot de passe de l'utilisateur (en combinaison avec un sel).
- 1001 : l'identifiant d'utilisateur. Un nombre utilisé par le systÚme d'exploitation à des fins internes. Il n'est pas nécessairement unique.
- 1000 : l'identifiant de groupe. Un nombre qui identifie le groupe principal de l'utilisateur. Tous les fichiers créés par cet utilisateur peuvent ĂȘtre initialement accessibles Ă ce groupe.
- Joe Smith,Room 1007,(234)555-8910,(234)5550044,email : le champ Gecos. Un commentaire qui décrit la personne ou le compte. Généralement, il s'agit d'un ensemble de valeurs séparées par des virgules, fournissant le nom complet de l'utilisateur et ses coordonnées.
- /home/jsmith : le chemin vers le répertoire personnel de l'utilisateur.
- /bin/sh : le programme qui est lancé chaque fois que l'utilisateur se connecte au systÚme. Pour un utilisateur interactif, il s'agit généralement d'une interface en ligne de commande.
Le fichier /etc/shadow
[modifier | modifier le code]Le fichier /etc/shadow est utilisé pour augmenter le niveau de sécurité des mots de passe. Le fichier contient une version hashée des mots de passe et seuls des utilisateurs trÚs privilégiés peuvent y avoir accÚs. Généralement, ces données sont conservées dans des fichiers appartenant à l'utilisateur root et seulement accessibles par lui.
Les administrateurs systÚme peuvent réduire la probabilité d'attaques par force brute en rendant les mots de passe hachés non accessibles par les utilisateurs non privilégiés. Une façon simple de le faire est de rendre le fichier /etc/passwd accessible uniquement par l'utilisateur root. Cependant, cela restreindrait l'accÚs à d'autres données du fichier telles que les mappages des noms d'utilisateur vers les identifiants d'utilisateur, ce qui forcerait la reprogrammation de nombreux programmes et utilitaires.
Une meilleure solution est la création d'un fichier shadow pour contenir les hachages des mots de passe séparément des autres données du fichier passwd qui est accessible à un grand nombre d'utilisateurs. Ce fichier est le fichier /etc/shadow sur les systÚmes Linux et Unix, ou le fichier /etc/master.passwd sur les systÚmes BSD. Ces fichiers ne sont lisibles que par l'utilisateur root. (L'accÚs aux mots de passe hashés par l'utilisateur root est considéré comme acceptable étant donné que sur les systÚmes dotés du modÚle traditionnel de sécurité « avec utilisateur tout-puissant », l'utilisateur root pourrait, de toute façon, obtenir l'information d'une autre maniÚre). Pratiquement tous les systÚmes d'exploitation récents de type Unix utilisent des mots de passe hachés et cachés dans un fichier shadow.
L'utilisation d'un fichier de mots de passe hachĂ©s et cachĂ©s ne bloque pas complĂštement l'accĂšs d'un attaquant aux mots de passe hachĂ©s, car certains systĂšmes d'authentification rĂ©seau fonctionnent en transmettant le mot de passe hachĂ© sur le rĂ©seau (parfois en texte clair, par exemple Telnet[3]), le rendant vulnĂ©rable aux interceptions. Les copies de donnĂ©es systĂšme, telles que les sauvegardes systĂšme Ă©crites sur bande magnĂ©tique ou sur disque optique, peuvent Ă©galement devenir un moyen d'obtenir illĂ©galement des mots de passe hachĂ©s. En outre, les fonctions utilisĂ©es par les programmes lĂ©gitimes de vĂ©rification des mots de passe doivent ĂȘtre rĂ©digĂ©es de maniĂšre que les programmes malveillants ne puissent pas effectuer un grand nombre de contrĂŽles d'authentification en une courte pĂ©riode de temps.
Peu importe que le masquage du mot de passe soit implantĂ© sur un systĂšme donnĂ©, le fichier passwd doit ĂȘtre lisible par tous les utilisateurs pour que certains utilitaires fonctionnent (par exemple, pour que l'utilitaire ls puisse afficher les noms des propriĂ©taires des fichiers d'un dossier). Cela signifie que, si le masquage n'est pas implantĂ©, un attaquant avec accĂšs non privilĂ©giĂ© au systĂšme peut obtenir la forme hachĂ©e du mot de passe de tous les utilisateurs.
Les formes hachĂ©es des mots de passe peuvent ĂȘtre utilisĂ©es pour monter une attaque par force brute hors ligne, testant les mots de passe possibles contre les mots de passe hachĂ©s relativement rapidement sans alerter les dispositifs de sĂ©curitĂ© du systĂšme conçus pour dĂ©tecter un nombre anormal de tentatives de connexion infructueuses. Surtout quand le hachage n'est pas salĂ©, il est Ă©galement possible de rechercher ces mots de passe hachĂ©s dans des rainbow tables, des bases de donnĂ©es spĂ©cialement conçues pour trouver un mot de passe Ă partir de sa forme hachĂ©e.
Lorsque le masquage du mot de passe est utilisé, le fichier /etc/passwd affiche généralement un caractÚre tel que «*» ou «x» dans le champ du mot de passe de chaque utilisateur au lieu du mot de passe haché et le fichier /etc/shadow contient habituellement les éléments suivants pour chaque utilisateur :
- le nom de l'utilisateur
- le sel et le mot de passe haché OU une valeur d'exception
- le sel et le mot de passe haché sont dans le format "$id$sel$motdepassehaché", c'est la forme imprimable d'un hachage de mot de passe tel que produit par crypt (C). "$id" est l'algorithme utilisé : sur GNU/Linux, "$1$" signifie MD5, "$2a$" signifie Blowfish, "$2y$" signifie Blowfish (manipulation correcte de caractÚres 8 bits), "$5$" signifie SHA-256 et "$6$ signifie SHA-512[4], d'autres versions de Unix (comme NetBSD) peuvent avoir des codes de fonctions de hachage différents[réf. souhaitée]. L'étirement de clé est utilisé pour augmenter la difficulté de cassage de mot de passe, en utilisant par défaut 1000 itérations de MD5 modifié[5], 64 itérations de Blowfish, 5000 itérations de SHA-256 ou SHA-512[6]. Le nombre d'itérations peut changer pour Blowfish, ou pour SHA-256 et SHA-512 en utilisant par exemple "$6$rounds=50000 $".)
- Les significations des valeurs d'exception sont :
- Chaßne vide - Le compte n'a pas de mot de passe. Signalé par "NP" sur le systÚme d'exploitation Solaris[7].
- "!" - Le compte est verrouillĂ©. L'utilisateur ne pourra pas se connecter via l'authentification par mot de passe, mais d'autres mĂ©thodes d'authentification (par exemple, la clĂ© SSH) peuvent encore ĂȘtre utilisĂ©es[8].
- "*LK*" ou "*" - Le compte est verrouillĂ©. L'utilisateur ne pourra pas se connecter via l'authentification par mot de passe, mais d'autres mĂ©thodes (par exemple la clĂ© SSH) peuvent encore ĂȘtre autorisĂ©es) [8].
- "!!" - Le mot de passe n'a jamais été défini[9].
- La date de la derniÚre modification du mot de passe (exprimé en nombre de jours aprÚs le ).
- Le nombre de jours avant le que le mot de passe puisse ĂȘtre changĂ© (0 indique qu'il peut ĂȘtre modifiĂ© Ă tout moment).
- Le nombre de jours aprĂšs lesquels le mot de passe doit ĂȘtre changĂ© (30 indique qu'aprĂšs 30 jours l'utilisateur sera forcĂ© de changer son mot de passe ; 99999 indique que l'utilisateur n'est jamais obligĂ© de changer son mot de passe).
- Le nombre de jours durant lesquels l'utilisateur sera informé de l'expiration prochaine de son mot de passe s'il se connecte au systÚme.
- Le nombre de jours avant la désactivation d'un compte avec mot de passe expiré.
- La date de la désactivation d'un compte (exprimé en nombre de jours aprÚs le ).
- Un champ réservé pour une éventuelle utilisation future.
Références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « passwd » (voir la liste des auteurs).
- â Understanding
/etc/passwdFile Format - â (en) « passwd(5) - Linux manual page », Man7.org (consultĂ© le )
- â (en) « 5250 Telnet Enhancements », Request for comments no 2877,
- â http://man7.org/linux/man-pages/man3/crypt.3.html crypt(3) manpage
- â Password hashing with MD5-crypt in relation to MD5
- â Implementation of SHA512-crypt vs MD5-crypt
- â « solaris - passwd (1) » [archive du ], sur cs.bgu.ac.il via Internet Archive
- 1 2 shadow(5) man page
- â (en) « 6.3. Red Hat Enterprise Linux-Specific Information », Access.redhat.com, (consultĂ© le )