User Tools

Site Tools


mikrotik:openvpn_2fa_totp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

mikrotik:openvpn_2fa_totp [2025/09/20 12:51] – created - external edit 127.0.0.1mikrotik:openvpn_2fa_totp [2025/09/21 15:04] (current) kurgan
Line 1: Line 1:
 ====== TOTP con Openvpn ====== ====== 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. +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 ===== ===== 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).+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). 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 ===== ===== Configurazione del Mikrotik per essere server RADIUS =====
Line 16: Line 13:
 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. 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.
  
-<code>+<code ->
 /user-manager /user-manager
 set certificate=*0 enabled=yes set certificate=*0 enabled=yes
Line 23: Line 20:
 add address=127.0.0.1 name=router1 add address=127.0.0.1 name=router1
 </code> </code>
- 
  
 ===== Configurazione di openvpn per essere client RADIUS ===== ===== Configurazione di openvpn per essere client RADIUS =====
Line 29: Line 25:
 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. 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.
  
-<code>+<code ->
 /radius /radius
 add address=127.0.0.1 service=ppp timeout=1s add address=127.0.0.1 service=ppp timeout=1s
Line 36: Line 32:
 set accounting=yes use-radius=yes set accounting=yes use-radius=yes
 </code> </code>
- 
  
 ===== Creazione utenti sotto lo user manager ===== ===== Creazione utenti sotto lo user manager =====
Line 42: Line 37:
 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). 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).
  
-<code>+<code ->
 /user-manager user /user-manager user
 add name=test2 otp-secret=ONSWO4TFORXWI2LQOVWGG2LOMVWGYYIK password=pippo add name=test2 otp-secret=ONSWO4TFORXWI2LQOVWGG2LOMVWGYYIK password=pippo
 </code> </code>
  
-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" +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 ===== ===== 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 +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 
-<code>+ 
 +<code ->
 auth-user-pass auth-user-pass
 </code> </code>
-al posto di  + 
-<code>+al posto di 
 + 
 +<code ->
 auth-user-pass user-pass.txt auth-user-pass user-pass.txt
 </code> </code>
- 
  
 ===== Test del sistema ===== ===== 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. 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.
-<code>+ 
 +<code ->
 oathtool -b --totp ONSWO4TFORXWI2LQOVWGG2LOMVWGYYIK oathtool -b --totp ONSWO4TFORXWI2LQOVWGG2LOMVWGYYIK
 </code> </code>
- 
  
 ===== Gestione account utente ===== ===== 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. 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 Lo script gira su Linux, e richiede di avere installati i seguenti programmi: base32, pwgen, qrencode
  
- +<code bash creautente.sh
-<code> +#!/bin/bash
- #!/bin/bash+
 # uso: creautente  <username> <password> # uso: creautente  <username> <password>
 # se password e` un numero singolo, crea una password casuale di N caratteri # se password e` un numero singolo, crea una password casuale di N caratteri
Line 121: Line 115:
 exit 0 exit 0
 </code> </code>
 +
  
mikrotik/openvpn_2fa_totp.1758372660.txt.gz · Last modified: by 127.0.0.1