Changes

From Studiosg
Jump to navigationJump to search
Aggiunto articolo dedicato all'integrazione di cracklib e passwd
{{header_it|title=Integrare Cracklib con Passwd in Slackware Linux| keyword={{Template:keyword_it_linux}}| description=Una breve guida per integrare Cacklib nel sistema di autenticazione di Slackware Linux | link_page=slackware_and_cracklib}}

== Introduzione ==

In un [[usare_cracklib | precedente articolo]] è stata introdotta '''Cracklib''' una piccola '''libreria di funzioni che consente di verificare la robustezza di una password contro attacchi da dizionario'''. Nel corso dell'articolo è stato introdotto anche '''cracklib-check''', il programma che esegue i controlli, e ne sono stati forniti alcuni esempi d'uso. L'utilità dello strumento è indubbia, ma penalizzata dall'essere pensato per l'uso da parte dei soli amministratori di sistema. Sia la libreria che il programma di controllo sono installati nelle cartelle dedicate all'amministrazione del sistema e gli utenti standard non possono accederli se non adottando appositi accorgimenti. Un altro fattore di rischio consiste nel fatto che il controllo debba essere eseguito esplicitamente. '''Nulla obbliga un utente a verificare la robustezza di un password''' con cracklib pertanto '''nulla vieta di configurare una password debole''' anche quando lo strumento sia installato e correttamente configurato.

Nel proseguo dell'articolo verrà illustrata la procedura per '''integrare cracklib con il sistema di autenticazione standard di Slackware Linux''' in modo da '''automatizzare i controlli delle password''', obbligare gli utenti ad utilizzare lo strumento e migliorare la sicurezza intrinseca del sistema.

=== Integrare Cracklib con il Sistema di Autenticazione di Slackware Linux ===
Esistono sostanzialmente '''due modi per integrare cracklib con il sistema di autenticazione di una distribuzione Linux''' a seconda che la stessa usi '''[https://it.wikipedia.org/wiki/Pluggable_authentication_modules PAM]''' oppure no. '''Slackware Linux non include PAM''' tra i pacchetti distribuiti. Si tratta di una scelta ponderata del gruppo di sviluppatori della distribuzione che non reputano il livello di sicurezza garantito da PAM sufficientemente elevato e preferiscono pertanto rinunciare alla flessibilità che lo strumento garantisce in funzione di una maggiore semplicità del sistema.

'''Per integrare cracklib con il sistema di autenticazione shadow password è necessario ricompilare il pacchetto di autenticazione''' e reinstallare la nuova versione sostituendo quella distribuita ufficialmente. Nel caso di Slackware 14.2 il pacchetto in questione è: '''shadow-4.2.1'''. È possibile integrare cracklib eseguendo i seguenti passi:
* Compilare ed installare un pacchetto aggiornato di cracklib seguendo le istruzioni incluse in un [[usare_cracklib#Installazione_di_cracklib | articolo precedente]].

* Procurarsi il '''codice sorgente di Shadow Password''' e copiarlo o scaricarlo in una cartella locale ad esempio ''/tmp'' oppure ''/usr/src/shadow-4.2.1''. Il codice e gli script di compilazione per ogni pacchetto distribuito con Slackware Linux sono reperibili su di un DVD specifico, slackware-14.2-source-dvd.iso ad esempio, oppure nell'albero di installazione. Entrambi sono reperibili in rete seguendo i collegamenti contenuti nella [http://www.slackware.com/getslack/ seguente pagina]. Supponendo di essere nella cartella principale del DVD o dell'albero di installazione on-line, il codice sarà reperibile nella sotto-cartella ''source/a/shadow/''. È di seguito riportato il contenuto della cartella per Slackware 14.2:
[ ] adduser 13-Sep-2012 23:27 16K Details
[ ] doinst.sh.gz 28-Jan-2010 01:29 290 Details
[ ] login.defs.gz 13-Sep-2012 23:27 4.5K Details
[DIR] patches/ 17-May-2013 02:19 -
[ ] shadow-4.2.1.tar.xz 09-May-2014 21:05 1.5M Details
[ ] shadow-4.2.1.tar.xz.sig 09-May-2014 21:05 828 Details
[ ] shadow.CVE-2005-4890.relax.diff.gz 14-Dec-2013 21:05 734 Details
[ ] shadow.SlackBuild 02-Jul-2014 00:21 5.1K Details
[ ] shadow.url 02-Jul-2014 00:15 46 Details
[ ] slack-desc 30-Apr-2002 23:51 1.0K Details
[ ] useradd.gz

* Una volta che tutti i file siano stati scaricati e / o copiati nella cartella desiderata si proceda modificando lo script di compilazione '''shadow.SlackBuild''' rimuovendo la riga:
<syntaxhighlight lang="bash">
--without-libcrack \
</syntaxhighlight>

per rimpiazzarla con:
<syntaxhighlight lang="bash">
--with-libcrack \
</syntaxhighlight>

in modo da abilitare il supporto della libreria cracklib.

* Lanciare la compilazione del pacchetto mediante il comando
root@system # '''sh''' ./shadow.SlackBuild

ed attendere che lo stesso venga compilato ed infine salvato in ''/tmp''.

* Aggiornare il pacchetto sovrascrivendo quello installato sul sistema:
root@system # '''upgradepkg''' ''--reinstall'' /tmp/shadow-4.2.1-i486-1.txz

L'opzione ''--reinstall'' in questo caso &egrave; obbligatoria altrimenti il pacchetto verrebbe ignorato essendo presente sul sistema:
root@system # '''upgradepkg''' shadow-4.2.1-i486-1.txz

+==============================================================================
| <font color="red">Skipping package shadow-4.2.1-i486-1 (already installed)</font>
+==============================================================================

* Una volta ultimata l'installazione &egrave; necessario '''creare i dizionari ed abilitare il loro uso sa parte del comando passwd'''. La creazione di dizionari personalizzati &egrave; stata oggetto di un [[usare_cracklib#Usare_Dizionari_Personalizzati_con_cracklib | articolo precedenrte]]. Per semplicit&agrave; vengono riportate le istruzioni usate per sostituire il dizionario predefinito, che contiene qualche decina di migliaia di parole, con quello esteso, che ne contiene invece circa due milioni. '''Tutti i comandi devono essere eseguiti con privilegi di amministratore''' in quanto vanno a modificare file e cartelle di sistema.
root@system # '''create-cracklib-dict''' /usr/share/cracklib/*
skipping line: 1
warning: input out of order: 'ghabcdefghabcdefghabcdefghabcd' should not follow 'habcdefghabcdefghabcdefghabcde' (line 55371)
warning: input out of order: 'fghabcdefghabcdefghabcdefghabc' should not follow 'ghabcdefghabcdefghabcdefghabcd' (line 55372)
warning: input out of order: 'efghabcdefghabcdefghabcdefghab' should not follow 'fghabcdefghabcdefghabcdefghabc' (line 55373)
warning: input out of order: 'fghabcdefghabcdefghabcdefghabc' should not follow 'ghabcdefghabcdefghabcdefghabcd' (line 55375)
warning: input out of order: 'abcdefghi' should not follow 'fghabcdefghabcdefghabcdefghabc' (line 55376)
1911522 1911521
root@system # '''ls''' ''-la'' /usr/share/cracklib/
total 28252
drwxr-xr-x 2 root root 4096 Dec 9 18:46 .
drwxr-xr-x 214 root root 4096 Dec 9 20:02 ..
-rw-r--r-- 1 root root 19163351 Dec 9 18:46 cracklib-large
-rw-r--r-- 1 root root 492822 Dec 9 18:46 cracklib-small
-rw-r--r-- 1 root root 360 Dec 9 18:46 cracklib.magic
-rw-r--r-- 1 root root 1024 Dec 13 00:13 pw_dict.hwm
-rw-r--r-- 1 root root 8771150 Dec 13 00:13 pw_dict.pwd
-rw-r--r-- 1 root root 477896 Dec 13 00:13 pw_dict.pwi

Il dizionario &egrave; costituito dai 3 file aventi nome '''pw_dict''' mentre cracklib-large e cracklib-small sono invece i file letti per creare i dizionari esteso e standard rispettivamente.

* Infine per abilitare l'uso di cracklib da parte del comando '''passwd''' si aggiorni il file di configurazione ''/etc/login.defs'' aggiungendo una riga che punti al dizionario da utilizzare per effettuare i controlli:
<syntaxhighlight lang="bash">
CRACKLIB_DICTPATH /usr/share/cracklib/pw_dict
</syntaxhighlight>

Dove ''/usr/share/cracklib'' &egrave; il percorso della cartella che contiene i dizionari mentre ''pw_dict'' &egrave; il nome comune dei 3 file che costituiscono il dizionario. Il file ''/etc/login.defs'' contiene una riga standard che deve essere commentata perch&egrave; punta ad un dizionario inesistente:
<syntaxhighlight lang="bash">
# If compiled with cracklib support, where are the dictionaries
#CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
</syntaxhighlight>

Il controllo delle password &egrave; abilitato immediatamente dopo aver eseguito la configurazione:
jil-big@system:~$ '''passwd'''
Changing password for jil-big
Old password:
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Bad password: <font color="red">it is based on a dictionary word. Try again.</font>
New password:
Bad password: too simple. Try again.
New password:
Bad password: <font color="red">it is too simplistic/systematic. Try again.</font>
New password:
Bad password: <font color="red">it is based on a dictionary word. Try again.</font>
New password:
Bad password: too simple. Try again.
The password for jil-big is unchanged.

Il controllo viene eseguito '''durante l'aggiornamento di una password''' ha quindi effetto su tutte le password impostate '''dopo l'installazione e la configurazione di cracklib''', ma '''non agisce automaticamente sulle password impostate in precedenza'''. Nel caso si volesse forzare il controllo per tutte le password di autenticazione delle utenze sar&agrave; necessario impostare una scadenza per le stesse in modo da obbligare gli utenti all'aggiornamento. Per esempio usando il comando:
'''passwd''' ''-e '' <utente>

Uno svantaggio dell'integrare '''cracklib''' nel comando '''passwd''' si presenta nell'eventualit&agrave; di dover aggiornare il pacchetto '''shadow'''. Ovviamente i nuovi rilasci di Slackware non supporteranno la libreria e sar&agrave; compito dell'amministratore di sistema compilare i pacchetti di aggiornamento seguendo la procedura descritta pi&ugrave; sopra. La compilazione deve essere eseguita ogni volta che si aggiorna il pacchetto. Si tratta comunque di un'occorrenza molto remota dato che i programmi inclusi in shadow password sono molto maturi e ampiamente testati e raramente vengono segnalate vulnerabilit&agrave; che richiedano il loro aggiornamento.


== Conclusioni ==

Cracklib &egrave; uno strumento semplice da usare e molto utile per migliorare il livello di sicurezza di un PC o un Server Linux / UNIX in quanto consente di verificare la robustezza delle password scartando quelle facili da indovinare. Nel corpo dell'articolo &egrave; stata illustrata la procedura per integrare cracklib con il sistema di autenticazione shadow: lo standard adottato da Slackware e molte altre distribuzioni Linux. L'integrazione dei due sistemi &egrave; vantaggiosa in quanto rende lo strumento disponibile a tutte le utenze, non solo quelle di amministrazione, obbligale ad eseguire un controllo contro un dizionario. Il controllo &egrave; eseguito automaticamente al momento di cambiare una password e pertanto non aggirabile. A conclusione dell'articolo &egrave; stato riportato un modo semplice per "invecchiare" la password di un'utenza obbligando l'aggiornamento della stessa e, di conseguenza, il controllo offerto da cracklib.


Per commenti, consigli, domande inviate una e-mail all'indirizzo ''studiosg [chiocciola] giustetti [punto] net''.


Link esterni

----

* [https://github.com/cracklib/cracklib Home page di Cracklib in GitHub] (In inglese)
* [http://slackbuilds.org/result/?search=cracklib&sv= Pagina di SlackBuilds.org dedicata a Cracklib]
* [https://it.wikipedia.org/wiki/Pluggable_authentication_modules La pagina di Wikipedia dedicata a PAM]
* [https://www.openpam.org/ La pagina home del progetto OpenPAM] (In inglese)
* [http://www.slackware.com Slackware home page]
* [http://docs.slackware.com/slackware:beginners_guide Slackware Documentation Project] (In inglese)
* [http://www.slackware.com/security/ Slackware mailing list inerente la sicurezza] (In inglese)

----

{{footer_it | link_page=slackware_and_cracklib}}

Navigation menu