Frage SSH: Zwei-Faktor-Authentifizierung


Ich habe derzeit einen Ubuntu Server 12.04 mit OpenSSH zusammen mit Samba und ein paar anderen Diensten. Zurzeit habe ich die Authentifizierung mit öffentlichen Schlüsseln eingerichtet, und ich frage mich, ob es möglich ist, eine Zwei-Faktor-Authentifizierung einzurichten? Ich habe mir den Google Authenticator angesehen, den ich derzeit mit meinem Google Mail-Konto verwende.

Ich habe ein PAM-Modul gefunden, das aussieht, als ob es kompatibel sein wird, aber es scheint, dass Sie gezwungen sind, ein Passwort und den erzeugten Code zu verwenden.

Ich frage mich, ob es eine Möglichkeit gibt, die Google Authenticator-Anwendung (oder etwas Ähnliches) zusammen mit meinem öffentlichen Schlüssel für die Authentifizierung bei meinem SSH-Server zu verwenden.


30
2017-07-20 03:17


Ursprung


Die meisten Kommentare scheinen Fehlerberichte zu sein, in denen erwähnt wird, dass es unmöglich ist, PAM und die Authentifizierung mit öffentlichen Schlüsseln mit OpenSSH zu verwenden. Ich habe auch Teile gefunden, die erwähnen, dass es überflüssig ist, da ich eine Passphrase mit meinem Schlüssel verwende. Bei allen Lösungen scheint nur Google Authenticator und ein Passwort keinen öffentlichen Schlüssel zu haben. Ich könnte es komplett vermissen, aber ich sehe einfach nicht, wie man beides implementiert. - Concrete Donkey
Nicht sicher, warum das eine -1 hat, das ist eine sehr interessante Frage und ich würde auch gerne die Antwort wissen (nicht, dass ich es wahrscheinlich benutzen würde, aber trotzdem, gut, um in den Wissensbanken zu bleiben) - Mark Henderson♦
@Pierre Versuchen Sie zu verlangen beide Authentifizierung mit öffentlichen Schlüsseln und Google OTP? - mgorven
@mgorven Ja, ich habe versucht, sowohl den öffentlichen Schlüssel als auch Google OTP einzurichten. Ich habe gehört, dass einige Leute sagen, dass es ausreicht, eine Passphrase auf dem Schlüssel als zwei Faktoren zu haben, aber ich bin besorgt über Malware, die den unverschlüsselten Schlüssel aus dem Speicher stiehlt. Ich hätte lieber zwei völlig getrennte Geräte zur Authentifizierung, ich bin etwas paranoid. - Concrete Donkey
Dies soll in 6.2 offiziell umgesetzt werden: bugzilla.mindrot.org/show_bug.cgi?id=983#c59 - Tobias Kienzler


Antworten:


Red Hat hat OpenSSH in RHEL (und daher CentOS) 6.3 einen Patch hinzugefügt, um mehrere Authentifizierungsmechanismen zu benötigen, so dass Sie so etwas tun können:

RequiredAuthentications2 publickey,keyboard-interactive

Siehe die Versionshinweise für nicht viel mehr Details.

Leider scheint diese Funktion nicht in OpenSSH upstream oder Ubuntu 12.04 zu sein, also wenn du nicht den Patch finden und OpenSSH neu kompilieren willst, habe ich Angst, dass du Pech hast.


8
2017-07-20 20:08



Ich muss sagen, ich schätze die Bemühungen, die Sie unternommen haben, um eine Antwort zu finden. Ich habe sicherlich versucht, ein paar Seiten mit Google-Ergebnissen zu durchblättern, aber alles deutet darauf hin, dass Sie nur ein Passwort und ein OTP verwenden mussten. Ich werde wahrscheinlich eine CentOS VM erstellen, um mit der Funktion herumzuspielen. - Concrete Donkey
@Pierre nicht Das viel Mühe, wusste ich schon vorher von diesem Feature ;-) - mgorven
Ich habe das gefunden entsprechender Fehler und einige weitere Notizen. Der Fehler enthält den Patch als Anhang. - Robie Basak
Und hier ist ein Upstream-openssh-Fehler. Es sieht so aus, als würde ähnliche Funktionalität bald in openssh upstream sein. - Robie Basak
openssh 6.2 ist in der Entwicklungsversion von Ubuntu gelandet, so dass diese Unterstützung für alle möglichen Katastrophen in der erwarteten Version 13.10 verfügbar sein wird. Es verwendet Upstreams AuthenticationMethods um mehrere erforderliche Methoden anzugeben, sodass Sie sowohl einen SSH-Schlüssel als auch PAM benötigen, wobei PAM das Google Authenticator-Ende durchführt. - Robie Basak


Du suchst nach Duo Sicherheit 


8
2017-07-24 06:00



Diese. Ja. Ich liebe dieses Ding! - LVLAaron
Definitiv - Duo ist einfach für Unix / Linux (Link in Antwort), OpenVPN (duosecurity.com/docs/openvpn_as) oder ein OATH TOTP-basierter Zwei-Faktor-Service oder LastPass-Passwortverwaltung. Jeder Dienst, der mit Google Authenticator kompatibel ist (der TOTP verwendet), kann mit der mobilen App von Duo oder einem Hardware-Token, der TOTP unterstützt, verwendet werden. - RichVel


Sie können sowohl das Google Authenticator PAM-Modul als auch öffentliche Schlüssel verwenden. Für eine bestimmte Authentifizierung wird jedoch nur jeweils eine verwendet. Das heißt, wenn sich ein Benutzer mit einem autorisierten öffentlichen Schlüssel anmeldet, wird kein Token benötigt.

Oder, um es anders zu sagen: Token werden nur für Passwort-Authentifizierungen benötigt, nicht für SSH-Schlüssel.

Diese Einschränkung kommt übrigens nicht vom Google Authenticator Modul, sondern von SSH, das nur zwei Faktor Authentifikation implementiert (via ChallengeResponseAuthentication) für PAM, aber ruft PAM nicht auf, wenn ein gültiger öffentlicher Schlüssel bereitgestellt wird.


5
2017-07-20 06:43



Das war richtig, hat sich aber geändert. openssh 6.2 fügt ein AuthenticationMethods Konfigurationsparameter, der dies umdrehen kann. Jetzt können Sie beide benötigen. - Robie Basak


Diese Frage stammt aus dem Jahr 2012. Seitdem hat sich SSH geändert und das SSH2-Protokoll wurde implementiert.

Bei neueren Versionen von SSH (> = 6.2) erwähnt man sshd_config:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

Diese Seite http://lwn.net/Artikel/544640/ erwähnt auch die Möglichkeit, eine Publickey- und eine PAM-Authentifizierung gleichzeitig zu verwenden.


3
2018-05-22 02:47





Ich weiß, dass diese Frage etwas veraltet ist, aber für zukünftige Leute (mich eingeschlossen), die nach einer Lösung suchen, wird auch die ForceCommand-Option in der sshd_config-Datei verwendet, um ein Skript auszuführen, das dann die Authentifizierung durchführt. Es gibt ein Beispielskript Hier Sie können ein Bit an Ihre Bedürfnisse anpassen, obwohl er es in diesem Beispiel aus der Datei authorized_keys aufruft, anstatt es systemweit mit ForceCommand von sshd_config zu machen.


2
2017-09-08 01:52





Holen Sie sich einen YubiKey und folgen Sie dieser Anleitung http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-using-yubikey-and-ssh-public-keys-together/

AFAIK, dies ist der beste Weg, um Yubikey auf Ihrem Server für SSH-Zugriff zu implementieren. Das obige Handbuch ermöglicht es Ihnen, öffentlichen Schlüssel + yubikey zu verwenden, während Sie mit dem offiziellen Führer (http://code.google.com/p/yubico-pam/wiki/YubikeyAndSSHViaPAM), es funktioniert nicht mit Public-Key.

Grüße, Vip


1
2017-07-24 17:47





Wenn Sie für Ihren privaten Schlüssel eine Passphrase festlegen, verfügen Sie bereits über eine Zwei-Faktor-Authentifizierung. Um sich einzuloggen, brauchten die Leute:

  1. etwas, das du hast - dein privater Schlüssel
  2. etwas, was Sie wissen - die Passphrase zu Ihrem privaten Schlüssel

0
2017-07-20 15:24



Zwei Passwörter nicht Machen Sie eine Zwei-Faktor-Authentifizierung. Der Schlüssel selbst ist kein gültiges "Etwas, das du hast", denn es ist keine Sache, nur eine Information. Die Sache muss nicht kopierbar oder zumindest nicht trivial kopierbar sein, um als Authentifizierungsfaktor verwendet zu werden. - MadHatter
Ich stimme überhaupt nicht zu. Wenn Schlüssel und Zertifikate nicht "etwas sind, was du hast", was sind sie dann? Sie sind definitiv nicht "etwas, was du weißt" (bist du es gewohnt, deinen SSH-Schlüssel zu lernen?), Und absolut nicht "etwas, was du bist". Das sind die einzigen drei Möglichkeiten, also sind sie durch einen Ausscheidungsprozess sicherlich "etwas, was du hast". - Bart B
Genau; für mich ist das Problem in der Maxime (etwas, das Sie haben | wissen | sind). Die Idee der Zwei-Faktor-Authentifizierung besteht darin, Mitglieder von zwei Klassen mit unterschiedlichen Eigenschaften zu verlangen; etwas, das Sie wissen, ist leicht zu tragen, aber es kann von jemand anderem als die gleiche Zeit bekannt sein, wie Sie es kennen; Also fügen wir einen zweiten, anderen Faktor hinzu. Das "Etwas, das du hast" ist nur dann anders, wenn es nicht kopierbar (oder schwer zu kopieren) ist. Ansonsten, sicher, es ist nicht etwas, was du weißt, aber es ist nicht qualitativ anders als etwas, das du kennstweil jemand anders es gleichzeitig haben kann. - MadHatter
Ich stimme definitiv zu, dass ein passwortgeschütztes Schlüsselpaar eine große Verbesserung der Sicherheit gegenüber dem direkten Benutzernamen + Passwort darstellt. Ich bin leider nicht der Meinung, dass ein solches Paar als Zwei-Faktor gilt, und wir werden wahrscheinlich zustimmen müssen, dass wir nicht übereinstimmen. - MadHatter
Wenn Sie einen mit der Passphrase verschlüsselten privaten Schlüssel haben, beweisen Sie dem Server nur eine Sache: dass Ihr Client den privaten Schlüssel kennt. Es beweist dem Server nicht, dass Sie Ihre Passphrase kennen; Der Server weiß nicht einmal über die Existenz Ihrer Passphrase. Daher ist es nur "etwas, was du weißt" (da dein Klient es weiß) und nur ein Faktor. Wenn ein Angreifer nur eine Sache (Ihren privaten Schlüssel) ergreift, sind Sie kompromittiert. Das ist ein Faktor. Zu argumentieren, dass Ihre Passphrase und Ihr privater Schlüssel als zwei Faktoren zählen, ist nur eine Übung in der Sophistik. Was zählt, ist, was auf dem Draht passiert. - Robie Basak