GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è lo scopo dei file /etc/shadow e shadow cache nel sistema operativo Linux?

Fin dall'inizio, i sistemi operativi Unix e Unix-style (incluso Linux) hanno sempre memorizzato le password come hash crittografici (1). Questi hash erano originariamente memorizzati in /etc/passwd , ma questo file doveva essere leggibile da tutti per rendere le informazioni disponibili per altri scopi, anche un semplice ls -l deve leggere /etc/passwd per convertire l'ID utente numerico di ogni proprietario di file nel proprio nome utente per la visualizzazione. Tuttavia, avere le password con hash in un file leggibile da tutti ha consentito agli utenti malintenzionati di ottenere facilmente tali hash e tentare di generare password utilizzabili(2) per gli account di altri utenti.

Per evitare ciò, le password con hash sono state infine spostate in un file leggibile solo da root (e occasionalmente da un gruppo privilegiato di amministratori), /etc/shadow . Questo nasconde gli hash ai normali utenti del sistema mantenendoli disponibili per scopi di autenticazione degli utenti.

Note :

  1. Pedante, lo so, ma le password memorizzate non lo sono crittografato. Vengono sottoposti ad hashing utilizzando un algoritmo di hashing crittograficamente sicuro (almeno al momento in cui è stato scritto). Le principali distinzioni rilevanti qui sono che gli hash sono di lunghezza fissa (la lunghezza del testo crittografato varia in base alla lunghezza del testo che è stato crittografato) e non reversibili (il testo crittografato può essere decrittografato; il testo con hash no).

  2. Poiché gli hash sono di lunghezza fissa, esiste un numero infinito di input che corrisponderanno a qualsiasi data rappresentazione hash. Un utente malintenzionato potrebbe quindi trovare una password funzionante che non è necessariamente la stessa della password dell'utente proprietario, sebbene ciò sia molto improbabile date le dimensioni dei moderni hash crittografici.


Il /etc/shadow il file è stato creato per motivi di sicurezza e contiene la password crittografata di ogni utente.

In origine, la password crittografata era memorizzata in /etc/passwd . /etc/passwd doveva essere leggibile in tutto il mondo in modo che il sistema potesse mappare gli ID utente ai nomi utente e in modo che gli utenti potessero trovare informazioni l'uno sull'altro, ad es. la home directory dell'altro utente, ovvero il suo numero di telefono, tradizionalmente memorizzato nel campo "gecos" e visualizzato dall'utility "finger".

Ma poi le persone si sono rese conto che si trattava di un problema di sicurezza. Chiunque abbia abbastanza tempo potrebbe fare quello che viene chiamato un attacco di forza bruta, generando programmaticamente password crittografate per ogni possibile password. Se l'attaccante lo ha fatto senza effettivamente provare ad accedere tramite telnet o ssh , il sistema non poteva sapere di essere stato attaccato.

Quindi la password crittografata è stata spostata nel /etc/shadow appena creato , leggibile solo da root.

Contiene anche altre informazioni che il /etc/passwd file non supportato relativo all'account e alla password dell'utente, ad es. quando la password è stata modificata l'ultima volta e quando scadrà.

Vedi man 5 shadow (versione web) per tutti i dettagli sul formato del file.

Non posso dire se sia lo stesso per SUSE, senza sapere con quale versione di SUSE hai a che fare. Ad esempio, il tuo sistema SUSE potrebbe utilizzare Blowfish anziché MD5.

Hai anche insinuato che stavi mescolando il tuo /etc/shadow file con un sistema che esegue una diversa distribuzione Linux, ma non ha detto quale fosse l'altra distribuzione.

Vedi ad esempio Problemi con la migrazione del file shadow da SuSE 9.3 a Ubuntu Server x86_64.

Per provare a capirlo, apri /etc/shadow e verifica se il campo della password crittografata inizia con $1$ o $2$ . Se contiene $1$ , quindi è MD5 e compatibile con la maggior parte delle altre distribuzioni. Se contiene $2$ , allora è probabilmente Blowfish secondo i file shadow di Blowfish su Debian.

Se stai usando Ubuntu, il primo risultato di ricerca su Google per Ubuntu blowfish potrebbe essere un buon punto di partenza.


Gli utenti sono elencati nel /etc/passwd file. Questo file contiene molte informazioni utilizzate dal sistema non solo per consentire agli utenti di accedere.

Ogni riga corrisponde a una voce dell'utente ei diversi campi sono separati da due punti. Il primo campo è il login, seguito dalla password corrispondente.

Le password crittografate venivano memorizzate in questo campo. Tuttavia, il /etc/passwd il file deve essere leggibile da tutti sul sistema, quindi la crittografia non impedisce gli attacchi di forza bruta, come è stato affermato da @Mikel. La soluzione era spostare queste password crittografate in un file leggibile solo da root:/etc/shadow .

Quindi, /etc/shadow contiene le password cifrate degli utenti del sistema. Il sistema sa che deve controllare le password in questo file quando i campi password sono in /etc/passwd contengono solo una x (che significa "croce passa a /etc/shadow")


Linux
  1. Come monitorare i file /etc/shadow e /etc/passwd per le modifiche con Auditd?

  2. Che cos'è Soft Links e Hard Links nel file system Linux

  3. Qual è lo scopo dei file utmp, wtmp e btmp in Linux

  4. Che cos'è Anacron e utilizzo di Anacron in Linux

  5. Cosa sono i file /dev/zero e /dev/null in Linux

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Che cos'è il file system Linux? Guida facile

/proc/cpuinfo e /proc/meminfo in Linux

Che cos'è il file /etc/passwd in Linux?

Comprendere il file /etc/fstab in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions