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