Les autorisations de /etc/shadow
sont 600, ce qui signifie qu'il n'est pas lisible par quiconque, sauf root.
Cependant, comme tous les mots de passe à l'intérieur ne sont pas stockés en texte clair mais sous forme de hachages (ce qui signifie qu'il est impossible de calculer le mot de passe d'origine à partir du hachage), pourquoi ne peut-il pas être lu par tout le monde?
permissions
files
shadow
Shubhanshu Vishwakarma
la source
la source
/etc/shadow
sont600
?Réponses:
Pour empêcher les attaques par force brute hors ligne.
Même si vous ne pouvez pas inverser un hachage, vous pouvez toujours essayer de hacher tous les mots de passe possibles jusqu'à ce que vous trouviez une correspondance, et vous pouvez faire des millions d'essais par seconde avec un bon matériel et un accès local au fichier.
Si le fichier avait des
644
autorisations, toute personne connectée à votre système, même lors d'une session invité, pourrait copier ce fichier hors de votre ordinateur (que ce soit sur une clé USB ou à distance viascp
) et tenter une attaque par force brute hors ligne , sans laisser aucune preuve de cela sur votre ordinateur .Notez que les autorisations sur Ubuntu ne sont en fait
640
pas600
:Cela n'a pas beaucoup d'importance, car il n'y a toujours pas d'autorisations pour les autres et, par défaut, personne n'est dans le
shadow
groupe.À l'origine, les hachages étaient stockés dans
/etc/passwd
(c'est pourquoi on l'appellepasswd
), comme à l'époque de la création de Linux, casser un hachage, même les types faibles utilisés à l'époque, était pratiquement impossible. Finalement, cependant, la puissance de traitement a progressé au point où le craquage d'un hachage, au moins d'un mot de passe relativement faible, est devenu possible.Modification des autorisations d'
/etc/passwd
à640
ou600
ne serait pas fonctionner, car il y a beaucoup de raisons légitimes pour être en mesure de lire en/etc/passwd
tant qu'utilisateur normal (conversion UIDs aux noms d' utilisateurs, d' obtenir le nom , prénom, numéro de téléphone d'un utilisateur, etc.), de sorte hash ont été transférés/etc/shadow
, qui a reçu des640
autorisations. Unx
champ à la place du hachage de mot de passe pour un utilisateur dans/etc/passwd
est utilisé pour indiquer que le hachage pour cet utilisateur est stocké à la/etc/shadow
place.la source
ls
n'ont pas besoin d'être root setuid pour traduire de uid en nom.En fait, / etc / shadow a été créé pour permettre de s'éloigner d' une liste de noms d'utilisateurs et de mots de passe lisibles par le public.
Accrochez-vous, ce sera un peu une leçon d'histoire, avant d'arriver à la réponse réelle. Si vous ne vous souciez pas de l'histoire, faites défiler un peu vers le bas.
Autrefois, les systèmes d'exploitation de type Unix, y compris Linux, conservaient généralement tous les mots de passe dans / etc / passwd. Ce fichier était lisible dans le monde entier, et l'est toujours, car il contient des informations permettant de mapper par exemple entre les ID utilisateur numériques et les noms d'utilisateur. Ces informations sont très utiles même aux utilisateurs ordinaires à des fins parfaitement légitimes, de sorte que la lisibilité du monde des fichiers était très avantageuse pour la convivialité.
Même à l'époque, les gens se rendaient compte qu'avoir les mots de passe en texte brut dans un fichier dans un endroit bien connu que quiconque pouvait se connecter pouvait lire librement était une mauvaise idée. Les mots de passe ont donc été hachés, dans un sens. C'est l'ancien mécanisme de hachage de mot de passe "crypt", qui n'est presque jamais utilisé sur les systèmes modernes, mais souvent pris en charge à des fins héritées.
Jetez un œil à / etc / passwd sur votre système. Voir ce deuxième champ, qui dit
x
partout? Il détenait le mot de passe haché pour le compte en question.Le problème était que les gens pouvaient télécharger / etc / passwd, ou même ne pas le télécharger, et travailler à déchiffrer les mots de passe. Ce n'était pas un gros problème alors que les ordinateurs n'étaient pas particulièrement puissants (Clifford Stoll, dans The Cuckoo's Egg , donne, si je me souviens bien, le temps de hacher un mot de passe sur un système de classe IBM PC au milieu des années 1980 comme environ une seconde ), mais cela est devenu un problème avec l'augmentation de la puissance de traitement. À un moment donné, avec une liste de mots décente, déchiffrer ces mots de passe est devenu trop facile. Pour des raisons techniques, ce schéma ne pouvait pas non plus prendre en charge les mots de passe de plus de huit octets.
Deux choses ont été faites pour résoudre ce problème:
Ce fichier est / etc / shadow.
Le logiciel qui fonctionne avec / etc / shadow est généralement très petit, très ciblé et a tendance à recevoir un examen supplémentaire dans les revues en raison du risque de problèmes. Il s'exécute également avec des autorisations spéciales, ce qui lui permet de lire et de modifier / etc / shadow, tout en empêchant les utilisateurs ordinaires de consulter ce fichier.
Donc, vous l'avez: les autorisations sur / etc / shadow sont restrictives (bien que, comme nous l'avons déjà souligné, pas aussi restrictives que vous le dites) car le but de ce fichier est de restreindre l'accès aux données sensibles.
Un hachage de mot de passe est censé être solide, mais si votre mot de passe figure dans les 500 premiers mots de passe sur les listes Internet , toute personne ayant accès au hachage pourra toujours trouver le mot de passe rapidement. La protection du hachage empêche cette attaque simple et met la barre haute pour une attaque réussie, du simple coup d'œil à l'exigence que l'un soit déjà administrateur système sur l'hôte ou passe d'abord par une attaque par escalade de privilèges. Surtout sur un système multi-utilisateurs correctement administré, les deux sont beaucoup plus difficiles que de simplement regarder un fichier lisible par le monde.
la source
/etc/shadow
ne contient pas de "mots de passe cachés" (car ce n'est pas une chose). L'ensemble du fichier est une ombre de/etc/passwd
. Voir la façon dont la terminologie est utilisée dans le HOWTO du mot de passe caché Linux : Pourquoi masquer votre fichier passwd? . Contrairement à d'autres utilisations du terme "Shadow" dans l'informatique, ce n'est pas un cliché instantané (comme l'observation du code BIOS dans la RAM au lieu de s'exécuter à partir de la ROM). Le champ dans / etc / passwd est un espace réservé, contenant un caractère spécial qui signifie "le vrai hachage du mot de passe est dans / etc / shadow".Qui t'as dit ça?
Réponse simple: les autorisations sous Linux sont prises au sérieux. Il n'y a aucune raison pour que "les autres" fassent quoi que ce soit
/etc/shadow
. Et il n'y a aucune raison pour que le groupe "shadow" lui écrive. Et l'exécution est hors de l'ordre.Parce qu'il n'y a pas une seule raison de le faire.
Les hachages sont à sens unique. Donner à quelqu'un un accès en lecture lui permet d'utiliser un script pour abuser de cette façon: il suffit de lister tout mot que vous pouvez imaginer et de créer le hachage. À un moment donné, il pourrait correspondre au mot de passe. Cela pourrait aussi prendre un certain temps.
Cette réponse est intéressante et contient quelques estimations sur le forçage brut.
la source
Contexte important:
/etc/shadow
existe uniquement dans le but de masquer les hachages de mot de passe. Dans les premiers jours d'Unix, les hachages de mot de passe étaient stockés dans/etc/passwd
. Comme les ordinateurs sont devenus plus puissants, les connexions réseau plus persistantes et les exploits de sécurité plus sophistiqués, les gens ont réalisé que garder les hachages des mots de passe lisibles était un problème. (Je ne détaillerai pas les exploits; il y a déjà suffisamment de bonnes réponses à ce sujet.)Mais
/etc/passwd
ne pouvait pas être protégé en lecture: il est utilisé par toutes sortes de programmes pour mapper les identifiants numériques des utilisateurs aux noms d'utilisateur et pour rechercher les répertoires personnels, les shells par défaut, le nom complet de l'utilisateur (et le numéro de bureau, etc. - consultezman finger
) . Ainsi, la partie sensible, le hachage du mot de passe, a été déplacée vers/etc/shadow
, et le reste est resté tel quel. C'est pourquoi/etc/passwd
, malgré le nom, contient tout sauf le mot de passe (haché).la source