web-dev-qa-db-fra.com

Comment utiliser Google Authenticator avec le serveur OpenVPN sur Ubuntu 12.04

J'ai un système OpenVPN opérationnel sur Ubuntu 12.04 et j'aimerais ajouter Google Authenticator pour plus de sécurité.

C'est ma config openvpn actuelle:

 dev tun 
 proto udp 
 port 1096 
 ca ubuserv04-ca.crt 
 cert ubuserv04.crt 
 clé ubuserv04.key 
 dh dh1024.pem 
 serveur 10.10.0.0 255.255.255.0 
 Appuyez sur "redirect-gateway def1" 
 Appuyez sur "route 192.168.0.0 255.255.255.0" 
 Appuyez sur "dhcp-option DNS 8.8.8.8" 
 Appuyez sur "dhcp-option DNS 8.8.4.4" 
 Float 
 Log-append/var/log/openvpn-otp -1096-status.log 

(Ceci est juste une configuration de test, je sais que je devrais en changer mais cela fonctionne pour le moment.)

Sur le client j'ai:

 dev tun 
 client 
 proto udp 
 à distance mon.serveur.fqdn 1096 
 résolv-retry infinie 
 ca ubuserv04-ca .crt 
 cert user1.crt 
 clé user1.key 
 verbe 3 

La configuration ci-dessus fonctionne bien: pas d'erreur, rapide, stable.

J'ai essayé plusieurs méthodes pour faire fonctionner Google Authenticator, mais je finis toujours par résoudre les problèmes secondaires de ces articles. Je ne souhaite pas m'authentifier auprès de la base de données d'utilisateurs/mots de passe locaux du serveur, mais uniquement du système que j'ai déjà mis en place et de Google Authenticator.

J'ai Google Authenticator en cours d'exécution; Je l'ai installé en utilisant apt-get install libpam-google-authenticator et je l'ai déjà utilisé pour authentifier les sessions SSH. Cela a bien fonctionné, mais je l’ai désactivé car il s’agit d’un serveur de test et le test en question est terminé.

Soyez précis s'il vous plait. Je sais que je devrais ajouter un plugin à la configuration ovpn de mon serveur et que je devrais ajouter quelque chose à /etc/pam.d/openvpn mais quoi au juste?

Toute aide serait grandement appréciée!

/informaitons supplémentaires

J'ai suivi cet article: http://www.howtoforge.com/securing-openvpn-with-a-a-a--a---a-ne-password-otp-on-ubuntu au lieu de compiler à partir de la source, j'ai installé Google Authenticator avec apt-get install libpam-google-authentator. J'ai aussi lu, mais non utilisé dans ce cas, ces articles: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two -factor-authentication/ et http://zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . Et j'ai lu sur PAM, comme suggéré;)

Maintenant, voici quelques développements intéressants.

/etc/pam.d/openvpn a ceci:

 compte [succès = 2 new_authtok_reqd = done default = ignorer] pam_unix.so 
 compte [success = 1 new_authtok_reqd = done default = ignorer] pam_winbind.so 
 compte requis pam_deny.so 
 compte requis pam_permit.so 
 authentification requise pam_google_authenticator.so 

Conformément au howto, j'ai copié l'original de /etc/pam.d/common-account et ajouté la dernière ligne. Maintenant, si je commente la dernière ligne, la connexion OpenVPN réussit. Cependant, si la dernière ligne n'est pas commentée, /var/log/auth.log enregistre ceci:

 PAM incapable d'ouvrir le fichier (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: symbole non défini: pam_get_item 
 PAM ajoutant un module défaillant: pam_google_authenticator.so 
.

et /var/log/openvpn-otp-1096.log enregistre ceci:

 PLUGIN_CALL: la fonction de plug-in PLUGIN_AUTH_USER_PASS_VERIFY a échoué avec le statut 1: /usr/lib/openvpn/openvpn-auth-pam.so... ] e-utilisant le contexte SSL/TLS 
 AUTH-PAM: BACKGROUND: l'authentification de l'utilisateur 'martin' a échoué: le module est inconnu 

Le problème semble être entre PAM et Google Authenticator.

Google répertorie les problèmes rencontrés avec d'autres plug-ins, mais je ne trouve pas d'informations spécifiques concernant Google Authenticator.

8
Forkbeard

Ok, Google est mon ami.

J'ai fait ça:

 # apt-get purge libpam-google-authenticator 
 # télécharger https://code.google.com/p/google-authenticator/downloads/list
# apt-get installez libpam-dev 

Ajoutez ceci à Makefile, juste après la licence:

 LDFLAGS = "- lpam" 

Ensuite

 # make 
 # make installer 
 # service openvpn restart 

Assurez-vous également que /home/username/.google_authenticator ne dispose d'aucun droit, à l'exception des droits de lecture, pour l'utilisateur qui l'utilisera.

Maintenant, je dois entrer mon nom d'utilisateur correspondant à mon nom d'utilisateur local sur le serveur (mon compte Shell) en tant que nom d'utilisateur OpenVPN et le code à 6 chiffres de Google Authenticator en tant que mot de passe.

Maintenant ça marche.

Merci à tous pour votre temps :)

(Comment puis-je marquer ce message comme résolu? Dois-je simplement modifier le titre du sujet?)

2
Forkbeard

Si vous voulez juste une autorisation OTP pour OpenVPN, un plugin natif OTP OpenVPN est disponible. Il est compatible avec les clés secrètes de Google Authenticator. Tous les secrets sont stockés dans un seul fichier texte et il n'est pas nécessaire de configurer PAM ou de créer des répertoires d'utilisateurs.

Découvrez-le: https://github.com/evgeny-gridasov/openvpn-otp

2
egridasov