Newsgroup: it.comp.os.linux.sys
Titolo: OpenVPN, SSH ed OTP

Anni fa ho acquistato alcune chiavette Yubico. Sono portentose, ma non è questo il punto.
 
Supponiamo di attivare l'apposito modulo PAM per autenticare una VPN oltre che con il certificato anche con la OTP fornita da Yubico.
 
Supponiamo che il computer finisca sul fondo dell'oceano e che il mio unico accesso via VPN sia mediante un cellulare Android. Come diavolo genero/inserisco la OTP? Senza di essa resto tagliato fuori.
 
Comunque sia, ragionandoci su, mi sembra decisamente overkill usare certificati + OTP, voi che dite?

 usare certificati + OTP, voi che dite?
 
Senza sapere cosa vuoi proteggere ï¿œ stupido giudicare il sistema.
E' overkill se devi regolamentare l'accesso alla NAS di casa con i film
porno. E' del tutto inadeguato se devi proteggere l'accesso ai controlli
di lancio di una testata nucleare.
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 di lancio di una testata nucleare.
 
No, non è nucleare, ma sono comunque missili balistici.
Scherzi a parte, devo proteggere l'accesso alle VPN dei clienti e rispettive reti ed al contempo evitare di restare tagliato fuori per primo, perchè la sfiga ci vede benissimo e sicuramente dovrò accedere alla rete proprio il
giorno in cui sono senza presa USB a portata di mano.

 mano.
 
Usa un sistema OTP differente, o un bypass di emergenza sempre a doppio
fattore. Visto che usi PAM puoi per esempio inserire un sufficient prima
dell'OTP che ti permetta di bypassare.
Per esempio potrebbe essere l'esistenza di un certo file che tu puoi
creare attraverso una web interface, o con un SMS. Per esempio puoi fare
che se ti colleghi ad una pagina web e ti autentichi con certe
credenziali, la tua webapplicascion crea un file in una certa dir e lo
cancella dopo 3 minuti.
Se entro 3 minuti attivi la VPN non ti serve avere il codice OTP ma ti
basta la password.
 
Oppure anteponi un sufficient con autenticazione su un file diverso da
quello normale in cui il tuo utente ha una password di emergenza di 32
caratteri. Se il sistema OTP non funziona tu inserendo la password di
emergenza fai l'override dell'OTP (un po' come PIN e PUK).


 emergenza fai l'override dell'OTP (un po' come PIN e PUK).
 
La soluzione via web mi sembra più affidabile (ma non sempre implementabile), anche perchè facendo come indichi te qui sopra, la OTP diventerebbe priva di significato.
Un OTP è per definizione one-time e protetta da eventuali replay o cose simili, lasciare aperto un bypass da 32 caratteri renderebbe il sistema vulnerabile a 32 caratteri di password.
 
In tal caso, meglio usare certificati su VPN protetti da password di 20 caratteri facilmente memorizzabile (nella mia mente) più la protezione tradizionale SSH.
 
Sarebbe comunque un sistema migliore rispetto ad un OTP bypassato da chiave statica. E' un controsenso.
 
Comunque IMHO, una soluzione fatta con concentratore VPN, certificato protetto da password, ssh per l'accesso al concentratore che farà da ponte nella rete cliente ed eventualmente obbligare l'uso del client ssh (dal concentratore) solo all'utente root, dovrebbe essere adeguatamente sicuro.
 
Un malintenzionato dovrebbe:
 
a) rubare il mio certificato
b) rimediare la password del mio certificato
c) rimediare l'utente non privilegiato (e rispettiva password) per accedere via SSH al concentratore
d) rimediare la password di root per poter fare ssh dal concentratore verso la rete interna.

 d) rimediare la password di root per poter fare ssh dal concentratore verso la rete interna.
 
Dimenticavo:
 
e) rimediare user/password della macchina interna alla quale accedere.
eventualmente
f) rimediare la password di root della macchina interna alla quale accedere per fare veramente dei danni.

 accedere per fare veramente dei danni.
 
Insomma basta un semplice keylogger, esattamente lo stesso livello di
protezione offerto da quanto avevo scritto sopra ma con molta più
complessità e con molti più limiti per il cliente. Non mi pare una gran
furbata.
 
Il sistema openvpn + auth + otp è perfetto così com'è. Se il problema è
che in certe situazioni non puoi usare l'OTP a te serve solo un bypass,
non ti serve cambiare il mondo.


 non ti serve cambiare il mondo.
 
Mi fa paura il rischio di non aver accesso all'OTP. Tutto qui. Siccome la sfiga ci vede benissimo, l'accesso al cliente lo dovrò fare proprio quando non ho possibilità di generare una OTP, sai com'è....
 
Ci sono, però, più soluzioni (sempre tramite yubico):
 
a) la versione NFC e rispettiva applicazione su cellulare. Avvicino la chiave al cellulare e genero una OTP valida. Una figata pazzesca. (purchè abbia a disposizione un cellulare NFC, come quello che mi deve arrivare)
 
b) una soluzione via software che nemmeno ho capito come funziona. Si basa, però, su un server che fa da relay per generare una OTP. Talmente complesso che non ne ho capito il funzionamento.
 
c) un adattatore USB->MicroUSB. La Yubikey funziona. In tal caso potrei generare una OTP anche con un normale cellulare usando la presa microusb integrata.
 
La soluzione A abbinata alla C dovrebbe darmi sicurezza: con un cellulare NFC faccio tutto via software, se la sfiga si impunta e mi ritrovo senza cellulare NFC faccio fallback all'adattatore, magari questo, sempre a portata di chiave:
http://www.smartphonethoughts.com/images/Temporale-20070103-MiniUsbAdapter.jpg
 

Un keylogger su cellulare? Difficile, anche se non impossibile.
 
Per iPhone, Android e Symbian, piuttosto facile -- e me ne aspetto ormai
da un giorno all'altro.
 
Leonardo
 
-- 
What would'st thou do, my squire so gay, that rides beside my reine
Were ye Glenallan's Earl this tide, and I were Roland Cheyne?
To turn the rein were sin and shame, to fight were wondrous peril:
What would ye do now, Roland Cheyne, were ye Glenallan's Earl?

 da un giorno all'altro.
 
Vero, ma molto dipende dall'uso che se ne fa del cellulare.
Personalmente ci navigo poco se non per niente e sempre sui soliti siti.
Poi credo serva un cellulare rootato per intercettare i tasti, quando ho fatto l'ultima app, ad esempio, non sono riuscito ad intercettare il tasto home per disinibirlo in quanto fuori dal controllo dell'applicazione stessa.

 Ci sono, però, più soluzioni (sempre tramite yubico):
 
Se la sfiga ci vede bene ti si brucerà il token quando ti serve.


 Se la sfiga ci vede bene ti si brucerà il token quando ti serve.
 
eheheh, qui ti volevo: ne ho due. :P
costano talmente poco che il problema di "token non funzionante" è inesistente.

 il sistema.
 
Knockd ha anche le bussate OTS: One Time Sequence
 
One_Time_Sequences = /path/to/one_time_sequences_file
      File containing the one time sequences to be used.  Instead of
      using a fixed sequence, knockd will read the sequence to be used
      from that file.  After each successful knock attempt this
      sequence will be disabled by writing a '#'  character  at  the
      first position  of  the  line containing the used sequence. That
      used sequence will then be replaced by the next valid sequence
      from the file.


       from the file.
 
In questo modo non vedo vantaggi.
Se non ho accesso alla rete, non posso nemmeno sapere quale sarà la prossima sequenza, ed ovviamente io non posso ricordarmi tutte le porte in tutte le combinazioni.
 
Meglio lasciarla fissa, magari 15 porte con salti avanti ed indietro, e poi cambiarla non appena avrò accesso alla rete. Mi da più sicurezza.

 cambiarla non appena avrò accesso alla rete. Mi da più sicurezza.
 
Non serve a nulla farla troppo lunga... è una sicurezza aggiuntiva, non
è l'unica tua protezione.
 
Se per esempio la usi solo per non farti intasare i log dai tentativi di
accesso SSH puoi anche banalmente fare una combinazione semplice e quasi
sempre fattibile anche da reti aziendali... tipo:
 
80:tcp 443:tcp 21:tcp 53:udp 443:tcp 22:tcp 80:tcp 53:udp
 
Sono 8 porte comuni (quindi quasi sempre aperte da ovunque) con
ripetizioni (così eviti che un normale portscan te la indovini) da fare
in 10 secondi (così due portscan non la beccano) nella sequenza corretta
(non sono in ordine crescente o decrescente) dallo stesso IP (una
scansione distribuita non l'attiva).
 
Le probabilità che uno ci capiti a tiro per caso sono bassissime, e se
anche ce la facesse poi deve avere la chiave ssh.
 
Tieni sempre presente che se uno VUOLE entrare nella tua rete ha a
disposizione sistemi più facili da attuare rispetto a quelli
informatici. Per esempio potrebbe entrare negli uffici come donna delle
pulizie e piazzare un micro access point wireless nascosto dietro ad un
PC... O un hardware keylogger sulla tua tastiera dell'ufficio, ecc.ecc.
 
Gli attacchi informatici diretti sono usati prevalentemente in modo
massivo, non in modo mirato, salvo casi particolari.


 massivo, non in modo mirato, salvo casi particolari.
 
Lo so, voglio appunto restare fuori dagli attacchi massivi.
Non ho una banca da tutelare, c'è anche poco interesse a sfondare le reti dei miei clienti. E' molto più interessante distribuire malware per eventuali malintenzionati.