PAM - Locking degli account

L'idea e' quella di bloccare l'account di un utente dopo alcuni tentativi consecutivi di login errati. Una scelta del genere potrebbe prestare il fianco ad attacchi DoS, o scherzi idioti quali il cercare di loggarsi con lo username di qualche collega ed una password errata per bloccarne l'account. Essa ha pero' l'indubbio vantaggio di rendere impossibile tentativi esaustivi per indovinare la password di un'utente, avendo solamente un numero limitato di chances.
Il problema degli attacchi DoS, e' invece legato agli account di sistema utilizzati per i servizi, dai quali e' pero' possibile mettersi al riparo, disabilitando il login diretto per tali account.
Nel mio caso ho scelto di bloccare esclusivamente gli account utente, per la precisione dopo 5 errori consecutivi, inserendo le due righe seguenti in /etc/pam.d/login:

    auth         required    pam_tally.so    onerr=fail unlock_time=20       deny=5 per_user
    account     required    pam_tally.so     reset

La prima riga, relativa all'autenticazione, consente di contare il numero dei tentativi di login o di su falliti per ogni utente, andando a leggerli dal file /var/log/faillog. L'opzione onerr=fail indica al modulo come comportarsi in caso di errore, come ad esempio l'impossibilita' di accedere al file faillog, mentre  unlock_time=20 indica al sistema di bloccare l'account dell'utente per 20 minuti in caso di un numero di tentativi di login errati superiore al valore di deny.
La seconda riga gestisce altri aspetti dell'account, resettando il contatore dei login falliti in caso l'utente sia stato autenticato con successo.
Anziche' bloccare definitivamente l'account, richiedendo quindi l'intervento dell'amministratore di sistema in caso qualche utente avesse inavvertitamente sbagliato troppe volte ad inserire la propria password  (ad esempio per non essersi accordo del caps lock attivo), e' stata scelta una soluzione piu' dolce, facendo in modo che esso resti inaccessibile per 20 minuti. Penso chi voglia fare delle prove esaustive per scoprire una password, questo deterrente possa essere sufficiente.
Inoltre, temendo che qualcuno possa cercare di bloccare alcuni account di sistema, nella prima riga e' stato utilizzato il parametro per_user. Tale parametro indica al modulo pam_tally di ignorare il valore di deny per gli account per i quali il massimo numero di errori al login sia stato settato manualmente, ad esempio con il comando faillog -u nomeutente -m numero_errori. Impostando a -1 il numero di errori si puo' disattivare il limite al numero di login falliti, mentre il valore 0 indica di usare come riferimento il parametro deny del modulo pam_tally.
In caso di necessita' e' inoltre possibile verificare il numero di fallimenti associati a ciascun utente con il comando pam_tally nomeutente, ed eventualmente riportarli a zero con pam_tally --user nomeutente --reset.
Per default il modulo pam_tally non incrementa il contatore dei login falliti nel caso dell'utente root, perche' in caso contrario sarebbe troppo semplice causare un problemi al sistema bloccando tale account. Volendo e' possibile modificare questo comportamento tramite l'opzione even_deny_root, ma nell'esempio riportato ho preferito lasciare l'impostazione di default, considerando maggiori i rischi in cui si potrebbe incorrere rispetto ai benefici derivanti  dall'opzione menzionata.

Privacy Policy