No. Certo che non puoi farlo. Ciò vanificherebbe lo scopo stesso di 2FA. Il tuo server deve avere un modo per verificare le credenziali dell'utente e queste informazioni non devono essere inviate sulla rete (cioè non puoi usare solo il file client.ovpn).
Anche se non devi necessariamente creare utenti unix, ma devi consentire ai tuoi utenti di installare i loro codici di verifica sul server. Puoi usare sftp con utenti virtuali usando il loro certificato già emesso, https con autorizzazione (reciproca) lato client, CIFS (samba) o un buon vecchio ftp con estensione TLS o qualsiasi altro modo che faccia conoscere al server i codici di verifica creati dagli utenti . Il canale di comunicazione dovrebbe essere sicuro (crittografato || locale).
Naturalmente se gli utenti caricano i propri file, non è possibile utilizzare le credenziali basate su file aggregate utilizzate da openvpn-otp. Fortunatamente abbiamo un'altra (e molto migliore) opzione usando il modulo di sicurezza eccellente linux pam.
Prima di tutto, devi raccogliere i file utente creati da Google Authenticator in una directory con uno dei metodi sopra menzionati. Nel nostro caso sarà / etc / google-auth.
È necessario applicare un singolo ID utente per tutti i file qui, perché non si hanno utenti reali. Lascia che sia openvpn . Le autorizzazioni devono essere 0400 (-r --------). A Pam non piacciono le credenziali leggibili dal mondo / dal gruppo (certamente). Puoi facilmente applicarlo con samba, apache, ftp o nel peggiore dei casi usando una scheda cron (non consigliata).
A scopo di test, basta fare questo:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
Dopodiché chiedi a openvpn di autenticarti contro libpam, che ha il suo modulo di autenticazione di Google. Aggiungi questo al tuo file server openvpn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Questo dice che useremo il metodo di autenticazione pam con l'id pam auth openvpn .
Ora crea la configurazione di pam per openvpn. Modifica /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Qui diciamo che senza una corretta autenticazione di Google falliamo immediatamente (requisito), stiamo usando un file segreto speciale invece del predefinito $ HOME / .google_authenticator (secret =) e accediamo ai file come utente openvpn poiché non è associato alcun userid reale con i nostri utenti. Nella riga successiva diciamo solo che consentiamo a tutti di connettersi dopo un'autenticazione riuscita. Ovviamente dovresti implementare la tua politica di autorizzazione qui. Puoi controllare gli utenti consentiti per file, mysql db o ldap con i rispettivi moduli pam.
Aggiungi questo al tuo file client openvpn
auth-user-pass
auth-nocache
reneg-sec 0
Usiamo auth-user-pass per consentire al client openvpn di chiedere nome utente e password. Non ci piace la memorizzazione nella cache (la "password" sta cambiando) e la re-negazione periodica è dannosa per noi per lo stesso motivo.
Dopodiché dovresti essere in grado di connetterti senza openvpn-otp. Si prega di considerare che questo è un metodo molto più flessibile, poiché se lo si desidera è possibile implementare regole molto complesse nei file di controllo pam. È possibile abilitare / disabilitare gli utenti in base alla directory mysql o ldap senza toccare tali certificati, ad esempio.