Pourquoi l'autorisation de fichier pour / etc / shadow est-elle définie sur 600?

25

Les autorisations de /etc/shadowsont 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?

Shubhanshu Vishwakarma
la source
Êtes-vous sûr que les autorisations pour /etc/shadowsont 600?
edwinksl
4
Si un mot de passe de votre compte Stackoverflow est haché, êtes-vous prêt à montrer votre mot de passe haché à d'autres?
Jeon
5
@ByteCommander. Parfois, je veux un moyen de mettre à jour les modifications.
TRiG

Réponses:

60

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 644autorisations, 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 via scp) 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 640pas 600:

$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow

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 shadowgroupe.


À l'origine, les hachages étaient stockés dans /etc/passwd(c'est pourquoi on l'appelle passwd), 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à 640ou 600ne serait pas fonctionner, car il y a beaucoup de raisons légitimes pour être en mesure de lire en /etc/passwdtant 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 des 640autorisations. Un xchamp à la place du hachage de mot de passe pour un utilisateur dans /etc/passwdest utilisé pour indiquer que le hachage pour cet utilisateur est stocké à la /etc/shadowplace.

insert_name_here
la source
1
Bon appel à la copie du fichier!
Rinzwind
1
et je n'ai pas besoin du rep ;-) edit: hmm il l'a mis sur le mien: P désolé: D edit2 et maintenant il est de retour. eh: D
Rinzwind
6
La dernière fois que j'ai vérifié, vous pouvez replacer le mot de passe haché dans / etc / passwd et supprimer la ligne de / etc / shadow et vous attendre à pouvoir vous connecter. / Etc / shadow existe afin qu'il puisse être défini sur 600 pour la raison indiquée. dans cette réponse.
Joshua
8
Il convient de noter que les autorisations pour / etc / passwd sont 644. Je pense que, historiquement, les hachages de mot de passe étaient stockés ici. Cependant, changer ce fichier en 640 aurait causé toutes sortes de problèmes de compatibilité, donc à la place les hachages de mot de passe ont été déplacés vers shadow et supprimés de passwd - cela permet aux autres informations de passwd de rester lisibles par le monde tandis que les hachages de mot de passe sont gardés secrets dans un fichier différent.
Rodney
4
@Rodney en tant que personne ayant grandi sur BSD 4.3, vous avez raison. Les hachages étaient stockés dans / etc / passwd. À l'époque où le Vax 11/780 était à la pointe de la technologie, une attaque par force brute sur les mots de passe du fichier était considérée comme impossible. Peut-être plus important encore, Internet [Arpanet] était une petite mare endormie, et de telles choses étaient à peine envisagées; il n'y avait pas seulement rshlogin / telnet ssh. La conservation du fichier de mots de passe 644 signifie que les utilitaires tels que lsn'ont pas besoin d'être root setuid pour traduire de uid en nom.
Mike S
13

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 xpartout? 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:

  • Passer à des fonctions de hachage plus fortes. L'ancienne crypte () avait survécu à sa durée de vie utile, et des schémas plus modernes ont été conçus qui étaient à la fois évolutifs et plus robustes.
  • Déplacez les mots de passe hachés dans un fichier qui n'était pas lisible par n'importe qui. De cette façon, même si une fonction de hachage de mot de passe s'est avérée être plus faible que prévu, ou si quelqu'un avait un mot de passe faible pour commencer, il y avait un autre obstacle pour un attaquant d'accéder aux valeurs de hachage pour commencer. Ce n'était plus gratuit pour tous.

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.

un CVn
la source
j'aime vraiment la façon dont vous décrivez chaque chose :) (y)
Shubhanshu Vishwakarma
Terminologie / étymologie: /etc/shadowne 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".
Peter Cordes
Bonne histoire mais 1 sec. par mot de passe n'était guère limitatif, même dans les années 80, pas lorsque les meilleurs mots de passe étaient utilisés par plus de 1% des utilisateurs chacun.
Warren Dew
1
@WarrenDew Je ne sais pas si vous faites une déclaration de fait ou une opinion. crypt () a un sel 12 bits et une sortie 12 + 64 bits pour un mot de passe de huit octets (alors généralement codé en base64). Pour les mots de passe communs, oui, vous pouvez probablement les attaquer par la force brute, mais il n'a pas fallu que beaucoup d'un mot de passe pour faire la fissuration par la force brute si infaisable chaque chèque de mot de passe a pris une seconde. Le précalcul d'une table salée pour un seul mot de passe prendrait environ une heure à raison d'un chiffrement par seconde, et vous deviez également faire face à un stockage limité (40 à 80 Mo, c'était beaucoup à l'époque).
un CVn du
@PeterCordes Bon point. Je supprime ce passage car il n'est vraiment pas particulièrement pertinent pour répondre à la question du PO.
un CVn du
10

Pourquoi l'autorisation pour le fichier / etc / shadow est définie sur 600?

Qui t'as dit ça?

$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
  • c'est 640.

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.

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?

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.

Rinzwind
la source
640 est pour un utilisateur normal ?? l'utilisateur du groupe peut lire le fichier shadow ??
Shubhanshu Vishwakarma
Désolé? Le fichier est 640. Alors lisez, écrivez pour l'utilisateur "root" et lisez pour le groupe "shadow". "shadow" est un groupe créé par système privilégié dans ce but spécifique.
Rinzwind
2

Contexte important: /etc/shadowexiste 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/passwdne 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. - consultez man 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é).

alexis
la source
merci pour votre réponse à ma question, maintenant j'ai une idée complète du fichier / etc / passwd et / etc / shadow.
Shubhanshu Vishwakarma