Creazione di una politica per le password in Linux

E ancora benvenuti! Domani iniziano le lezioni nel nuovo gruppo del corso «Amministratore Linux», pertanto pubblichiamo un articolo utile sull'argomento.

Creazione di una politica per le password in Linux

Nel tutorial precedente abbiamo spiegato come utilizzare pam_cracklib, per rendere più complessi le password nei sistemi Red Hat 6 o CentOS. In Red Hat 7 pam_pwquality ha sostituito cracklib come pam come modulo predefinito per il controllo delle password. Il modulo pam_pwquality è supportato anche in Ubuntu e CentOS, oltre che in molti altri sistemi operativi. Questo modulo semplifica la creazione di politiche di password per assicurarsi che gli utenti rispettino i tuoi standard di complessità delle password.

A lungo, l'approccio comune alle password era quello di costringere gli utenti a utilizzare caratteri maiuscoli e minuscoli, numeri o altri simboli. Queste regole di base sulla complessità delle password sono state attivamente promosse negli ultimi dieci anni. Ci sono state molte discussioni su se sia una buona pratica o meno. L'argomento principale contro l'imposizione di tali condizioni complesse era che gli utenti annotano le password su pezzi di carta e le conservano in modo non sicuro.

Un'altra politica, recentemente messa in discussione, richiede agli utenti di cambiare la propria password ogni x giorni. Sono state condotte ricerche che dimostrano che ciò danneggia anche la sicurezza.

Sono stati scritti molti articoli su queste discussioni, che giustificano l'una o l'altra posizione. Ma questo non è ciò di cui parleremo in questo articolo. Questo articolo mostrerà come impostare correttamente la complessità della password, piuttosto che gestire le politiche di sicurezza.

Impostazioni della politica delle password

Di seguito vedrete le impostazioni della politica delle password e una breve descrizione di ciascuna di esse. Molte di esse sono simili alle impostazioni nel modulo cracklib. Questo approccio semplifica il porting delle vostre politiche da un sistema precedente.

  • difok – Numero di caratteri nella vostra nuova password che NON devono essere presenti nella vostra vecchia password. (Impostazione predefinita 5)
  • minlen – Lunghezza minima della password. (Impostazione predefinita 9)
  • ucredit – Numero massimo di crediti per l'uso di caratteri maiuscoli (se il parametro > 0), o numero minimo richiesto di caratteri maiuscoli (se il parametro < 0). Per impostazione predefinita 1.
  • lcredit — Numero massimo di crediti per l'uso di lettere minuscole (se il parametro è > 0) o numero minimo richiesto di lettere minuscole (se il parametro è < 0). Di default 1.
  • dcredit — Numero massimo di crediti per l'uso di cifre (se il parametro è > 0) o numero minimo richiesto di cifre (se il parametro è < 0). Di default 1.
  • ocredit — Numero massimo di crediti per l'uso di altri simboli (se il parametro è > 0) o numero minimo richiesto di altri simboli (se il parametro è < 0). Di default 1.
  • minclass – Imposta il numero di classi richieste. Le classi includono i parametri sopra menzionati (lettere maiuscole, minuscole, cifre, altri simboli). Di default 0.
  • maxrepeat – Numero massimo di ripetizioni di un simbolo nella password. Di default 0.
  • maxclassrepeat — Numero massimo di simboli consecutivi in una sola classe. Di default 0.
  • gecoscheck – Controlla se la password contiene parole dalla stringa GECOS dell'utente. (Informazioni sull'utente, ad es. nome reale, posizione, ecc.) Di default 0 (disattivato).
  • dictpath – Percorso per i dizionari cracklib.
  • badwords – Parole separate da uno spazio che sono vietate nelle password (Nome dell'azienda, parola 'password' e simili).

Se il concetto di crediti sembra strano, non c'è nulla di cui preoccuparsi; è perfettamente normale. Ne parleremo più in dettaglio nei prossimi paragrafi.

Configurazione della politica delle password

Prima di iniziare a modificare i file di configurazione, è buona prassi annotare in anticipo la politica di base delle password. Ad esempio, utilizzeremo le seguenti regole di complessità:

  • La password deve avere una lunghezza minima di 15 caratteri.
  • Nella password, lo stesso carattere non deve ripetersi più di due volte.
  • Nella password, le classi di caratteri possono ripetersi fino a quattro volte.
  • La password deve contenere caratteri di ciascuna classe.
  • La nuova password deve avere 5 nuovi caratteri rispetto a quella precedente.
  • Attivare il controllo GECOS.
  • Vietare le parole 'password, pass, word, putorius'

Ora che abbiamo esposto la politica, possiamo modificare il file /etc/security/pwquality.conf, per rafforzare i requisiti di complessità della password. Di seguito è riportato un esempio di file con commenti per una migliore comprensione.

# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putorius

Come avrete notato, alcuni parametri nel nostro file sono ridondanti. Ad esempio, il parametro minclass è eccessivo, poiché stiamo già utilizzando almeno due simboli da quella classe, usando i campi [u,l,d,o]credit. Anche la nostra lista di parole vietate è eccessiva, poiché abbiamo vietato la ripetizione di qualsiasi classe più di 4 volte (tutte le parole nella nostra lista sono scritte in minuscolo). Ho incluso queste impostazioni solo per dimostrare come usarle per personalizzare la politica delle password.
Una volta creata la tua politica, puoi forzare gli utenti a cambiare le loro password al prossimo accesso sistema.

Un'altra cosa strana che potresti aver notato è che i campi [u,l,d,o]credit contengono un numero negativo. Questo perché i numeri maggiori o uguali a 0 daranno credito per l'uso del simbolo nella tua password. Se il campo contiene un numero negativo, significa che è richiesto un numero specifico.

Cosa sono i crediti (credit)?

Li chiamo crediti, poiché rappresentano più accuratamente la loro funzione. Se il valore dell'impostazione è maggiore di 0, aggiungi un numero di "crediti per simbolo" pari a "x" alla lunghezza della password. Ad esempio, se tutte le impostazioni (u,l,d,o)credit Se imposti a 1 e la lunghezza richiesta della password è 6, avrai bisogno di 6 caratteri per soddisfare il requisito di lunghezza, poiché ogni carattere maiuscolo, minuscolo, cifra o altro simbolo ti darà un credito.

Se imposti dcredit a 2, teoricamente potresti utilizzare una password lunga 9 caratteri e ottenere 2 crediti per i caratteri numerici, quindi la lunghezza della password potrebbe già essere 10.

Guarda questo esempio. Ho impostato la lunghezza della password a 13, impostato dcredit a 2 e tutto il resto a 0.

$ pwscore
 Thisistwelve
 Controllo della qualità della password fallito:
  La password è più corta di 13 caratteri

$ pwscore
 Th1sistwelve
 18

Il mio primo controllo è fallito, poiché la lunghezza della password era inferiore a 13 caratteri. La prossima volta ho cambiato la lettera “I” con il numero “1” e ho ottenuto due crediti per i numeri, il che ha equiparato la password a 13.

Verifica della password

Il pacchetto libpwquality fornisce le funzionalità descritte nell'articolo. Viene fornito anche con il programma pwscore, che è progettato per controllare la complessità della password. L'abbiamo usato sopra per verificare i crediti.
Utility pwscore legge da stdin. Basta eseguire l'utilità e inserire la propria password, restituirà un errore o un valore da 0 a 100.

L'indice di qualità della password è correlato a una impostazione minlen nel file di configurazione. In generale, un punteggio inferiore a 50 è considerato 'una password normale', mentre punteggi superiori sono considerati 'una password forte'. Qualsiasi password che supera i controlli di qualità (soprattutto il controllo obbligatorio cracklib) deve resistere agli attacchi di dizionario, e una password con un punteggio superiore a 50 con l'impostazione minlen predefinita resiste anche ad attacchi di forza bruta. pwquality

Conclusione

Impostazione è molto più semplice rispetto agli inconvenienti legati all'editing diretto dei file . In questa guida, abbiamo trattato tutto ciò che ti serve per impostare le politiche delle password in Red Hat 7, CentOS 7 e anche nei sistemi Ubuntu. Abbiamo anche discusso del concetto di crediti, di cui si parla raramente in dettaglio, quindi questo argomento è spesso rimasto poco chiaro a chi non ha mai avuto esperienza. cracklib pwquality man page pampam_pwquality man page

Fonti:

pwscore man page
Choosing Secure Passwords – Bruce Schneier
Lorrie Faith Cranor discute i suoi studi sulle password presso la CMU

Link utili:

Il famoso fumetto xkcd sull'entropia
Lorrie Faith Cranor discute i suoi studi sulle password alla CMU
Il famoso fumetto xkcd sull'entropia

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster