opie-otp + hp48 howto
Transcript
opie-otp + hp48 howto
OPIE−OTP + HP48 HOWTO OPIE−OTP + HP48 HOWTO Table of Contents 1. Introduzione.......................................................................................................................................1 2. Come funziona?..................................................................................................................................2 3. Mettiamo assieme il tutto..................................................................................................................3 Configurazione del Sistema........................................................................................................3 Aggiungere il nostro utente.........................................................................................................4 Prima login..................................................................................................................................4 4. HP48 key generator...........................................................................................................................5 5. Riferimenti..........................................................................................................................................6 i 1. Introduzione Questo howto vuole essere una breve guida a come mettere assieme un sistema di autenticazione usando le one time password (da ora in poi OTP) e utilizzando una calcolatrice hp48 come generatore di chiavi. La scelta di usare una hp48 è stata dettata dal fatto che ne ho due in casa e che apprezzo molto la comunità di sviluppatori/utilizzatori di hp48, esistono sicuramente altri sistemi dedicati per svolgere la stessa funzione, e probabilmente sarebbe possibile ottenere un risultato equivalente usando un cellulare di nuova generazione, ma visto che non ho a disposizione nulla di tutto ciò la scelta è ricaduta sulla mia calcolatrice. Per correzioni, suggerimenti, o quant'altro scrivetemi a <[email protected]>. 1. Introduzione 1 2. Come funziona? Prima di tutto vediamo brevemente le motivazioni che vi potrebbero (e che mi hanno spinto) a usare le OTP. Le OTP sono delle parole chiave utilizzate ai fini di autenticazione, come potrebbe essere la login locale su un computer o un accesso remoto via rete tramite ssh o telnet. Ci sono però una serie di motivi per cui potremmo non volere usare la nostra usuale password, ad esempio potremmo stare usando protocolli non sicuri (come telnet) oppure potremmo essere su macchine non fidate, sulle quali magari potrebbero essere presenti dei keylogger (sia hardware che software) in grado di memorizzare le nostre password o ancora potremmo avere un client ssh modificato per salvare informazioni sensibili come le nostre password. Un modo per ovviare a questo, a parte ovviamente evitare di usare degli internet caffè per collegarci alla nostra macchina a casa, è usare le OTP. Le OTP sono delle parole chiave che hanno validità per una sola specifica login e quindi non esiste il problema che siano compromesse, in quanto come sono usate non sono più valide. Le OTP vengono generate a partire da una passphrase, un seed (seme), e un numero di sequenza che ad ogni login viene decrementato, fino a quando non arriverete a 0 e sarà quindi necessario generare un nuovo numero di sequenza. In pratica arrivati alla richiesta di login avrete al prompt il seed, e il numero di sequenza, utilizzando queste due informazioni più la vostra passphrase avrete generato in precedenza o generete al volo la password (composta da 6 parole lunghe massimo 4 lettere) a questo punto se la password è corretta verrete autenticati, il numero di sequenza viene decrementato e questa password non sarà più valida per nessuna successiva login. Per quelli di voi che volessero capire le basi algoritmiche e crittografiche su cui si basa il funzionamento del tutto consiglio di leggere l'rfc, http://www.rfc−editor.org/rfc/std/std61.txt e l'originale paper, ftp://ftp.mcc.ac.uk/pub/security/PAPERS/PASSWORD/SKEY.PS. 2. Come funziona? 2 3. Mettiamo assieme il tutto Per prima cosa è necessario installare le utility per gestire le OTP, in debian si tratta dei pacchetti opie−client, opie−server e libpam−opie. Opie−client contiene le utility per la generazione delle password da usare nella fase di autenticazione, opie−server contiene invece i programmi necessari per abilitare un utente a usare le OTP e ad autenticarlo, libpam−opie invece contiene il modulo pam che permette di integrare opie con ssh, su, login o qualcunque altro programma che utilizzi pam (quindi eventualmente un server pop3 o altro ...). Opie (One time Password In Everything) è derivato dall'originario S/Key sviluppato da Bellcore ed è in buona parte compatibile con S/Key. Se non lo avete nella vostra distribuzione potete scaricarlo da qui http://inner.net/opie. Configurazione del Sistema Una volta compilato e installato opie è necessario configurare il sistema in modo che permetta l'accesso usando le OTP, noi vedremo come configurarne l'utilizzo utilizzando openssh in debian, adattare la cosa ad altri *nix o servizi che usando pam non dovrebbe essere particolarmente difficile. Per prima cosa è necessario controllare la configurazione di ssh, ad oggi a causa di alcune funzioni di sicurezza attive di default nelle nuove versioni di ssh (privilege separation) ci sono problemi nell'utilizzo di moduli pam esterni, dovremmo quindi assicurarci che il nostro file di configurazione di ssh (/etc/ssh/sshd_config) contenga "UsePrivilegeSeparation no" e "PAMAuthenticationViaKbdInt yes". Fatto questo è necessario modificare il file di pam di ssh (/etc/pam.d/ssh) così (viene mostrata solo la parte rilevante relativa a auth) da: auth auth auth required required required pam_nologin.so pam_unix.so pam_env.so # [1] auth auth auth auth auth required required sufficient sufficient required pam_nologin.so pam_env.so # [1] pam_unix.so pam_opie.so pam_deny.so a in questa maniera sarà possibile loggarsi sia usando la solita password unix sia usando le OTP, modificando invece così: auth auth auth auth required required required required pam_nologin.so pam_env.so # [1] pam_opie.so pam_deny.so si obbligano gli utenti a usare le OTP in ssh, anche se non ritengo che la cosa abbia particolarmente senso. 3. Mettiamo assieme il tutto 3 OPIE−OTP + HP48 HOWTO Aggiungere il nostro utente A questo punto è necessario comunicare a opie il fatto che il nostro utente userà le OTP e la nostra passphrase. Digitiamo quindi dal nostro utente e da una console sicura opiepasswd −c dopo avere inserito la passphrase saremo in grado di loggarci usando le OTP. Prima login Provate ora a loggarvi via ssh alla macchina, se avete seguito le mie istruzioni vi verrà prima chiesta la vostra solita password, se digitate invio senza inserire nulla arrivere al prompt della OTP. pivi@brick:~$ ssh host Password: otp−md5 490 pi2155 ext, Response: 490 è il sequence number, pi2155 è il seed. Per ricavare la OTP serve un key generator, il pacchetto opie−client ne include uno, specificando il seed, il numero di sequenza e la passphrase avrete la vostra OTP pronta da usare. opiekey sequence seed vi restituirà la OTP da usare, il parametro opzionale −n vi permette di specificare una sequenza di OTP da stampare a video, che potrete portarvi via stampata su un pezzo di carta in vacanza in modo da potere usare in tranquillità il vostro account da un internet caffè. La cosa fondamentale per la sicurezza del sistema è che la vostra passphrase non sia mai utilizzata su reti/computer non sicuri, se no potevate evitarvi tutta questa fatica. Aggiungere il nostro utente 4 4. HP48 key generator A questo punto vi starete chiedendo quanto sia saggio portarvi appresso un foglio di carta con scritte le vostre OTP, beh, se lo custodite bene dato come funzionano le OTP non è niente di particolarmente insicuro, ma di certo si può fare di meglio, usando ad esempio un generatore di OTP portatile, e qui ci viene in aiuto la HP48 e un software gpl. Se non avete una calcolatrice hp48 dovrete ingegnarvi in altra maniera o utilizzare un triste foglio di carta. Scaricate skey−hp48 (http://web.baz.org/~adam/otp/skey−hp48.tar.gz) e dopo avere decompresso il tar.gz mettete il file skey.hp48 nella vostra calcolatrice. La cosa migliore è che leggiate il readme incluso nel nel pacchetto distribuito, descriverò brevemente lo stesso come utilizzare il programma. Innanzitutto dovrebbe essere chiaro che una volta che abbiamo seed, sequence number e passphrase siamo in grado di generare la nostra OTP, non è quindi necessario che dove generiamo la OTP sia in qualche maniera collegato con la macchina alla quale ci autenticheremo, la cosa fondamentale è invece che la passphrase sia inserita esclusivamente in una macchina sicura e che non sia conosciuta da nessuno. Fatto l'upload troveremo nella nostra home sulla hp48 una directory SKEY.HP48, una volta entrati in questa directory, schiacciamo il pulsante CST e ci troveremo di fronte ad un menù. Usando GETP possiamo generare al volo una OTP inserendo tutti i dati necessari, usando invece UPDATE è possibile inserire invece alcuni dati una volta per tutti (ad esempio il seed) per poi potere usare SYSP inserendo solo i dati mancanti, ad esempio sequence number (e la passphrase se giustamente non ci siamo fidati a lasciarla memorizzata in chiaro sulla hp48). L'algoritmo da utilizzare per potere essere utilizzato con opie è md5 e non md4. Una volta inseriti tutti i dati nel giro di una decina di secondi avremo la nostra OTP pronta per essere usata. Una volta che prendete confidenza con il programma è consigliabile disabilitare lo schermo quando inserite la passphrase, in modo che non sia visibile a tutti, per fare questo 1 SF dallo stack della hp48. 4. HP48 key generator 5 5. Riferimenti Alcuni links ad articoli o materiale che potrebbe esservi utile durante le vostre prove: http://www.onlamp.com/pub/a/bsd/2003/02/06/FreeBSD_Basics.html Inoltre saranno di fondamentale aiuto la documentazione di OPIE, incluse le man pages e il README di skey−hp48. 5. Riferimenti 6