Les utilisateurs ordinaires peuvent lire / etc / passwd, est-ce un trou de sécurité?

19
ls -l /etc/passwd

donne

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd

Ainsi, un utilisateur ordinaire peut lire le fichier. Est-ce un trou de sécurité?

Ankur Agarwal
la source

Réponses:

49

Les hachages de mot de passe réels sont stockés dans /etc/shadow, ce qui n'est pas lisible par les utilisateurs réguliers. /etc/passwdcontient d'autres informations sur les ID utilisateur et les shells qui doivent être lisibles par tous les utilisateurs pour que le système fonctionne.

Michael
la source
3
Pas vraiment - historiquement, les mots de passe étaient conservés dans / etc / passwd - mais cela rendait la correspondance par force brute simple - d'où les systèmes modernes utilisant / etc / shadon avec pam_unix et similaires.
symcbean
4
Utilisations modernes de Linux/etc/shadow . Les BSD utilisent /etc/master.passwd. Solaris utilise /etc/security/passwd. HP-UX utilise /.secure/etc/passwdet la liste continue ...
Chris S
16

En règle générale, les mots de passe hachés sont stockés dans la /etc/shadowplupart des systèmes Linux:

-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow

(Ils sont stockés dans /etc/master.passwdle système BSD .)

Les programmes qui doivent effectuer l'authentification doivent toujours s'exécuter avec des rootprivilèges:

-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd

Si vous n'aimez pas les setuid rootprogrammes et un seul fichier contenant tous les mots de passe hachés sur votre système, vous pouvez le remplacer par le module Openwall TCB PAM . Cela fournit à chaque utilisateur son propre fichier pour stocker son mot de passe haché - en conséquence, le nombre de setuid rootprogrammes sur le système peut être considérablement réduit.

sarnold
la source
13

Les mots de passe n'ont pas été stockés /etc/passwddepuis des années maintenant; le nom est hérité, la fonction d'être la base de données d'utilisateurs locale demeure et elle doit être lisible par tous à cette fin.

geekosaure
la source
2
la lisibilité du monde est une décision de conception, pas une nécessité
Ben Voigt
@Ben: il est donc raisonnable que personne ne puisse identifier les fichiers appartenant à quelqu'un d'autre? C'est le magasin local pour NSS ces jours-ci, pas pour PAM malgré son nom.
geekosaur
1
Il est tout à fait possible d'avoir un service privilégié do uid -> traduction de nom, sans autoriser les utilisateurs non privilégiés à énumérer la liste complète des utilisateurs. Certains systèmes d'exploitation choisissent cette option.
Ben Voigt
1
@joechip Les systèmes d'exploitation actuels ne sont pas conçus pour cacher les utilisateurs les uns aux autres. Tous les utilisateurs peuvent être énumérés de bien plus de façons que / etc / passwd. ls -la / home sous Linux, ls -la / Users sous MacOS X, dir C: \ Users dans Windows 7, ps -afux dans les systèmes Unix. Changer le choix de conception auquel Ben Voigt a fait allusion rend la vie difficile sans changer la sécurité.
Magicianeer
1
@Magicianeer - Dire simplement que l'exemple de Windows n'est pas tout à fait correct. Vous pouvez obtenir les utilisateurs par d'autres méthodes, mais en consultant le dossier C: \ users, vous n'aurez à répertorier que les utilisateurs connectés; pas d'utilisateurs du système.
burnt_hand
6

Dans une certaine mesure, c'est le cas, car vous pouvez identifier les utilisateurs. Dans le passé, vous pouviez également récupérer leurs mots de passe. Cependant, le seul ID utilisateur qui mérite vraiment d'être craqué rootest bien connu sans le fichier de mot de passe.

L'utilité d'avoir un monde de fichiers de mots de passe lisible dépasse généralement de loin le risque. Même si elle n'était pas lisible dans le monde entier, une getent passwdcommande fonctionnelle annulerait le gain de sécurité.

La possibilité pour les utilisateurs non root d'identifier les fichiers appartenant à d'autres disparaîtrait. Pouvoir identifier les fichiers possédés (utilisateur dans le fichier passwd) et non possédés (utilisateur non dans le fichier passwd) peut être utile pour examiner le contenu d'un système de fichiers. Bien qu'il soit possible de résoudre ce problème avec des setuidprogrammes appropriés , cela ajouterait un énorme vecteur d'attaque via ces programmes.

En fin de compte, c'est une question d'équilibre, et dans ce cas, je dirais que l'équilibre repose fermement sur la lisibilité du monde des mots de passe.

BillThor
la source