À quoi sert le fichier / etc / shadow dans le système d'exploitation Linux? Est-ce également le cas pour les clients SUSE? Il existe un fichier de cache caché, quel est le but de cela?
Depuis le début, les systèmes d'exploitation Unix et de style Unix (y compris Linux) ont toujours stocké les mots de passe sous forme de hachages cryptographiques (1). Ces hachages étaient initialement stockés dans /etc/passwd
, mais ce fichier devait être lisible dans le monde entier pour rendre les informations disponibles à d'autres fins - même un simple ls -l
besoin de lecture /etc/passwd
afin de convertir l'ID utilisateur numérique de chaque propriétaire de fichier en son nom d'utilisateur pour l'affichage. Cependant, le fait d'avoir les mots de passe hachés dans un fichier lisible par le monde a permis aux utilisateurs malveillants d'obtenir facilement ces hachages et d'essayer de générer des mots de passe utilisables (2) pour les comptes d'autres utilisateurs.
Pour éviter cela, les mots de passe hachés ont finalement été déplacés dans un fichier lisible uniquement par root (et parfois un groupe d'administrateurs privilégiés) /etc/shadow
,. Cela masque les hachages des utilisateurs normaux du système tout en les gardant disponibles à des fins d'authentification des utilisateurs.
Remarques :
Pedantic, je sais, mais les mots de passe stockés ne sont pas cryptés. Ils sont hachés à l'aide d'un algorithme de hachage cryptographiquement sécurisé (au moins au moment où il a été écrit). Les principales distinctions pertinentes ici sont que les hachages sont de longueur fixe (la longueur du texte chiffré varie en fonction de la longueur du texte qui a été chiffré) et non réversible (le texte chiffré peut être déchiffré; le texte haché ne peut pas).
Parce que les hachages sont de longueur fixe, il existe un nombre infini d'entrées qui correspondra à toute représentation de hachage donnée. Un attaquant pourrait donc trouver un mot de passe fonctionnel qui n'est pas nécessairement le même que le mot de passe de l'utilisateur propriétaire - bien que cela soit très peu probable compte tenu de la taille des hachages cryptographiques modernes.
Le
/etc/shadow
fichier a été créé pour des raisons de sécurité et contient le mot de passe chiffré de chaque utilisateur.À l'origine, le mot de passe crypté était stocké dans
/etc/passwd
./etc/passwd
devait être lisible par tout le monde afin que le système puisse mapper les ID utilisateur aux noms d'utilisateur, et pour que les utilisateurs puissent trouver des informations les uns sur les autres, par exemple le répertoire personnel de l'autre utilisateur, ou leur numéro de téléphone, qui était traditionnellement stocké dans le champ "gecos" et affiché par l'utilitaire "doigt".Mais ensuite, les gens ont réalisé que c'était un problème de sécurité. N'importe qui avec suffisamment de temps pourrait faire ce qu'on appelle une attaque par bruteforce , en générant par programme des mots de passe chiffrés pour chaque mot de passe possible. Si l'attaquant a fait cela sans vraiment essayer de se connecter via
telnet
oussh
, le système ne pouvait pas savoir qu'il était attaqué.Le mot de passe crypté a donc été déplacé dans le nouveau
/etc/shadow
, qui n'est lisible que par root.Il contient également d'autres informations que le
/etc/passwd
fichier ne prend pas en charge concernant le compte et le mot de passe de l'utilisateur, par exemple la date de la dernière modification du mot de passe et son expiration.Voir
man 5 shadow
( version Web ) pour plus de détails sur le format de fichier.Je ne peux pas dire si c'est la même chose pour SUSE, sans savoir à quelle version de SUSE vous avez affaire. Par exemple, votre système SUSE peut utiliser Blowfish plutôt que MD5.
Vous avez également laissé entendre que vous mélangiez votre
/etc/shadow
fichier avec un système exécutant une distribution Linux différente, mais vous n'avez pas précisé quelle était l'autre distribution.Voir Problèmes de migration du fichier shadow de SuSE 9.3 vers Ubuntu Server x86_64 par exemple.
Pour essayer de le comprendre, ouvrez
/etc/shadow
et voyez si le champ du mot de passe crypté commence par$1$
ou$2$
. S'il contient$1$
, alors c'est MD5, et compatible avec la plupart des autres distributions. S'il contient$2$
, c'est probablement Blowfish selon les fichiers shadow Blowfish sur Debian .Si vous utilisez Ubuntu, le premier résultat de recherche Google pour Ubuntu Blowfish pourrait être un bon point de départ.
la source
Les utilisateurs sont répertoriés dans le
/etc/passwd
fichier. Ce fichier contient de nombreuses informations utilisées par le système non seulement pour permettre aux utilisateurs de se connecter.Chaque ligne correspond à une entrée utilisateur et différents champs sont séparés par des deux-points. Le premier fichier est le login, il est suivi du mot de passe correspondant.
Les mots de passe cryptés étaient auparavant stockés dans ce champ. Cependant, le
/etc/passwd
fichier doit être lisible par tout le monde sur le système, donc le cryptage n'empêche pas les attaques par force brute, comme l'a dit @Mikel. La solution était de déplacer ces mots de passe chiffrés dans la racine seule fichier lisible:/etc/shadow
.Ainsi,
/etc/shadow
contient les mots de passe cryptés des utilisateurs du système. Le système sait qu'il doit vérifier les mots de passe dans ce fichier lorsque les champs de mot de passe/etc/passwd
contiennent uniquement un x (ce qui signifie " passer à / etc / shadow")la source
/etc/passwd
étaient / sont toujours hachés exactement de la même manière qu'ils le seraient s'ils l'étaient/etc/shadow
. Vous ne pas vraiment dire que les mots de passe en/etc/passwd
serait clair, mais il serait facile pour quelqu'un pas familier avec le mot de passe * nix la manipulation de mal interpréter votre réponse comme signifiant que.x
signifie réellement quoi que ce soit. Il est là tout comme un hachage non valide (celui qui ne correspond à aucun mot de passe). Certains systèmes utilisent!
.Voyons voir si je peux obtenir tous les votes positifs dans le monde, puisque j'ai écrit ce qui est devenu la suite Linux Shadow Password en 1987;)
Le
/etc/passwd
fichier d' origine contenait un hachage basé sur DES modifié du mot de passe en texte clair. Au moment où lacrypt()
fonction a été créée, on pensait (et cela a été déclaré par les créateurs du système d'exploitation UNIX) que les attaques contre le hachage de mot de passe seraient irréalisables, en raison du nombre de mots de passe possibles et de l'utilisation d'un 12 bits. (4 096 valeurs possibles) "sel". Chaque mot de passe en texte clair possible avait 4 096 valeurs de hachage possibles, et avec 64 bits de résultat haché, ce qui donnait un total de 2 ^ 72 hachages de mot de passe possibles.Comme une autre affiche l'a mentionné, a
/etc/passwd
été également utilisé par divers utilitaires pour mapper entre les noms d'utilisateur et les valeurs UID (le/etc/group
fichier fournit la fonction analogue pour les groupes) et qui nécessitait qu'il soit lisible dans le monde entier.Dans les années 80, il est devenu évident que les attaques de dictionnaire contre le hachage de mot de passe stocké dans le
/etc/passwd
fichier devenaient réalisables et a/etc/shadow
été introduit dans AT&T UNIX dans une version précoce de System V.J'ai documenté les pages de manuel que j'ai utilisées pour écrire la bibliothèque Shadow d'origine, et je '' ve depuis oublié, mais c'était certainement une première version de System V, probablement SVR3.2.Ce qu'AT & T a fait, et ce que j'ai implémenté pour SCO Xenix (le SCO Xenix original, pas le SCO Xenix plus tard) en '87 qui a finalement été utilisé sur Linux, a été simplement de déplacer le mot de passe haché vers
/etc/shadow
. Cela a empêché l'attaque au volant, où un utilisateur non privilégié a acquis une copie de/etc/passwd
et a lancé une attaque contre celle-ci. Si vous savez pourquoi j'ai écrit Shadow en premier lieu, j'ai demandé à un utilisateur de télécharger mon/etc/passwd
fichier via UUCP à l'époque où nous utilisions encore UUCP pour à peu près tout.Au moment de la création de Linux et de son utilisation à grande échelle, il existait un très grand nombre d'outils pour attaquer les hachages de mot de passe. Les réimplémentations hautes performances de
crypt()
étaient une avenue, et les attaques basées sur un dictionnaire via des outils tels que Crack et libcrack en étaient d'autres. Le portage initial a été fait par Nate Holloway et Floria La Roche (je leur ai donné du crédit, je ne sais pas si quelqu'un a fait le travail avant eux).Finalement, l'utilisation de
crypt()
hachages basés sur, même dans un fichier protégé, n'était plus sécurisée et lesMD5
modifications de hachage basées sur l'original ont été apportées.MD5
finalement a été considéré comme trop faible, et de nouveaux hachages ont été utilisés.En théorie, un hachage suffisamment fort pourrait être stocké
/etc/passwd
. Une mauvaise sécurité opérationnelle signifie que de nombreux systèmes ont leurs/etc/shadow
fichiers disponibles via divers vecteurs d'attaque - "J'ai volé les fichiers de sauvegarde" est probablement le plus simple.la source