Come rendere le password degli utenti mostrate come testo in chiaro in Linux?


28

Sappiamo che le password degli utenti vengono salvate /etc/passwd, ma in modo crittografato, quindi anche il root non può vederle:

jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash

Come mostrato sopra, :x:rappresenta la password.

Esiste un modo (possibile configurazione) per salvare la password nel /etc/passwdtesto in chiaro e in modo che il root possa vederli?


10
No. E questa è una caratteristica. Non esiste inoltre alcun motivo reale poiché l'account di root non ha bisogno della password di un utente per accedere ai propri file. In quale circostanza vorresti questo?
HalosGhost

1
Sono solo curioso di questo, perché l'amministratore (root) del sistema non può vedere le password degli altri utenti?
user78050,

5
@ user78050 perché l'utente root non ha motivo di conoscere le password di altri utenti e sarebbe un grave rischio per la sicurezza consentire loro di farlo.
David Z,

16
Perché viola il principio di sicurezza più semplice dell'azienda: "non archiviare mai le password in testo semplice". Quando la sicurezza è ben eseguita, solo l'utente dovrebbe conoscere la propria password, nessun altro. Inoltre, non c'è assolutamente alcun motivo per farlo. Non riesco a pensare a una singola situazione amministrativa in cui sarebbe utile per un utente root conoscere la password di un altro utente.
HalosGhost

3
Utilizzare il "metodo di crittografia" MD5, quindi decifrare le password utilizzando le tabelle arcobaleno .
Cristian Ciupitu,

Risposte:


58

Le altre due risposte ti hanno detto - correttamente! - che questa è una Bad Idea ™ . Ma ti hanno anche detto che è difficile da fare, che richiede di cambiare un sacco di programmi.

Non è vero. È molto facile. Hai solo bisogno di cambiare uno o due file di configurazione. Sento che è importante sottolineare questo, perché dovresti esserne consapevole quando accedi a sistemi che non controlli. Questi non inseriranno effettivamente una password in testo normale /etc/passwdo /etc/shadow, andranno in un altro file. Nota: non li ho testati, poiché preferirei non avere la mia password in testo normale.

  1. Modifica /etc/pam.d/common-password(per /etc/pam.d/common-authaccedere alla password modificata) o (per accedere al login) e aggiungere… pam_exec expose_authtok log=/root/passwords /bin/cat

  2. Modifica entrambi e passa da pam_unix a pam_userdb con crypt=none. In alternativa, puoi metterlo solo in common-password (lasciando anche pam_unix) per registrare solo le password quando vengono cambiate.

  3. È possibile rimuovere l' shadowopzione (nonché eventuali opzioni hash forti) da pam_unix per disabilitare il file shadow e tornare alle password di crittografia tradizionali. Non semplice testo, ma John lo Squartatore lo risolverà per te.

Per ulteriori dettagli, consultare la Guida per l'amministratore del sistema PAM .

Puoi anche modificare il codice sorgente di PAM o scrivere il tuo modulo. Dovresti solo compilare PAM (o il tuo modulo), nient'altro.


1
Suppongo che vengano scritte le password in testo semplice /root/passwords.
Faheem Mitha,

Btw. molto bello sapere quanto è facile e dove devo guardare se ho paura di un sistema compromesso.
erik,

8
@erik È la prerogativa del richiedente scegliere qualsiasi risposta che ritenga più utile come risposta accettata. Probabilmente è una buona cosa che OP abbia trovato "non farlo!" il più utile ... Inoltre, per essere chiari, questo non è l'unico modo per rubare le password su un sistema compromesso o mal gestito. Quindi non puoi semplicemente guardare la configurazione PAM per determinare che sei al sicuro.
derobert,

3
Questo è piuttosto supponendo che la distribuzione stia usando PAM, non tutti lo fanno.
Valità,

1
@msw ho risposto perché è apparentemente una convinzione comune che eseguire una scatola Linux con password in chiaro sia difficile (Bobby, a suo merito, ha risolto la sua risposta; Anthon fa ancora sembrare difficile). Questa è una convinzione pericolosa, in quanto incoraggia il riutilizzo della password. Se avessi appena pubblicato una risposta "in realtà, è facile, si modifica un file o due, ma non te lo dirò", nessuno lo avrebbe creduto. Perché ascoltarmi con le risposte (al momento) molto più votate, più approfondite? Esporre il punto richiede di dire come farlo. (Tuttavia, non sono esempi di copia e incolla. Il pensiero deve ancora essere utilizzato.)
derobert

34

Oh caro, okay, iniziamo dall'inizio ...

Sappiamo che le password degli utenti vengono salvate in / etc / passwd, ma in modo crittografato

No, essi sono stati conservati in /etc/passwd, e che era un bel po 'di tempo fa. Oggi le password sono archiviate in un cosiddetto file shadow , il più delle volte /etc/shadow.

ma in modo crittografato, quindi anche il root non può vederli:

So che a volte viene usato in modo intercambiabile, ma l' hash non è crittografia . La crittografia è reversibile per definizione, il che significa che è possibile tradurre nuovamente l'oggetto crittografato nella sua forma in chiaro. L'hashing è progettato per non essere reversibile in alcun modo (tranne la forza bruta). La forma originale in chiaro di qualcosa che è hash non dovrebbe essere recuperabile.

Le password nel file shadow sono archiviate come hash.

come mostrato sopra: x: rappresenta la password

In xquesto caso è solo un segnaposto per il campo password legacy. Ciò xsignifica che la password può essere trovata nel file shadow.

C'è un modo (possibile configurazione) per salvare la password in / etc / passwd in chiaro e in modo tale che il root possa vederli?

Sì, questo è davvero possibile, ma non è una buona idea per alcuni motivi. La risposta di Derobert spiega un modo piuttosto semplice per farlo .

Ma perché non è una buona idea? Bene, per un motivo semplice ma molto importante: la sicurezza. Suggerisco di leggere queste domande:

Riassumendo, supponiamo che esista un server in un'azienda, tutti gli account utente sono protetti dalle loro password e i dati in questi account utente sono crittografati con la stessa password. Un cracker dall'esterno ottiene l'accesso al server, ma non può accedere a nessuno dei dati importanti perché è ancora crittografato negli account utente.

Ora supponiamo che le password vengano memorizzate in testo semplice. Il cracker avrebbe improvvisamente accesso a tutto , perché le password possono essere lette. Ma se sono archiviati come valori di hash, sono quasi inutili per chiunque, tranne le persone con molte risorse per fare un attacco a forza bruta.


2
A difesa di OP in merito a crittografia e hash, la pagina man di crypt di glibc dice: «Se salt è una stringa di caratteri che inizia con i caratteri "$id$"seguiti da una stringa terminata da "$": $id$salt$encrypted quindi invece di utilizzare la macchina DES, ididentifica il metodo di crittografia utilizzato e questo quindi determina come viene interpretato il resto della stringa ».
Cristian Ciupitu,

1
Interessante, ma non risponde alla domanda principale, come fa la risposta di Derobert.
erik,

6
@erik A volte la risposta giusta a una domanda è "non farlo", anche quando la cosa è tecnicamente possibile. Questa è una di quelle volte.
Gilles 'SO- smetti di essere malvagio' il

1
Suggerisco di cambiare questa riga: "No, non c'è altro modo che cambiare molte applicazioni e il modo in cui funzionano". Ciò lascia l'impressione che non sia facile (o almeno facile fare qualcosa di funzionalmente equivalente).
derobert,

2
@Bobby Questa è una risposta eccellente, ma non una risposta eccellente. Per renderlo una risposta eccellente, dovresti cambiare la parte in quanto "non facilmente possibile", perché chiaramente lo è, come mostrato nella risposta di Derobert.
Michael Dorst,

10

Prima di tutto le password crittografate non sono presenti /etc/passwd, ma sono presenti /etc/shadow. Uno dei motivi di ciò è che /etc/passwdè leggibile pubblicamente (quindi puoi ad esempio trovare le informazioni sul campo GECOS per un altro utente) e, specialmente con schemi di crittografia precedenti, potrebbe consentire attacchi di forza bruta contro la password crittografata.

Per memorizzare le password in testo semplice, non è necessario e richiederebbe aggiornamenti al programma password e alle librerie che leggono le /etc/shadowinformazioni per verificare la presenza di password valide. E poi devi sperare che tutte le utility utilizzino librerie condivise per accedere a tali informazioni invece di essere collegate staticamente a qualcosa che non comprende l'archiviazione della password in testo semplice.

Se questa fosse un'opzione nella configurazione di un'installazione, ci sarebbero sempre persone stupide che la accenderebbero in modo inappropriato. E mentre stanno ancora lavorando su schermi CRT e lo trasmettono in modo che possano essere facilmente raccolti dall'esterno dell'edificio, mentre stanno guardando le informazioni.

A parte questo, le persone tendono a usare la stessa password o una password simile su più sistemi, quindi non è una buona idea che qualsiasi password sia leggibile dall'uomo. Dato che alcuni amministratori di sistema potrebbero riprovare su altri sistemi, sa che l'utente ha un account.

Ci devono essere cose più interessanti, il funzionamento di può essere studiato sul tuo sistema.


3
/etc/shadownon memorizza le password crittografate, memorizza gli hash delle password. Sì, la funzione viene chiamata crypte la pagina man dice "crittografata", ma se si chiama un pesce una bicicletta, ciò non gli dà le ruote. Si noti che sarebbe possibile creare /etc/shadowpassword di archivio in un formato diverso senza ricompilare alcun programma (almeno su Linux e Solaris): i metodi di autenticazione sono sempre collegati dinamicamente. Memorizzare le password come testo semplice sarebbe un'idea terribile, ma è possibile con un po 'di lavoro .
Gilles 'SO- smetti di essere malvagio' il

@gilles Ho appena riutilizzato la terminologia dei PO, ma hai ragione che l'hash è un termine più appropriato.
Anthon,

3

Il motivo di base (del perché questa è una cattiva idea) è che nessun utente (root, admin o altro) dovrebbe mai avere accesso alla password dell'utente di un altro.

Semplicemente perché la password è un mezzo di autenticazione. Se conosco la password di un altro utente, conosco le sue credenziali (nome utente + password), quindi posso accedere come quell'utente , impersonandolo (o lei).

Qualsiasi azione che eseguo dopo aver effettuato l'accesso come tale utente, l'altro utente sarà ritenuto responsabile. E non è così che dovrebbe funzionare l'autenticazione.

Le azioni possono essere disastrose, come l'eliminazione di un sacco di file importanti, la cancellazione di dischi rigidi, la cancellazione di backup, l'arresto dei piani di energia nucleare, ecc.

O semplicemente illegale. Immagina un istituto bancario in cui io (l'amministratore) ho accesso a tutte le password. Usando la password del cassiere posso ordinare uno spostamento di un milione di dollari dal conto bancario del presidente al conto bancario del lavavetri. Quindi utilizzare la password superiore del cassiere per approvare la transazione. Quindi approvare un assegno dal conto del lavavetri al mio conto bancario offshore.

Poi vado per una lunga vacanza alle Bahamas ...


In tale prospettiva, l'hash delle password e l'uso di file shadow separati possono essere visti come un mezzo per far rispettare questa regola (nessun utente dovrebbe essere in grado di impersonare un altro).

E come ha commentato * di Miral * , c'è l'eccezione suche, pur consentendo la rappresentazione (e tipi di scarti dell'argomento sopra), mantiene anche un registro del suo uso (quindi cambia le regole in "solo gli amministratori possono impersonare gli altri ma un il registro viene mantenuto ").

* L'esempio della banca probabilmente non era il migliore. In qualsiasi ambiente in cui la sicurezza è cruciale, di solito sono necessari più mezzi di autenticazione e autorizzazione di una sola password.


Un difetto di questo argomento è che l'utente root può comunque impersonare qualsiasi altro utente sul sistema, senza dover conoscere la propria password. Facile come su otheruser.
Miral,

@Miral hai ragione, non ho considerato questo. E sebbene l'uso di susia registrato, su non tiene traccia di ciò che viene effettivamente fatto mentre un utente impersona un altro. E un root dannoso può sempre alterare i log per nascondere le azioni ai futuri investigatori.
ypercubeᵀᴹ
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.