Gli utenti ordinari sono in grado di leggere / etc / passwd, è un buco nella sicurezza?


19
ls -l /etc/passwd

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

Quindi un normale utente può leggere il file. È una falla di sicurezza?

Risposte:


49

Gli hash delle password effettive sono memorizzati in /etc/shadow, che non è leggibile dagli utenti normali. /etc/passwdcontiene altre informazioni su ID utente e shell che devono essere leggibili da tutti gli utenti affinché il sistema funzioni.


3
Non proprio - storicamente le password sono state mantenute in / etc / passwd - ma questo ha reso semplice la corrispondenza della forza bruta - quindi i sistemi moderni che usano / etc / shadon con pam_unix e simili.
symcbean,

4
Usi moderni di Linux/etc/shadow . Gli BSD usano /etc/master.passwd. Utilizza Solaris /etc/security/passwd. HP-UX utilizza /.secure/etc/passwde l'elenco continua ...
Chris S,

16

In genere, le password con hash sono archiviate /etc/shadowsulla maggior parte dei sistemi Linux:

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

(Sono memorizzati /etc/master.passwdsu sistemi BSD .)

I programmi che devono eseguire l'autenticazione devono ancora essere eseguiti con rootprivilegi:

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

Se non ti piacciono i setuid rootprogrammi e un singolo file contenente tutte le password con hash sul tuo sistema, puoi sostituirlo con il modulo Openwall TCB PAM . Ciò fornisce a ogni singolo utente il proprio file per l'archiviazione della password con hash - di conseguenza, il numero di setuid rootprogrammi sul sistema può essere drasticamente ridotto.


13

Le password non vengono memorizzate /etc/passwdda anni ormai; il nome è legacy, la funzione di essere il database utenti locale rimane e deve essere leggibile da tutti a tale scopo.


2
la leggibilità del mondo è una decisione di progettazione, non una necessità
Ben Voigt

@Ben: quindi è ragionevole che nessuno possa identificare i file che appartengono a qualcun altro? Al giorno d'oggi è il negozio locale per NSS, non per PAM nonostante il suo nome.
Geekosaur,

1
È del tutto possibile disporre di un servizio privilegiato -> traduzione dei nomi, senza consentire agli utenti non privilegiati di enumerare l'intero elenco utenti. Alcuni SO scelgono questa opzione.
Ben Voigt,

1
@joechip I sistemi operativi attuali non sono progettati per nascondere gli utenti gli uni dagli altri. Tutti gli utenti possono essere elencati in molti più modi di / etc / passwd. ls -la / home su Linux, ls -la / Users su MacOS X, dir C: \ Users in windows 7, ps -afux nei sistemi Unix. Cambiare la scelta progettuale a cui Ben Voigt ha accennato rende la vita difficile senza cambiare la sicurezza.
Magicianeer,

1
@Magicianeer - Solo dire che l'esempio di Windows non è del tutto corretto. Puoi ottenere gli utenti attraverso altri metodi, ma guardando la cartella C: \ users verranno elencati solo gli utenti che hanno effettuato l'accesso; nessun utente di sistema.
burnt_hand

6

In una certa misura, come è possibile identificare gli utenti. In passato potresti anche raccogliere le loro password. Tuttavia, l'unico userid che vale davvero la pena craccare è rootche è ben noto senza il file delle password.

L'utilità di avere un mondo di file password leggibile generalmente supera di gran lunga il rischio. Anche se non fosse leggibile dal mondo, un getent passwdcomando funzionante renderebbe nulla il guadagno di sicurezza.

La possibilità per gli utenti non root di identificare i file di proprietà di altri scomparirebbe. Essere in grado di identificare i file posseduti (utente nel file passwd) e non posseduti (utente non nel file passwd) può essere utile per rivedere il contenuto di un file system. Mentre sarebbe possibile risolverlo con setuidprogrammi adeguati , ciò aggiungerebbe un enorme vettore di attacco tramite quei programmi.

Alla fine si tratta di una questione di equilibrio, e in questo caso direi che il saldo è saldamente dovuto alla leggibilità del mondo delle password.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.