Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1119

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Linux Shadow Password HOWTO:  Perch&eacute; "oscurare" il vostro file passwd?</TITLE>
<LINK HREF="Shadow-Password-HOWTO-3.html" REL=next>
<LINK HREF="Shadow-Password-HOWTO-1.html" REL=previous>
<LINK HREF="Shadow-Password-HOWTO.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="Shadow-Password-HOWTO-3.html">Avanti</A>
<A HREF="Shadow-Password-HOWTO-1.html">Indietro</A>
<A HREF="Shadow-Password-HOWTO.html#toc2">Indice</A>
<HR>
<H2><A NAME="s2">2.  Perch&eacute; "oscurare" il vostro file passwd?</A></H2>

<P>Come impostazione predefinita, la maggior parte delle attuali distribuzioni Linux non contengono la <EM>Shadow Suite</EM> installata. Questo riguarda la Slackware 2.3, Slackware 3.0 ed altre famose distribuzioni. Una delle ragioni di questo &egrave; che le informazioni sul copyright nella <EM>Shadow Suite</EM> originale non spiegavano chiaramente se si dovesse versare una somma per la ridistribuzione. Linux usa un Copyright GNU (a cui talvolta si fa riferimento come Copyleft) che permette alle persone di impacchettarlo in un supporto conveniente (come una distribuzione su CD-ROM) e di venderlo.
<P>L'attuale manutentore della <EM>Shadow Suite</EM>, 
<A HREF="mailto:marekm@i17linuxb.ists.pwr.wroc.pl">Marek Michalkiewicz &lt;marekm@i17linuxb.ists.pwr.wroc.pl></A> ha ricevuto il codice sorgente dall'autore originale con un copyright tipo BSD che permette la ridistribuzione. Ora che i problemi di copyright sono risolti, ci si aspetta che le future distribuzioni conterranno le shadow password come opzione predefinita.
Fino ad allora, dovrete installarvele voi.
<P>
<P>Se avete installato la vostra distribuzione da un CD-ROM, potrebbe succedere che, anche se la distribuzione non aveva la <EM>Shadow Suite</EM> installata, alcuni dei file che vi occorrono per installare la <EM>Shadow Suite</EM> siano sul CD-ROM.
<P>
<P><EM>Comunque, le versioni 3.3.1, 3.3.1-2 della Shadow Suite e la shadow-mk potrebbero avere problemi di sicurezza con il loro programma di login e molti altri programmi <EM>SUID root</EM> che si trovano insieme ad esse, e non dovrebbero essere pi&ugrave; usate.</EM>
<P>Tutti i file necessari si possono ottenere via FTP anonimo o tramite il World Wide Web.
<P>Su un sistema Linux senza la <EM>Shadow Suite</EM> installata, le informazioni sugli utenti, comprese la password, sono contenute nel file <CODE>/etc/passwd</CODE>. La password viene conservata in un formato <EM>criptato</EM>. Se chiedete ad un esperto crittografo, comunque, lui o lei vi diranno che la password &egrave; in realt&agrave; in un formato <EM>codificato</EM> piuttosto che <EM>criptato</EM>, perch&eacute; quando viene usato crypt(3), viene preso un testo vuoto e la password &egrave; usata come chiave. Perci&ograve;, da qui in poi, in questo documento, user&ograve; il termine <EM>codificato</EM>.
<P>Tecnicamente ci si riferisce all'algoritmo usato per codificare il campo password come ad una <EM>funzione hash monodirezionale</EM>. Questa &egrave; un algoritmo che &egrave; facile eseguire in una direzione, ma molto difficile eseguire nella direzione opposta. Altre informazioni sull'algoritmo usato si possono trovare nel paragrafo 2.4 o nella vostra pagina di manuale per crypt(3).
<P>Quando un utente sceglie o gli viene assegnata una password, questa viene codificata con un valore generato casualmente detto <EM>seme</EM> ("salt"). Questo significa che una certa password pu&ograve; essere memorizzata in 4096 modi diversi. Il valore del <EM>seme</EM> viene memorizzato insieme alla password codificata.
<P>Quando un utente si collega e fornisce una password, prima viene prelevato il <EM>seme</EM> dalla password codificata in memoria. Poi la password digitata viene <EM>codificata</EM> con tale valore del <EM>seme</EM> e quindi confrontata con la password <EM>codificata</EM>. Se c'&egrave; corrispondenza l'utente viene autenticato.
<P>&Egrave; computazionalmente difficile (ma non impossibile), ricostruire la password originale dalla password <EM>codificata</EM> casualmente. Comunque, su ogni sistema con pi&ugrave; di qualche utente, almeno alcune delle password saranno parole comuni (o semplici variazioni di parole comuni).
<P>Gli "scassinatori" di sistemi informatici sono a conoscenza di questo, e semplicemente critteranno un vocabolario di parole e password comuni usando tutti i 4096 possibili valori di <EM>seme</EM>. Quindi confronteranno le password codificate nel vostro file <CODE>/etc/passwd</CODE> con il loro database. Una volta trovata una corrispondenza, avranno la password per un altro account. Questo viene chiamato <EM>attacco a vocabolario</EM> ed &egrave; uno dei metodi pi&ugrave; comuni per ottenere o diffondere accessi non autorizzati ad un sistema.
<P>Se ci pensate, una password di 8 caratteri codifica fino a 4096*13
stringhe di caratteri. Perci&ograve; un vocabolario di, diciamo,
400.000 parole comuni, nomi, password e semplici variazioni
star&agrave; facilmente su un disco fisso da 4GB. Lo scassinatore dovr&agrave; solo ordinarle e cercare le corrispondenze. Poich&eacute; un disco fisso da 4GB si pu&ograve; avere a meno di $1000.00, &egrave; ampiamente nelle possibilit&agrave; di molti scassinatori di sistemi informatici.
<P>Inoltre, se uno scassinatore ottiene prima il file <CODE>/etc/passwd</CODE>, avr&agrave; bisogno solo di codificare il vocabolario con i valori del <CODE>seme</CODE> effettivamente contenuti nel vostro file <CODE>/etc/passwd</CODE>. Questo metodo pu&ograve; essere usato dall'adolescente medio con un paio di Megabyte liberi e un computer 486.
<P>Anche senza molto spazio su disco, utility come crack(1) possono di solito corrompere almeno un paio di password su un sistema con un discreto numero di utenti (assumendo che gli utenti del sistema possano scegliersi le loro password).
<P>Il file <CODE>/etc/passwd</CODE> contiene anche informazioni tipo gli user ID e i group ID che sono usati da molti programmi di sistema. Perci&ograve; il file <CODE>/etc/passwd</CODE> <EM>deve</EM> rimanere accessibile a tutti. Se voi cambiaste il file <CODE>/etc/passwd</CODE> in modo che nessuno possa leggerlo, la prima cosa che notereste sarebbe che il comando <CODE>ls -s</CODE> ora mostrerebbe gli user ID invece dei nomi! 
<P>La <EM>Shadow Suite</EM> risolve il problema spostando le password in
un altro file (di solito <CODE>/etc/shadow</CODE>). Il file <CODE>/etc/shadow</CODE> viene impostato in modo che quasi nessuno possa leggerlo. Solo <EM>root</EM> potr&agrave; leggere e scrivere il file <CODE>/etc/shadow</CODE>. Alcuni programmi (come xlock) non devono poter cambiare le password, occorre solo che le possano verificare. Questi programmi possono essere eseguiti <EM>SUID root</EM> oppure si pu&ograve; creare un gruppo <EM>shadow</EM> a cui &egrave; permesso l'accesso solo in lettura al file <CODE>/etc/shadow</CODE>. Quindi i programmi possono essere eseguiti <EM>SGID shadow</EM>.
<P>Spostando le password nel file <CODE>/etc/shadow</CODE>, stiamo effettivamente impedendo allo scassinatore di avere accesso alle password codificate con cui eseguire l'<EM>attacco a vocabolario</EM>.
<P>Inoltre, la <EM>Shadow Suite</EM> aggiunge molte altre caratteristiche interessanti:
<UL>
<LI>un file di configurazione per impostare le caratteristiche predefinite di login (<CODE>/etc/login.defs</CODE>)</LI>
<LI>utility per aggiungere, modificare e cancellare account di utenti e gruppi</LI>
<LI>invecchiamento e scadenza delle password</LI>
<LI>scadenza e blocco degli account</LI>
<LI>password di gruppo "oscurate" (opzionale)</LI>
<LI>password di doppia lunghezza (password da 16 caratteri) [SCONSIGLIATO]</LI>
<LI>migliore controllo sulla scelta delle password degli utenti</LI>
<LI>dial-up password</LI>
<LI>programmi di autenticazione secondaria [SCONSIGLIATO]</LI>
</UL>
<P>Installare la <EM>Shadow Suite</EM> contribuisce alla sicurezza del sistema ma ci sono anche molte altre cose che si possono fare per migliorare la sicurezza di un sistema Linux, e ci saranno alcuni Linux Security HOWTO che discutono altre misure di sicurezza ed aspetti correlati.
<P>Per informazioni aggiornate su altri aspetti della sicurezza in Linux, tra cui avvertimenti sulle debolezze note guardate la 
<A HREF="http://bach.cis.temple.edu/linux/linux-security/">Linux Security home page.</A><P>
<H2><A NAME="ss2.1">2.1 Perch&egrave; potreste NON voler "oscurare" il vostro file passwd</A>
</H2>

<P>Ci sono alcune circostanze e configurazioni in cui installare la <EM>Shadow Suite</EM>  <EM>NON</EM> sarebbe una buona idea:
<UL>
<LI>la macchina non contiene account di utenti</LI>
<LI>la vostra macchina funziona su una LAN e usa NIS (Network Information Services) per ottenere e fornire nomi e password degli utenti alle altre macchine sulla rete (in realt&agrave; si potrebbe fare, ma &egrave; oltre lo scopo di questo documento, e in realt&agrave; non aumenterebbe comunque molto la sicurezza)</LI>
<LI>la vostra macchina viene usata dai server dei terminali per verificare gli utenti con NFS (Network File System), NIS, o qualche altro metodo</LI>
<LI>la vostra macchina esegue altro codice per validare gli utenti, e non c'&egrave; nessuna versione shadow disponibile, e non avete il codice sorgente.</LI>
</UL>
<P>
<H2><A NAME="ss2.2">2.2 Formato del file /etc/passwd</A>
</H2>

<P>Un file <CODE>/etc/passwd</CODE> non "oscurato" ha il seguente formato:
<BLOCKQUOTE><CODE>
<PRE>
nomeutente:passwd:UID:GID:nome_completo:directory:shell
</PRE>
</CODE></BLOCKQUOTE>

Dove:
<DL>
<DT><B><CODE>nomeutente</CODE></B><DD><P>Il nome (di login) dell'utente
<DT><B><CODE>passwd</CODE></B><DD><P>La password codificata
<DT><B><CODE>UID</CODE></B><DD><P>Identificativo numerico dell'utente
<DT><B><CODE>GID</CODE></B><DD><P>Identificativo numerico predefinito del gruppo
<DT><B><CODE>nome_completo</CODE></B><DD><P>Il nome completo dell'utente - in realt&agrave; questo campo viene chiamato campo GECOS (General Electric Comprehensive Operating System) e pu&ograve; contenere altre informazioni invece del solo nome completo. I comandi Shadow e le pagine di manuale si riferiscono a questo campo come al campo commento.
<DT><B><CODE>directory</CODE></B><DD><P>Home directory dell'utente (percorso completo)
<DT><B><CODE>shell</CODE></B><DD><P>Shell di login dell'utente (percorso completo)
</DL>

Ad esempio:
<BLOCKQUOTE><CODE>
<PRE>
nomeutente:Npge08pfz4wuk:503:100:Nome Completo:/home/nomeutente:/bin/sh
</PRE>
</CODE></BLOCKQUOTE>

Dove <CODE>Np</CODE> &egrave; il seme e <CODE>ge08pfz4wuk</CODE> &egrave;
la password <EM>codificata</EM>. La coppia seme/password codificata
avrebbe anche potuto essere <CODE>kbeMVnZM0oL7I</CODE> e queste due sono
esattamente la stessa password. Ci sono 4096 possibili codifiche per
la stessa password (la password usata in questo esempio 
&egrave; 'password', una <EM>pessima</EM> password). 
<P>Una volta che la Shadow Suite &egrave; installata, il file <CODE>/etc/passwd</CODE> invece conterr&agrave;:
<BLOCKQUOTE><CODE>
<PRE>
nomeutente:x:503:100:Nome Completo:/home/nomeutente:/bin/sh
</PRE>
</CODE></BLOCKQUOTE>

La <CODE>x</CODE> nel secondo campo in questo caso &egrave; ora soltanto un segnaposto. Il formato del file <CODE>/etc/passwd</CODE> non &egrave; di fatto cambiato, solo che non contiene pi&ugrave; le password <EM>codificate</EM>. Questo significa che qualunque programma che legge il file <CODE>/etc/passwd</CODE>, ma in realt&agrave; non ha bisogno di verificare le password, funzioner&agrave; ancora correttamente.
<P>Le password sono ora situate nel file shadow (di solito il file <CODE>/etc/shadow</CODE>).
<P>
<H2><A NAME="ss2.3">2.3 Formato del file shadow</A>
</H2>

<P>Il file <CODE>/etc/shadow</CODE> contiene le seguenti informazioni:
<BLOCKQUOTE><CODE>
<PRE>
nomeutente:passwd:ult:pu&ograve;:deve:avv:scad:disab:riservato
</PRE>
</CODE></BLOCKQUOTE>

Dove:
<DL>
<DT><B><CODE>nomeutente</CODE></B><DD><P>Il nome dell'utente
<DT><B><CODE>passwd</CODE></B><DD><P>La password codificata
<DT><B><CODE>ult</CODE></B><DD><P>Giorni dal 1 Gennaio 1970 fino all'ultima modifica della password 
<DT><B><CODE>pu&ograve;</CODE></B><DD><P>Giorni prima che la password possa essere cambiata
<DT><B><CODE>deve</CODE></B><DD><P>Giorni dopo i quali la password deve essere cambiata
<DT><B><CODE>avv</CODE></B><DD><P>Giorni prima della scadenza della password in cui l'utente viene avvisato
<DT><B><CODE>scad</CODE></B><DD><P>Giorni dopo la scadenza della password in cui l'account viene disabilitato 
<DT><B><CODE>disab</CODE></B><DD><P>Giorni a partire dal 1 Gennaio 1970 dopo cui l'account verr&agrave; disabilitato
<DT><B><CODE>riservato</CODE></B><DD><P>Campo riservato
</DL>

Il precedente esempio potrebbe allora essere:
<BLOCKQUOTE><CODE>
<PRE>
nomeutente:Npge08pfz4wuk:9479:0:10000::::
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H2><A NAME="ss2.4">2.4 Uno sguardo a crypt(3)</A>
</H2>

<P>Dalla pagina di manuale di crypt(3):
<P>&quot;<EM>crypt</EM> &egrave; la funzione di crittaggio delle password. Si basa sull'algoritmo <EM>Data Encryption Standard</EM> con variazioni aventi lo scopo (tra le altre cose) di scoraggiare l'uso di implementazioni hardware per la ricerca della chiave.
<P>[La] chiave &egrave; la password digitata dall'utente. [La stringa codificata &egrave; tutta vuota.]
<P>[Il] <EM>seme</EM> &egrave; una stringa di due caratteri scelta nell'insieme [a-z  A-Z 0-9./].
Questa stringa viene usata per perturbare l'algoritmo in uno tra 4096 modi diversi.
<P>Prendendo i 7 bit meno significativi di ogni carattere della chiave, si ottiene una chiave di 56 bit.
Questa chiave di 56 bit viene usata per crittare ripetutamente una stringa costante (di solito una stringa costituita di zeri). Il valore restituito punta alla password crittata, un insieme di 13 caratteri ASCII stampabili (i primi due caratteri sono il seme stesso). Il valore di ritorno punta a dati statici il cui contenuto viene sovrascritto da ogni chiamata.
<P><B>Attenzione:</B> lo spazio chiave consiste di 2**56 cio&egrave; 7.2e16 possibili valori. <B>&Egrave; possibile</B> effettuare ricerche esaustive di questo spazio chiave usando computer massivamente paralleli. &Egrave; disponibile del software, come <CODE>crack(1)</CODE>, che cercher&agrave; la porzione di questo spazio chiave che viene generalmente usata dagli umani per le password. Perci&ograve; la scelta delle password dovrebbe, come minimo, evitare parole e nomi comuni. Si raccomanda l'uso di un programma <CODE>passwd(1)</CODE> che, durante il processo di selezione, controlla se le password sono vulnerabili a manomissioni.
<P>Lo stesso algoritmo DES ha alcune arguzie che rendono l'uso dell'interfaccia <CODE>crypt(3)</CODE> una scelta inefficace per qualunque altra cosa che non sia l'autenticazione di password. Se state pensando di usare l'interfaccia <CODE>crypt(3)</CODE> per un progetto di crittografia non lo fate: prendete un buon libro sulla crittografia e una delle librerie DES ampiamente disponibili.&quot;
<P>Molte <EM>Shadow Suite</EM> contengono codice per raddoppiare la lunghezza della password a 16 caratteri. Esperti in <CODE>DES</CODE> sconsigliano questo, dato che la codifica viene semplicemente applicata prima alla met&agrave; di sinistra e poi alla met&agrave; di destra della password allungata. A causa del modo in cui funziona <CODE>crypt</CODE>, la password codificata di lunghezza doppia potrebbe risultare addirittura <EM>meno</EM> sicura. Inoltre, &egrave; meno facile che un utente riesca a ricordare una password da 16 caratteri.
<P>&Egrave; in via di sviluppo un lavoro che permetterebbe all'algoritmo di autenticazione di essere sostituito con qualcosa di pi&ugrave; sicuro, che supporti password pi&ugrave; lunghe (in particolare l'algoritmo MD5) e mantenga compatibilit&agrave; con il metodo <CODE>crypt</CODE>.
<P>Se state cercando un buon libro sulla crittografia, vi consiglio:
<PRE>
        "Applied Cryptography: Protocols, Algorithms, and Source Code in C"
        di Bruce Schneier &lt;schneier@chinet.com>
        ISBN: 0-471-59756-2
</PRE>
<P>
<HR>
<A HREF="Shadow-Password-HOWTO-3.html">Avanti</A>
<A HREF="Shadow-Password-HOWTO-1.html">Indietro</A>
<A HREF="Shadow-Password-HOWTO.html#toc2">Indice</A>
</BODY>
</HTML>