User Tools

Site Tools


openvpn:openvpn_mfa

Differences

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

Link to this comparison view

openvpn:openvpn_mfa [2025/09/20 12:51] – created - external edit 127.0.0.1openvpn:openvpn_mfa [2025/09/21 19:09] (current) kurgan
Line 6: Line 6:
  
 Notare che io volutamente richiedo che ci sia un certificato personale per ogni utente. Sarebbe possibile volendo usare un unico certificato per tutti gli utenti e autenticare i singoli utenti basandosi su username e TOTP, però questo a mio avviso rende meno sicuro il sistema in quanto rende possibile accedere possedendo un certificato rubato ad un utente e un codice TOTP rubato ad un altro utente. Inoltre una volta che per qualche motivo venisse compromesso il certificato utente (si presume che ce ne sia uno solo usato da tutti) o continuo a usare un certificato compromesso oppure devo revocarlo e quindi dare un nuovo certificato a tutti gli utenti, e non solo ad un singolo utente. Notare che io volutamente richiedo che ci sia un certificato personale per ogni utente. Sarebbe possibile volendo usare un unico certificato per tutti gli utenti e autenticare i singoli utenti basandosi su username e TOTP, però questo a mio avviso rende meno sicuro il sistema in quanto rende possibile accedere possedendo un certificato rubato ad un utente e un codice TOTP rubato ad un altro utente. Inoltre una volta che per qualche motivo venisse compromesso il certificato utente (si presume che ce ne sia uno solo usato da tutti) o continuo a usare un certificato compromesso oppure devo revocarlo e quindi dare un nuovo certificato a tutti gli utenti, e non solo ad un singolo utente.
- 
  
 ===== Configurazione openvpn lato server ===== ===== Configurazione openvpn lato server =====
  
-Lato server, uso una configurazione molto simile a quella di [[../Openvpn_Con_Certificati]],  alla quale faccio alcune modifiche per gestire la doppia autenticazione.+Lato server, uso una configurazione molto simile a quella di [[Openvpn_Con_Certificati]],  alla quale faccio alcune modifiche per gestire la doppia autenticazione.
  
 Le modifiche nel dettaglio sono queste: Le modifiche nel dettaglio sono queste:
 +
   * Non posso usare i comandi "user nobody / group nogroup" in quanto non potrei più eseguire lo script che autentica il codice TOTP una volta che ho fatto il downgrade dei  privilegi. Al momento mi limito a non farlo e girare come root, potrei nel caso scegliere di usare un utente che non sia nobody e che possa eseguire lo script e leggere il file che contiene i dati per il TOTP.   * Non posso usare i comandi "user nobody / group nogroup" in quanto non potrei più eseguire lo script che autentica il codice TOTP una volta che ho fatto il downgrade dei  privilegi. Al momento mi limito a non farlo e girare come root, potrei nel caso scegliere di usare un utente che non sia nobody e che possa eseguire lo script e leggere il file che contiene i dati per il TOTP.
   * Sempre per lanciare lo script che controlla il codice TOTP, devo impostare script-security a 2 e definire una directory temporanea dove scrivere dei files (idealmente un ramdisk)   * Sempre per lanciare lo script che controlla il codice TOTP, devo impostare script-security a 2 e definire una directory temporanea dove scrivere dei files (idealmente un ramdisk)
Line 19: Line 19:
  
 La configurazione risultante è questa: La configurazione risultante è questa:
-<code>+ 
 +<code - server.conf>
 port 1194 port 1194
 proto udp proto udp
Line 91: Line 92:
 </code> </code>
  
-Ovviamente qui non spiego come generare i certificati, ecc. Fate riferimento alla pagina  [[../Openvpn_Con_Certificati]] +Ovviamente qui non spiego come generare i certificati, ecc. Fate riferimento alla pagina  [[Openvpn_Con_Certificati]]
  
 ===== Script per autenticare con TOTP lato server ===== ===== Script per autenticare con TOTP lato server =====
Line 100: Line 100:
 Questo script richiede di avere installato il programma "oathtool", che esiste come pacchetto sia in debian che in openwrt. Questo script richiede di avere installato il programma "oathtool", che esiste come pacchetto sia in debian che in openwrt.
  
-<code> +<code bash oath.sh
- #!/bin/bash+#!/bin/bash
 # script che verifica i codici TOTP su un file di testo # script che verifica i codici TOTP su un file di testo
  
Line 143: Line 143:
  
 exit 1 exit 1
-}}}  +</code>
  
 ===== Script per generare le righe da inserire nel file oath.secrets ===== ===== Script per generare le righe da inserire nel file oath.secrets =====
Line 154: Line 153:
 Questo script, che non è necessario che giri sullo stesso server dove gira openvpn, richiede che siano installati i seguenti programmi: oathtool, pwgen, base32, qrencode. Sono tutti disponibili come pacchetti debian e anche su openwrt. Questo script, che non è necessario che giri sullo stesso server dove gira openvpn, richiede che siano installati i seguenti programmi: oathtool, pwgen, base32, qrencode. Sono tutti disponibili come pacchetti debian e anche su openwrt.
  
-Se usiamo questo script sulla stessa macchina dove si trova openvpn possiamo direttamente fargli scrivere il file oath.secrets che viene letto da openvpn, in alternativa dovremo copiare a mano gli utenti da una macchina all'altra. +Se usiamo questo script sulla stessa macchina dove si trova openvpn possiamo direttamente fargli scrivere il file oath.secrets che viene letto da openvpn, in alternativa dovremo copiare a mano gli utenti da una macchina all'altra.
  
 Notare che questo script semplicemente accoda una riga ogni volta al file oath.secrets, e non è in grado né di cancellare né di modificare utenti esistenti. Per farlo dovrete manomettere il file a mano. Notare che questo script semplicemente accoda una riga ogni volta al file oath.secrets, e non è in grado né di cancellare né di modificare utenti esistenti. Per farlo dovrete manomettere il file a mano.
  
-<code> +<code bash creautente.sh
- #!/bin/bash+#!/bin/bash
 # uso: creautente  <username> # uso: creautente  <username>
  
Line 207: Line 206:
 ===== Configurazione lato client ===== ===== Configurazione lato client =====
  
-Lato client, la configurazione è di nuovo simile a quella usata in [[../Openvpn_Con_Certificati]] con poche modifiche per renderla compatibile con la necessità di inserire username e password. +Lato client, la configurazione è di nuovo simile a quella usata in [[Openvpn_Con_Certificati]] con poche modifiche per renderla compatibile con la necessità di inserire username e password. Notare che il client openvpn per Windows permette di salvare lo username (lo fa per default, senza dover impostare nulla) e anche di salvare la password. Evitate di salvare la password perché la password è il codice TOTP che cambia ogni volta.
-Notare che il client openvpn per Windows permette di salvare lo username (lo fa per default, senza dover impostare nulla) e anche di salvare la password. Evitate di salvare la password perché la password è il codice TOTP che cambia ogni volta.+
  
-<code>+<code - client.ovpn>
 client client
 dev tun dev tun
Line 239: Line 237:
 hand-window 15 hand-window 15
 </code> </code>
- 
  
 ===== Configurazione app sul cellulare ===== ===== Configurazione app sul cellulare =====
  
 È possibile usare qualsiasi app che possa leggere i QR code per generare i codici TOTP. Le app che ho provato personalmente sono "Aegis" e "2FAS Auth", ma dovrebbero funzionare anche Google Authenticator e Microsoft Authenticator. È possibile usare qualsiasi app che possa leggere i QR code per generare i codici TOTP. Le app che ho provato personalmente sono "Aegis" e "2FAS Auth", ma dovrebbero funzionare anche Google Authenticator e Microsoft Authenticator.
 +
  
openvpn/openvpn_mfa.1758372660.txt.gz · Last modified: by 127.0.0.1