Verwendung von Google Authenticator mit OpenVPN-Server unter Ubuntu 12.04

9

Ich habe ein funktionierendes OpenVPN-System unter Ubuntu 12.04 und möchte Google Authenticator für zusätzliche Sicherheit hinzufügen.

Dies ist meine aktuelle openvpn-Konfiguration:

dev tun
proto udp
Port 1096
ca ubuserv04-ca.crt
cert ubuserv04.crt
Schlüssel ubuserv04.key
dh dh1024.pem
Server 10.10.0.0 255.255.255.0
Drücken Sie "Redirect-Gateway def1"
Drücken Sie "Route 192.168.0.0 255.255.255.0".
drücke "dhcp-option DNS 8.8.8.8"
drücke "dhcp-option DNS 8.8.4.4"
schweben
log-append /var/log/openvpn-otp-1096-status.log

(Dies ist nur ein Testaufbau. Ich weiß, dass ich bestimmte Aspekte ändern sollte, aber das funktioniert vorerst.)

Auf dem Client habe ich:

dev tun
Klient
proto udp
remote my.server.fqdn 1096
Resolv-Retry unendlich
ca ubuserv04-ca.crt
cert user1.crt
Schlüssel user1.key
Verb 3

Das obige Setup funktioniert einwandfrei: keine Fehler, schnell, stabil.

Ich habe mehrere Anleitungen ausprobiert, um Google Authenticator zum Laufen zu bringen, aber am Ende behebe ich jedes Mal Nebenprobleme in diesen Artikeln. Ich möchte mich nicht bei der lokalen Benutzer- / Kennwortdatenbank des Servers authentifizieren, sondern nur bei dem System, das ich bereits eingerichtet habe, sowie bei Google Authenticator.

Ich habe Google Authenticator ausgeführt. Ich habe es mit apt-get install libpam-google-authenticator installiert und es zuvor zur Authentifizierung von SSH-Sitzungen verwendet. Das hat gut funktioniert, aber ich habe das jetzt deaktiviert, weil es nur ein Testserver ist und dieser bestimmte Test abgeschlossen wurde.

Bitte erläutern. Ich weiß, dass ich der ovpn-Konfiguration meines Servers ein Plugin hinzufügen und /etc/pam.d/openvpn etwas hinzufügen sollte, aber was genau?

Jede Hilfe wäre sehr dankbar!

/Zusatzinformation

Ich habe diesen Artikel befolgt: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu Anstatt aus der Quelle zu kompilieren, habe ich Google Authenticator mit apt installiert -get installieren libpam-google-authenticator. Ich habe auch diese Artikel gelesen, aber in diesem Fall nicht verwendet: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ und http : //zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ . Und ich habe PAM gelesen, wie vorgeschlagen;)

Hier sind einige interessante Entwickler.

/etc/pam.d/openvpn hat Folgendes:

account [success = 2 new_authtok_reqd = done default = ignore] pam_unix.so 
account [success = 1 new_authtok_reqd = done default = ignore] pam_winbind.so 
Konto erforderlich pam_deny.so
Konto erforderlich pam_permit.so
auth erforderlich pam_google_authenticator.so

Gemäß der Anleitung habe ich das Original von /etc/pam.d/common-account kopiert und die letzte Zeile hinzugefügt. Wenn ich jetzt die letzte Zeile auskommentiere, ist die OpenVPN-Verbindung erfolgreich. Wenn die letzte Zeile jedoch nicht auskommentiert ist, protokolliert /var/log/auth.log Folgendes:

PAM kann nicht geöffnet werden (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: undefiniertes Symbol: pam_get_item
PAM fügt fehlerhaftes Modul hinzu: pam_google_authenticator.so

und /var/log/openvpn-otp-1096.log protokollieren dies:

PLUGIN_CALL: Plugin-Funktion PLUGIN_AUTH_USER_PASS_VERIFY ist mit Status 1 fehlgeschlagen: /usr/lib/openvpn/openvpn-auth-pam.so
TLS-Authentifizierungsfehler: Überprüfung des Authentifizierungs-Benutzernamens / -Kennworts für Peer fehlgeschlagen
E-Using SSL / TLS-Kontext
AUTH-PAM: HINTERGRUND: Benutzer 'martin' konnte sich nicht authentifizieren: Modul ist unbekannt

Das Problem scheint zwischen PAM und Google Authenticator zu liegen.

Google listet Probleme mit anderen Plugins auf, aber ich kann keine Informationen zu Google Authenticator finden.

Gabelbart
quelle
"Ich habe verschiedene Anleitungen ausprobiert, um Google Authenticator zum Laufen zu bringen." Können Sie auf einige davon verlinken? Es ist ziemlich vage, was Sie genau versucht haben, und es wäre traurig, wenn andere Benutzer Ansätze entwickeln würden, die Sie bereits ausprobiert haben. Übrigens libpam-google-authenticatordient zur Authentifizierung mit Google Authenticator in PAM. Dies ist in OpenVPN nicht von Nutzen, da Sie dort Zertifikate verwenden. Ich schlage vor, Sie lesen, was PAM ist - Sie werden verstehen, dass es in Ihrem Fall nichts mit OpenVPN zu tun hat.
Gertvdijk
@ "Dies ist in OpenVPN nicht von Nutzen, da Sie dort Zertifikate verwenden." Das ist ok. Sie können Zertifikate und ein Einmalkennwort von Google Authenticator über PAM als zweiten Faktor für die Authentifizierung in OpenVPN verwenden.
Verdammtes Terminal
Hinzufügen zusätzlicher Informationen zur ursprünglichen Frage. Ich bin mir nicht sicher, ob ich das richtig mache ...
Forkbeard
@gertvdijk: Ich verstehe, dass es redundant ist, aber ich möchte sowohl Zertifikate als auch ein Einmalkennwort verwenden. Es scheint mir sicherer, als beide Methoden einzeln anzuwenden.
Gabelbart
Hm, es scheint ein Fehler in Google Authenticator zu sein. Das Erstellen mit LDFLAGS = "- lpam" sollte helfen, aber ich bin mir nicht sicher, wie ich das machen soll. Das Beispiel auf Howtoforge (Link in der ursprünglichen Frage) funktioniert nicht, die URL gibt eine 404 zurück.
Forkbeard

Antworten:

2

Ok, Google ist mein Freund.

Ich war das:

# apt-get purge libpam-google-authentifikator
# https://code.google.com/p/google-authenticator/downloads/list herunterladen
# apt-get install libpam-dev

Fügen Sie dies direkt nach der Lizenz zu Makefile hinzu:

LDFLAGS = "- lpam"

Dann

# machen
# install installieren
# service openvpn restart

Stellen Sie außerdem sicher, dass /home/username/.google_authenticator überhaupt keine Rechte hat, außer Leserechte für den Benutzer, der es verwenden wird.

Jetzt muss ich meinen Benutzernamen, der mein lokaler Benutzername auf dem Server ist (mein Shell-Konto), als meinen OpenVPN-Benutzernamen und den 6-stelligen Google Authenticator-Code als Passwort eingeben.

Jetzt funktioniert es.

Vielen Dank für Ihre Zeit :)

(Wie kann ich diesen Beitrag als gelöst markieren? Bearbeite ich nur den Titel des Themas?)

Gabelbart
quelle
2

Wenn Sie nur die OTP-Authentifizierung für OpenVPN wünschen, steht ein natives OTP-OpenVPN-Plugin zur Verfügung. Es ist mit geheimen Schlüsseln von Google Authenticator kompatibel. Alle Geheimnisse werden in einer einzigen Textdatei gespeichert, und es ist nicht erforderlich, PAM zu konfigurieren oder Benutzerverzeichnisse zu erstellen.

Probieren Sie es aus: https://github.com/evgeny-gridasov/openvpn-otp

egridasov
quelle
Danke für deine Antwort, egridasov. Da ich jetzt ein funktionierendes Setup habe, werde ich es nicht ausprobieren, aber ich könnte es auf einem anderen System ausprobieren. Das Reneg-Sec 0-Bit finde ich besonders hilfreich. Ich hatte mir den Kopf gebrochen, wie ich die Verbindung nach 3600 Sekunden nicht
abbrechen kann