Wie aktiviere ich die 2-Faktor-Authentifizierung mit Google Authenticator für den auf .ovpn-Dateien basierenden openVPN-Zugriff?


10

Ich habe einen OpenVPN - Setup , wo die Benutzer kein nicht Shell - Accounts auf dem Debian - VM läuft openVPN haben. Die Artikel, die ich beim Googeln gefunden habe, enthalten Anweisungen zum Einrichten von Google Authenticator für einen klassischen * nix-Benutzer (z. B. muss die Authenticator-Binärdatei im Home-Verzeichnis des Benutzers ausgeführt werden).

Gibt es ein Dokument, in dem erläutert wird, wie Google Authenticator für OpenVPN-Server integriert wird, die sich ausschließlich anhand von .ovpnDateien authentifizieren , die auf der Clientseite verwendet werden?

Ich habe mir https://github.com/evgeny-gridasov/openvpn-otp angesehen , aber es muss noch Google Authenticator konfiguriert werden.


Ist das Problem die Registrierung des Google-Authentifikators oder die Notwendigkeit, ein Passwort einzugeben?
Cornelinux

Antworten:


4

Natürlich kannst du das nicht. Dies würde den eigentlichen Zweck von 2FA zunichte machen. Ihr Server muss über eine Möglichkeit verfügen, die Benutzeranmeldeinformationen zu überprüfen, und diese Informationen sollten nicht über das Netzwerk gesendet werden (dh Sie können nicht nur die Datei client.ovpn verwenden).

Sie müssen zwar nicht unbedingt Unix-Benutzer erstellen, aber Sie müssen Ihre Benutzer ihre Bestätigungscodes auf dem Server installieren lassen. Sie können SFTP mit virtuellen Benutzern verwenden, indem Sie deren bereits ausgestelltes Zertifikat, https mit clientseitiger (gegenseitiger) Autorisierung, CIFS (Samba) oder gutes altes FTP mit TLS-Erweiterung oder auf andere Weise verwenden, um den Server über die von den Benutzern erstellten Bestätigungscodes zu informieren . Der Kommunikationskanal sollte sicher sein (verschlüsselt || lokal).

Wenn Ihre Benutzer ihre eigenen Dateien hochladen, können Sie natürlich nicht die aggregierten dateibasierten Anmeldeinformationen verwenden, die von openvpn-otp verwendet werden. Glücklicherweise haben wir eine andere (und viel bessere) Option, indem wir Linux exzellentes Sicherheitsmodul pam verwenden.

Zunächst müssen Sie die von Google-Authenticator erstellten Benutzerdateien mit einer der oben genannten Methoden in einem Verzeichnis sammeln. In unserem Fall ist es / etc / google-auth.

Sie müssen hier eine einzelne Benutzer-ID für alle Dateien erzwingen, da Sie keine echten Benutzer haben. Lass es offen sein . Die Berechtigungen müssen 0400 (-r --------) sein. Pam mag keine welt- / gruppenlesbaren Anmeldeinformationen (sicherlich). Sie können dies einfach mit Samba, Apache, FTP oder im schlimmsten Fall mit einem Cron-Tab erzwingen (nicht empfohlen).

Führen Sie zu Testzwecken einfach Folgendes aus:

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

Danach bitten Sie openvpn, sich bei libpam zu authentifizieren, das über ein eigenes Google Auth-Modul verfügt. Hängen Sie dies an Ihre openvpn-Serverdatei an:

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

Dies besagt, dass wir die Pam-Authentifizierungsmethode mit der Pam-Auth-ID openvpn verwenden werden .

Erstellen Sie nun das Pam-Setup für openvpn. Bearbeiten Sie /etc/pam.d/openvpn:

auth    requisite       /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER}  user=openvpn
account    required     pam_permit.so

Hier sagen wir, dass wir ohne erfolgreiche Google-Authentifizierung sofort fehlschlagen (erforderlich), eine spezielle geheime Datei anstelle der Standardeinstellung $ HOME / .google_authenticator (secret =) verwenden und als Benutzer openvpn auf die Dateien zugreifen, da keine echte Benutzer-ID zugeordnet ist mit unseren Nutzern. In der nächsten Zeile sagen wir nur, dass jeder nach erfolgreicher Authentifizierung eine Verbindung herstellen kann. Natürlich sollten Sie hier Ihre eigene Berechtigungsrichtlinie implementieren. Sie können zulässige Benutzer mit den entsprechenden Pam-Modulen per Datei, MySQL-Datenbank oder LDAP steuern.

Hängen Sie dies an Ihre openvpn-Client-Datei an

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

Wir verwenden auth-user-pass, damit der openvpn-Client nach Benutzername und Passwort fragt. Wir mögen kein Caching ("Passwort" ändert sich) und regelmäßige Neuverhandlungen sind aus dem gleichen Grund schlecht für uns.

Danach sollten Sie in der Lage sein, eine Verbindung ohne openvpn-otp herzustellen. Bitte beachten Sie, dass dies eine viel flexiblere Methode ist, da Sie auf Wunsch sehr komplexe Regeln in Pam-Steuerdateien implementieren können. Sie können Benutzer basierend auf Ihrem MySQL- oder LDAP-Verzeichnis aktivieren / deaktivieren, ohne beispielsweise diese Zertifikate zu berühren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.