Il blog sull'informatica

Password Unix ed encryption method

A differenza di Microsoft Windows, l’encryption method delle password Unix/Linux risulta piuttosto sicuro. In particolare, le credenziali di accesso degli utenti vengono salvate (generalmente) in due file, ovvero:

1) /etc/passwd (che contiente alcuni dati relativi agli utenti, come username, uid, ecc.);

2) /etc/shadow (che contiene il digest delle password).

Ora, il suddetto digest può essere generato utilizzando algoritmi di cifratura diversi, come DES, MD5, SHA256, SHA512 et simila. Inutile dire che DES è piuttosto insicuro, soprattutto a giudicare dalla dimensione del digest che produce (7 byte + salt). Ciò porta la nostra box a prendere in considerazione solo i primi 8 caratteri delle password, ignorando il resto (che si traduce in una maggiore vulnerabilità agli attacchi bruteforce).

Proprio per questo motivo, è opportuno controllare che la nostra linux box non contenga password cifrate mediante DES. Per fare ciò è sufficiente digitare:

nightfly@nightbox:/etc$ sudo getent shadow|cut -d : -f 1,2|grep ":[^$*!]"|cut -d : -f 1

Se l’output relativo al suddetto comando è nullo possiamo stare tranquilli.

Tra i metodi di cifratura citati in precedenza il migliore è sicuramente SHA512 (dove 512 rappresenta la dimensione, in bit, dell’output). Ad una maggiore dimensione dell’output (ovvero del digest), corrisponde una maggiore resistenza agli attacchi bruteforce di tipo esaustivo, dunque anche se un eventuale attaccatte riuscisse ad ottenere una copia del file shadow, le probabilità di individuare le password corrette sono minime (ma non inesistenti – leggasi collisioni).

Per utilizzare tale metodo di cifratura occorre modificare il contenuto del file /etc/login.defs. Nella fattispecie, la variabile che ci interessa è la seguente:

ENCRYPT_METHOD

il cui valore deve essere settato a SHA512:

ENCRYPT_METHOD SHA512

Affinchè tutto funzioni a dovere, è inoltre necessario controllare quale modulo PAM (e relativi parametri) sta utilizzando la nostra macchina per autenticare gli utenti. Per fare ciò verifichiamo il contenuto del file /etc/pam.d/common-password, che dovrà includere la seguente direttiva:

password        [success=1 default=ignore]      pam_unix.so obscure sha512

In particolare, stiamo dicendo al modulo pam_unix.so che le password salvate sono cifrate in sha512 e che quindi, per verificare la correttezza delle stesse, dovrà cifrare il testo immesso dall’utente utilizzando il suddetto algoritmo di hash. Se i due digest (quello presente nel file shadow e quello generato da PAM) corrispondono, l’utente verrà autenticato e gli sarà garantito l’accesso alla linux box.

Ecco spiegato il motivo per il quale il valore della variabile ENCRYPT_METHOD ed il parametro passato a pam_unix.so devono coincidere: algoritmi di cifratura diversi (ad esempio sha512 nel primo caso ed md5 nel secondo), genereranno digest diversi (per contenuto e per dimensione), quindi l’utente non potrà mai essere autenticato (nonostante la password da egli inserita sia corretta).

Il post termina qui.

Alla prossima.

Password Unix ed encryption methodultima modifica: 2012-06-11T10:00:00+02:00da
Reposta per primo quest’articolo