TOTP con Openvpn

Questa configurazione, che si basa sulla configurazione descritta in ../Openvpn server, aggiunge il supporto per una autenticazione con token TOTP. È possibile gestire sia utenti con che senza TOTP allo stesso tempo. L'ho provata con ROS 7.15. Come app di autenticazione io personalmente uso Aegis su Android, ma in teoria qualsiasi app compatibile con il sistema TOTP dovrebbe funzionare.

Installazione pacchetto user-manager

Per funzionare, abbiamo bisogno del pacchetto "user-manager" che espone un server RADIUS che useremo per gestire gli utenti con l'autenticazione TOTP. Il pacchetto user-manager non esiste per tutte le architetture, quindi occorre che il nostro Mikrotik lo supporti e anche che abbia ovviamente abbastanza RAM e FLASH per installarlo. Il pacchetto user-manager lo trovate qui: https://mikrotik.com/download scaricando lo zip giusto per il vostro router (tipo di hardware e versione del software).

Una volta scaricato lo zip, potete estrarre solo il file dello user manager e uploadarlo sul Mikrotik nella gestione files. Una volta che lo avete uploadato, riavviate e dovrebbe automaticamente installarlo. Una volta installato potete anche cancellarlo dalla sezione files. Troverete una nuova voce "User Manager" nella interfaccia web (o nel winbox).

Configurazione del Mikrotik per essere server RADIUS

Configuriamo lo user manager per essere server RADIUS (per se` stesso). Volendo potremmo anche essere server per un altro client, ma qui non ci interessa.

Configurazione di openvpn per essere client RADIUS

Ora configuriamo il sistema per essere client RADIUS in modo che openvpn possa vedere gli account utente che creeremo sotto lo user manager. Una volta fatta questa configurazione il server openvpn userà sia gli account utente esistenti sotto la configurazione dei Secret del PPP, sia quelli che creeremo nello user manager. Se vogliamo tenere ordine, consiglio di evitare di usare tutti e due i sistemi, anche se tecnicamente si può fare senza problemi, basta che non abbiamo utenti con lo stesso username nell'uno e nell'altro sistema di autenticazione.

Creazione utenti sotto lo user manager

Ora possiamo creare gli utenti. Farlo è relativamente scomodo, per cui ho creato un piccolo script per farlo che gira sotto Linux. In ogni caso se vogliamo fare una prova possiamo farla a mano con un utente di test (che poi toglieremo).

Questo utente usa come segreto per la generazione dell' OTP la stringa "segretodipulcinella" encodata in base32, e come password fissa "pippo". Per collegarci dovremo usare come password la stringa "pippo" seguita dai numeri generati dalla nostra app TOTP, per esempio "pippo543665".

Configurazione del client Openvpn

Lato client, impostiamo tutto come indicato in ../Openvpn server, con l'unica differenza che la configurazione del client non usa più un file dove conservare le credenziali di accesso, ma dovrà necessariamente chiedercele ogni volta. In pratica, modifichiamo il file .ovpn e usiamo

al posto di

Test del sistema

Ora possiamo provare a connetterci dal client, alla richiesta di username e password inseriamo il nostro username "test2" e come password inseriamo "pippo" seguito dai numeri che otteniamo usando una app TOTP (per esempio Aegis) alla quale abbiamo dato come secret la stringa "ONSWO4TFORXWI2LQOVWGG2LOMVWGYYIK". Se avete Linux sul vostro pc potete usare il comando oathtool (pacchetto oathtool in Debian) per ottenere un codice TOTP valido per il nostro utente di prova.

Gestione account utente

Gestire gli account utente è decisamente scomodo se lo facciamo a mano, dobbiamo usare base32 per codificare i segreti per la generazione della OTP e poi dobbiamo copiarli a mano nella nostra app di autenticazione. Per questo motivo ho creato uno script abbastanza orribile che permette di creare del QR code da leggere con Aegis e genera anche un file di testo (utenti-mirkotik.txt) il cui contenuto possiamo copiare e incollare nella console del Mikrotik per creare gli account utente.

Lo script gira su Linux, e richiede di avere installati i seguenti programmi: base32, pwgen, qrencode

Mikrotik/Openvpn 2FA TOTP (last edited 2024-07-10 14:47:37 by Kurgan)