martedì 11 febbraio 2014

One-time password ed autenticazione forte in pfSense

E' risaputo che l'uomo è sempre l'anello debole di ogni meccanismo di sicurezza, è sufficiente la password sbagliata al posto sbagliato per far crollare i sistemi di sicurezza più avanzati. 
Aziende che hanno necessità di raggiungere elevati standard di sicurezza hanno fatto ricorso a meccanismi atti a ridurre il fattore uomo. Tra questi troviamo le One-Time Password ed i meccanismi di autenticazione a due fattori. In questo articolo vedremo cosa sono, come funzionano e come configurarli anche in pfSense.

Identificazione ed Autenticazione

Prima di cominciare occorre chiarire alcuni concetti di base legati all'accesso sicuro a sistemi elettronici. 
L'identità di un utente remoto è generalmente verificata attraverso due funzionalità di sicurezza principali: l'identificazione e l'autenticazione.
L'identificazione è basata tipicamente su una username mentre per l'autenticazione abbiamo essenzialmente su tre fattori:
  • Una cosa che conosci, per esempio una password o il PIN;
  • Una cosa che hai, come un telefono cellulare, una carta di credito o un oggetto fisico come un token;
  • Una cosa che sei, come l'impronta digitale, il timbro vocale, la retina o l'iride, o altre caratteristiche di riconoscimento attraverso caratteristiche uniche del corpo umano (biometria).
Come fare ad ottenere un sistema di sicurezza ad autenticazione forte?
Il modo più semplice è unire due o più fattori ed ottenere così un metodo di autenticazione a n fattori.

Strong Authentication

L'esempio più classico è l'accesso all'home banking, negli ultimi anni le banche hanno dotato i propri utenti di un codice cliente (identificativo) un pin (una cosa che si conosce) e un token (una cosa che si possiede) combinando così due fattori di autenticazione di cui uno in grado di generare delle password valide una sola volta One-Time Password

Anche in pfSense possiamo configurare un sistema di autenticazione strong a due fattori utilizzando freeradius come sistema di identificazione ed autenticazione e un app per smartphone come generatore di One-Time Password.


FreeRADIUS

Per il nostro sistema di autenticazione ci affideremo a FreeRADIUS
RADIUS (Remote Authentication Dial-In User Service) è un protocollo AAA (authentication, authorization, accounting) utilizzato in applicazioni di accesso alle reti o di mobilità IP. RADIUS è attualmente lo standard de-facto per l’autenticazione remota.

Procediamo con l'installazione del pacchetto FreeRadius2, per farlo basta accedere al menù System > Packages > Available packages
Ora configuriamo il servizio accedendo a Services > FreeRADIUS > Interfaces
Impostiamo l'IP 127.0.0.1 su cui metteremo in ascolto il server e la relativa porta: 1812, come descrizione mettiamo FreeRadius

Clicchiamo su Save 



Procediamo con la configurazione dell'account del client che si collegherà al servizio. Nel nostro caso sarà pfSense stesso. Selezioniamo Services > FreeRADIUS > NAS / Clients ed impostiamo i seguenti campi:
Client IP Address: 127.0.0.1
Client IP Version: IPv4
Client Shortname: Nome
Client Shared Secret: Password del client

Clicchiamo su Save


Il prossimo passo è attivare il Mobile One Time Password, per farlo accediamo al menù Services > FreeRADIUS > Settings e spuntiamo Enable Mobile-One-Time-Password

Clicchiamo su Save



Passiamo a configurare il client di accesso al server RADIUS tra i server disponibili per l'autenticazione. Accediamo a System > User Manager > Servers, clicchiamo su Add e compiliamo i seguenti campi:

Descriptive Name: FreeRadius
Type: Radius
Hostname or IP address: 127.0.0.1
Shared Secret: password inserita precedentemente
Services offered: Authentication and Accounting
Authentication port value: 1812
Accounting port value: 1813
Authentication Timeout: 5

Clicchiamo su Save

Ora non ci resta che aggiungere i nostri utenti, per farlo accediamo a Services > FreeRADIUS > Users e clicchiamo su Add
Inseriamo la username dell'utente da creare e lasciamo la password in bianco.
Spuntiamo Enable One-Time-Password for this user, nel campo Init-Secret inseriamo una parola qualsiasi, torneremo più tardi a compilarlo con la chiave generata dal nostro dispositivo mobile e concludiamo inserendo nel campo PIN il codice PIN di 4 cifre associato al nostro username. Se il nostro utente si collegherà da una zona appartenente ad una time zone differente da quella impostata su pfSense, andremo a compilare anche il campo Time Offset.


Terminato l'inserimento dei parametri possiamo cliccare su Save e ripetere l'operazione per creare tutti gli utenti che dovranno avere accesso.
Il server RADIUS offre un infinità di parametri che ci permettono di personalizzare l'accesso di ogni singolo utente come il numero di sessioni simultanee, la banda a disposizione, il periodo in cui è ammesso il login ecc... il mio consiglio è di configurare questi parametri in un secondo momento dopo aver verificato che la configurazione di base funziona regolarmente.

Il generatore di OTP

Ora vedremo come trasformare il nostro smartphone in un token per generare One-Time-Password.
Le App che possono assolvere questo compito sono svariate, nel nostro caso utilizzaremo un dispositivo Android e l'app impiegata è DroidOTP se utilizzate dispositivi Apple potete utilizzare l'app mOTP.

Dopo aver installato l'App dobbiamo generare la chiave segreta da riportare nel campo Init-Secret
Avviamo l'app, creiamo un nuovo profilo, clicchiamo su inizializza e generiamo la nostra Init-Secret che andremo ad inserire nel campo init-secret della sezione Services > FreeRADIUS > Users


A questo punto il nostro dispositivo è sincronizzato con pfSense ed è pronto a generare OTP che unite a Username e PIN ci consentiranno di autenticarci.


Nei prossimi articoli vedremo come utilizzare questo meccanismo di autenticazione per rendere sicure le connessioni VPN.

Ringraziamenti

Per quest'articolo devo ringraziare Massimo Giaimo per aver scritto ed avermi inviato un ottima guida da cui ho preso spunto. Nel prossimo articolo vi proporrò integralmente la sua guida.
Posta un commento