J'ai un système OpenVPN fonctionnel sur Ubuntu 12.04 et je voudrais ajouter Google Authenticator pour plus de sécurité.
Voici ma configuration 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 pousser "redirect-gateway def1" pousser "route 192.168.0.0 255.255.255.0" pousser "dhcp-option DNS 8.8.8.8" pousser "dhcp-option DNS 8.8.4.4" flotte log-append /var/log/openvpn-otp-1096-status.log
(Ce n'est qu'une configuration de test, je sais que je devrais en changer certains aspects, mais cela fonctionne pour l'instant.)
Sur le client j'ai:
dev tun client proto udp my.server.fqdn 1096 à distance resolv-retry infinite ca ubuserv04-ca.crt cert user1.crt clé user1.key verbe 3
La configuration ci-dessus fonctionne bien: pas d'erreurs, rapide, stable.
J'ai essayé plusieurs façons de faire fonctionner Google Authenticator, mais je finis à chaque fois par résoudre les problèmes secondaires dans ces articles. Je ne veux pas m'authentifier auprès de la base de données locale d'utilisateurs / mots de passe du serveur, mais uniquement du système que j'ai déjà en place, plus Google Authenticator.
J'ai Google Authenticator en cours d'exécution; Je l'ai installé en utilisant apt-get install libpam-google-authentator et je l'ai déjà utilisé pour authentifier des sessions ssh. Cela a bien fonctionné mais je l'ai maintenant désactivé car il s'agit simplement d'un serveur de test et ce test particulier a été 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 exactement?
Toute aide serait grandement appréciée!
/informaitons supplémentaires
J'ai suivi cet article: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu Au lieu de compiler à partir de la source, j'ai installé Google Authenticator avec apt -get installer libpam-google-authentiqueator. J'ai également lu, mais pas 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 = fait par défaut = ignorer] pam_unix.so compte [succès = 1 new_authtok_reqd = fait par défaut = ignorer] pam_winbind.so compte requis pam_deny.so compte requis pam_permit.so authentification requise pam_google_authenticator.so
Selon le guide, 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. Si la dernière ligne n'est pas commentée cependant, /var/log/auth.log enregistre ceci:
PAM incapable de fermer (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: symbole non défini: pam_get_item PAM ajoutant un module défectueux: 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 Erreur d'authentification TLS: la vérification du nom d'utilisateur / mot de passe d'authentification a échoué pour l'homologue Utilisation du contexte SSL / TLS AUTH-PAM: CONTEXTE: l'utilisateur «martin» n'a pas pu s'authentifier: le module est inconnu
Le problème semble être entre PAM et Google Authenticator.
Google répertorie les problèmes avec d'autres plugins, mais je ne trouve pas vraiment d'informations concernant Google Authenticator en particulier.
la source
libpam-google-authenticator
est pour l'authentification à l'aide de Google Authenticator dans PAM. Cela n'est d'aucune utilité dans OpenVPN car vous y utilisez des certificats. Je vous suggère de lire ce qu'est PAM - vous comprendrez que cela n'a rien à voir avec OpenVPN dans votre cas.Réponses:
Ok, Google est mon ami.
J'ai fait ça:
Ajoutez ceci à Makefile, juste après la licence:
alors
Assurez-vous également que /home/username/.google_authenticator n'a aucun droit, à l'exception des droits de lecture pour l'utilisateur qui va l'utiliser.
Maintenant, je dois entrer mon nom d'utilisateur qui est mon nom d'utilisateur local sur le serveur (mon compte shell) comme mon nom d'utilisateur OpenVPN et le code à 6 chiffres de Google Authenticator comme 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?)
la source
Si vous voulez juste l'authentification OTP pour OpenVPN, il existe un plugin OTP OpenVPN natif disponible. Il est compatible avec les clés secrètes 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 utilisateur.
Découvrez-le: https://github.com/evgeny-gridasov/openvpn-otp
la source