Creazione di una politica di password in Linux

Ciao di nuovo! Domani inizieranno le lezioni del nuovo gruppo di corsi "Amministratore Linux", a questo proposito, pubblichiamo un utile articolo sull'argomento.

Creazione di una politica di password in Linux

Nel tutorial precedente ti abbiamo spiegato come utilizzare pam_cracklibper rendere le password sui sistemi più complesse Red Hat 6 o CentOS. In Cappello Rosso 7 pam_pwquality sostituito cracklib come pam modulo predefinito per il controllo delle password. Modulo pam_pwquality supportato anche su Ubuntu e CentOS, così come su molti altri sistemi operativi. Questo modulo semplifica la creazione di policy sulle password per garantire che gli utenti accettino gli standard di robustezza della password.

Per molto tempo, l'approccio comune alle password è stato quello di costringere l'utente a utilizzare lettere maiuscole, minuscole, numeri o altri simboli. Queste regole di base per la complessità delle password sono state ampiamente promosse negli ultimi dieci anni. Si è discusso molto se questa sia una buona pratica o meno. L’argomento principale contro l’impostazione di condizioni così complesse era che gli utenti scrivevano le password su pezzi di carta e le conservavano in modo non sicuro.

Un'altra politica recentemente messa in discussione obbliga gli utenti a cambiare la propria password ogni x giorni. Ci sono stati alcuni studi che hanno dimostrato che questo è anche dannoso per la sicurezza.

Sul tema di queste discussioni sono stati scritti molti articoli che confermano un punto di vista o un altro. Ma non è di questo che parleremo in questo articolo. In questo articolo parleremo di come impostare correttamente la complessità della password anziché gestire la politica di sicurezza.

Impostazioni della politica della password

Di seguito vedrai le opzioni della politica della password e una breve descrizione di ciascuna. Molti di essi sono simili ai parametri nel modulo cracklib. Questo approccio semplifica il trasferimento delle policy dal sistema legacy.

  • Mi dispiace – Il numero di caratteri nella tua nuova password che NON dovrebbero essere presenti nella tua vecchia password. (Predefinito 5)
  • minuti – Lunghezza minima della password. (Predefinito 9)
  • ucredit – Il numero massimo di crediti per l'utilizzo di caratteri maiuscoli (se parametro > 0) o il numero minimo richiesto di caratteri maiuscoli (se parametro < 0). L'impostazione predefinita è 1.
  • credito — Il numero massimo di crediti per l'utilizzo di caratteri minuscoli (se parametro > 0) o il numero minimo richiesto di caratteri minuscoli (se parametro < 0). L'impostazione predefinita è 1.
  • credito — Il numero massimo di crediti per l'utilizzo delle cifre (se parametro > 0) o il numero minimo richiesto di cifre (se parametro < 0). L'impostazione predefinita è 1.
  • lui crede — Il numero massimo di crediti per l'utilizzo di altri simboli (se parametro > 0) o il numero minimo richiesto di altri simboli (se parametro < 0). L'impostazione predefinita è 1.
  • minclass – Imposta il numero di classi richieste. Le classi includono i parametri di cui sopra (caratteri maiuscoli, caratteri minuscoli, numeri, altri caratteri). L'impostazione predefinita è 0.
  • maxrepeat – Il numero massimo di volte in cui un carattere può essere ripetuto in una password. L'impostazione predefinita è 0.
  • maxclassrepeat — Il numero massimo di caratteri consecutivi in ​​una classe. L'impostazione predefinita è 0.
  • gecoscheck – Controlla se la password contiene parole delle stringhe GECOS dell'utente. (Informazioni sull'utente, ad esempio nome reale, posizione, ecc.) L'impostazione predefinita è 0 (disattivato).
  • dictpath – Andiamo ai dizionari cracklib.
  • parolacce – Parole separate da spazi vietate nelle password (nome dell'azienda, la parola "password", ecc.).

Se il concetto di prestito suona strano, va bene, è normale. Ne parleremo più approfonditamente nelle sezioni seguenti.

Configurazione della politica della password

Prima di iniziare a modificare i file di configurazione, è buona pratica scrivere in anticipo una politica di password di base. Ad esempio, utilizzeremo le seguenti regole di difficoltà:

  • La password deve avere una lunghezza minima di 15 caratteri.
  • Lo stesso carattere non deve essere ripetuto più di due volte nella password.
  • Le classi di caratteri possono essere ripetute fino a quattro volte in una password.
  • La password deve contenere caratteri di ciascuna classe.
  • La nuova password dovrà avere 5 caratteri nuovi rispetto a quella vecchia.
  • Abilita il controllo GECOS.
  • Vietare le parole “password, pass, word, putorius”

Ora che abbiamo definito la policy, possiamo modificare il file /etc/security/pwquality.confper aumentare i requisiti di complessità della password. Di seguito è riportato un file di esempio 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 avrai notato, alcuni parametri nel nostro file sono ridondanti. Ad esempio, il parametro minclass è ridondante poiché utilizziamo già almeno due caratteri della classe che utilizza i campi [u,l,d,o]credit. Anche il nostro elenco di parole che non possono essere utilizzate è ridondante, poiché abbiamo proibito di ripetere qualsiasi lezione 4 volte (tutte le parole nel nostro elenco sono scritte in caratteri minuscoli). Ho incluso queste opzioni solo per dimostrare come utilizzarle per configurare la policy della password.
Una volta creata la policy, puoi obbligare gli utenti a modificare la propria password al successivo accesso. sistema.

Un'altra cosa strana che potresti aver notato sono i campi [u,l,d,o]credit contenere un numero negativo. Questo perché i numeri maggiori o uguali a 0 daranno credito per l'utilizzo del carattere nella tua password. Se il campo contiene un numero negativo significa che è necessaria una certa quantità.

Cosa sono i prestiti?

Li chiamo prestiti perché rendono il loro scopo nel modo più accurato possibile. Se il valore del parametro è maggiore di 0, si aggiunge un numero di "crediti carattere" pari a "x" alla lunghezza della password. Ad esempio, se tutti i parametri (u,l,d,o)credit impostato su 1 e la lunghezza della password richiesta era 6, avrai bisogno di 6 caratteri per soddisfare i requisiti di lunghezza perché ogni lettera maiuscola, minuscola, cifra o altro carattere ti darà un credito.

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

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

$ pwscore
 Thisistwelve
 Password quality check failed:
  The password is shorter than 13 characters

$ pwscore
 Th1sistwelve
 18

Il mio primo controllo non è riuscito perché la password era lunga meno di 13 caratteri. La volta successiva ho cambiato la lettera "I" con il numero "1" e ho ricevuto due crediti per i numeri, che hanno reso la password uguale a 13.

Test della password

Pacchetto libpwquality fornisce la funzionalità descritta nell'articolo. Viene fornito anche con un programma pwscore, progettato per verificare la complessità della password. L'abbiamo usato sopra per controllare i prestiti.
Utilità pwscore legge da stdin. Basta eseguire l'utilità e scrivere la password, verrà visualizzato un errore o un valore da 0 a 100.

Il punteggio di qualità della password è correlato al parametro minlen nel file di configurazione. In generale, un punteggio inferiore a 50 è considerato una “password normale”, mentre un punteggio superiore è considerato una “password complessa”. Qualsiasi password che superi i controlli di qualità (in particolare la verifica forzata cracklib) deve resistere agli attacchi del dizionario e una password con un punteggio superiore a 50 con l'impostazione minlen anche per impostazione predefinita brute force attacchi.

conclusione

registrazione pwquality – è facile e semplice rispetto alla scomodità di utilizzo cracklib con modifica diretta del file pam. In questa guida abbiamo trattato tutto ciò di cui avrai bisogno durante l'impostazione delle policy relative alle password su Red Hat 7, CentOS 7 e persino sui sistemi Ubuntu. Abbiamo parlato anche del concetto di prestito, di cui raramente si parla nel dettaglio, per cui questo argomento spesso rimaneva poco chiaro a chi non lo aveva mai affrontato in precedenza.

Fonti:

pagina man di pwquality
Pagina man pam_pwquality
Pagina man di pwscore

Link utili:

Scegliere password sicure – Bruce Schneier
Lorrie Faith Cranor parla dei suoi studi sulle password alla CMU
La famigerata vignetta xkcd sull'Entropia

Fonte: habr.com

Aggiungi un commento