Comment utiliser Google Authenticator avec le serveur OpenVPN sur Ubuntu 12.04


9

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.


"J'ai essayé plusieurs howtos pour lancer Google Authenticator" Pourriez-vous créer un lien vers certains d'entre eux? C'est assez vague ce que vous avez essayé exactement et il serait triste que d'autres utilisateurs proposent des approches que vous avez déjà essayées. Soit dit en passant, libpam-google-authenticatorest 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.
gertvdijk

@ "Ceci n'est d'aucune utilité dans OpenVPN car vous y utilisez des certificats." C'est bon. Vous pouvez utiliser des certificats et un mot de passe à usage unique de Google Authenticator via PAM comme deuxième facteur d'authentification dans OpenVPN.
Damn Terminal

Ajout d'informations supplémentaires à la question d'origine. Je ne sais pas si je fais bien ça ...
Forkbeard

@gertvdijk: Je comprends que ce soit redondant, mais j'aimerais utiliser les deux certificats et un mot de passe à usage unique. Il me semble plus sûr d'utiliser ensuite l'une ou l'autre méthode individuellement.
Forkbeard

Hm, cela semble être un bug dans Google Authenticator. Le construire avec LDFLAGS = "- lpam" devrait aider mais je ne sais pas comment faire, l'exemple sur Howtoforge (lien dans la question d'origine) ne fonctionne pas, l'URL renvoie un 404.
Forkbeard

Réponses:


2

Ok, Google est mon ami.

J'ai fait ça:

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

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

LDFLAGS = "- lpam"

alors

# faire
# faire installer
# service openvpn restart

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?)


2

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


Merci pour votre réponse, egridasov. Puisque j'ai une configuration de travail maintenant, je ne vais pas l'essayer, mais je pourrais essayer un autre système. Le bit reneg-sec 0 que je trouve particulièrement utile, je m'étais cassé la tête sur la façon de faire en sorte que la connexion ne tombe pas après 3600 secondes
Forkbeard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.