Come abilitare l'authorization a due fattori utilizzando Google Authenticator per l'accesso openVPN basato su file .ovpn?

Ho un'impostazione openVPN in cui gli utenti non dispongono di account shell sul Debian VM in esecuzione openVPN. Gli articoli che ho trovato durante il Google sono tutti istruzioni per l'impostazione di Google Authenticator per un utente classico * nix (ad esempio per eseguire il binario Authenticator nella home directory dell'utente).

C'è un documento che spiega come integrare Google Authenticator per i server openvpn che autenticano basati esclusivamente sui file .ovpn usati sul lato client?

  • come posso dare ai client openvpn l'accesso a un server DNS (bind9) che si trova sulla stessa macchina del server openvpn
  • Il timeout di OpenVPN per ricollegarsi al fallimento richiede molto tempo
  • Due NIC, uno con IP statico e un DHCP. Routing delle politiche IP
  • Devo utilizzare il tap o il tun per openvpn?
  • OpenVPN - Il traffico client non è interamente routing tramite VPN
  • Ping dalla networking VPN al lavoro VPN client; ping in da client VPN alla networking VPN fallisce - perché?
  • Ho guardato https://github.com/evgeny-gridasov/openvpn-otp , ma richiede ancora la configuration di Google Authenticator.

  • Public-Key -or- Password & Google Authenticator per l'accesso SSH
  • Come impostare l'autenticatore google e impostare regole specifiche di corrispondenza per consentire diverse regole di accesso?
  • Autenticatore Google con Openldap o Fedora 389 Server o FreeIPA
  • ssh con passphrase, fallimento a Google Authenticator
  • Cercando di get SSH con chiave pubblica (nessuna password) + autenticatore Google funzionante su Ubuntu 14.04.1
  • gli standard del settore per l'utilizzo di autenticatore google con utenti linux?
  • One Solution collect form web for “Come abilitare l'authorization a due fattori utilizzando Google Authenticator per l'accesso openVPN basato su file .ovpn?”

    No. Naturalmente non puoi farlo. Questo avrebbe sconfitto il vero scopo di 2FA. Il server deve avere un modo per verificare le credenziali dell'utente e queste informazioni non devono essere inviate tramite la networking (ad esempio non è ansible utilizzare solo il file client.ovpn).

    Anche se non è necessariamente necessario creare utenti unix, è necessario consentire agli utenti di installare i codici di verifica sul server. È ansible utilizzare sftp con gli utenti virtuali utilizzando il certificato già rilasciato, https con l'authorization lato client (reciproca), CIFS (samba) o un buon ftp con estensione TLS o in qualsiasi altro modo che consente al server di conoscere i codici di verifica creati dagli utenti . Il canale di comunicazione deve essere sicuro (criptato || locale).

    Naturalmente se i tuoi utenti caricano i propri file, non è ansible utilizzare le credenziali aggregate basate su file utilizzate da openvpn-otp. Fortunatamente abbiamo un'altra opzione (e molto meglio) utilizzando linux ottimo module di sicurezza pam.

    Innanzitutto, è necessario raccogliere i file utente creati da google-authenticator in una directory tramite uno dei methods sopra indicati. Nel nostro caso sarà / etc / google-auth.

    È necessario applicare qui un solo ID utente per tutti i file, in quanto non si hanno utenti reali. Lasciate che sia openvpn . Le autorizzazioni devono essere 0400 (-r ——–). Pam non ama credenziali leggibili a livello mondiale / gruppo (certamente). Puoi facilmente applicarla con samba, apache, ftp o nel caso peggiore utilizzando una scheda cron (non consigliata).

    A scopo di prova, fai semplicemente:

     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 

    Dopo di che si chiede a openvpn di autenticare contro libpam, che ha il proprio module di authorization google. Aggiungilo al file del server openvpn:

     plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn 

    Questo dice che utilizzeremo il metodo di authentication con il pam aut id openvpn .

    Ora, crea la configuration del 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 

    Diciamo che senza l'authentication google di successo non riusciamo immediatamente (requisito), utilizziamo un file speciale segreto invece del default $ HOME / .google_authenticator (secret =) e accediamo ai file come openvpn dato che non esiste un utente reale associato con i nostri utenti. Nella prossima row si dice solo che permettiamo a tutti di connettersi dopo l'authentication di successo. Naturalmente dovresti implementare la tua politica di authorization qui. È ansible controllare gli utenti consentiti per file, mysql db o ldap con i rispettivi moduli pam.

    Aggiungilo al tuo file client openvpn

      auth-user-pass auth-nocache reneg-sec 0 

    Noi utilizziamo auth-user-pass per consentire al client openvpn di richiedere nome utente e password. Non ci piace il caching ("password" sta cambiando) e la periodica re-negotion è male per noi per lo stesso motivo.

    Dopo di che si dovrebbe essere in grado di connettersi senza openvpn-otp. Si prega di considerare questo metodo molto più flessibile, in quanto è ansible implementare regole molto complesse nei file di controllo di image, se lo si desidera. È ansible abilitare / disabilitare gli utenti in base alla directory di mysql o ldap senza toccarli per esempio.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.