Ich benutze Ubuntu.
Ich frage mich nur, ob es möglich ist, libpam-google-authenticator (mit dem Sie sich mit einem von Ihrem Telefon generierten Code anmelden können) UND die Zertifikatauthentifizierung so einzurichten, dass sie zusammenarbeiten, und wenn dies möglich ist, wie ich vorgehen würde Einrichten. Um sich in mein Konto einzuloggen, müssen Sie mein Passwort, mein Telefon (und seinen Passcode) UND mein Zertifikat / privaten Schlüssel und sein Passwort haben.
Ich habe beide dazu gebracht, unabhängig zu arbeiten, aber ich habe sie nie dazu gebracht, zusammenzuarbeiten. Ich bin mir aber sicher, dass es irgendwie möglich ist.
Vielen Dank.
ssh
authentication
sshd
two-factor-authentication
Jesse W.
quelle
quelle
Antworten:
Dies ist durch Verketten von PAM-Modulen möglich. Aber bevor ich auf Details eingehe:
Eine falsche Konfiguration von PAM kann und wird verhindern, dass Sie sich bei Ihrem System anmelden
Zum Glück können Sie jederzeit im Einzelbenutzermodus starten und das Problem beheben. Seien Sie jedoch gewarnt, dass Sie mit PAM nicht mehr als nötig herumspielen möchten.
Auf jeden Fall ist die Idee dahinter , dass es möglich ist , das Stapeln PAM - Module zu verwenden , um sicherzustellen , dass
pam-google-authenticator
,pam_unix
(dies überprüft Ihr Passwort) und das Zertifikat Modul alle erfolgreich sein müssen Sie den Zugriff zu ermöglichen. Standardmäßig ist PAM so konfiguriert, dass jedes Authentifizierungsmodul Sie authentifizieren kann, wobei die anderen übersprungen werden.In /etc/pam.d/common-auth sehen Sie oben eine Zeile, die der folgenden ähnelt:
Dies teilt PAM mit, dass dies
pam_unix.so
erfolgreich sein soll. Es überspringt die nächsten beiden Regeln (die normalerweise ein anderes Authentifizierungsmodul sind und dannpam_deny.so
) und fährt mit den optionalen Modulen fort. Sollte das Modul jedoch ausfallen, wird es ignoriert und die Steuerung wird an das nächste Modul in der Kette weitergegeben. Dies setzt jedes Authentifizierungsmodul fort, bis entweder die Steuerung zum optionalen Block springt oder PAM auf pam_deny.so trifft und genau dort fehlschlägt.Dies kann genutzt werden, um sicherzustellen
pam-google-authenticator
,pam_unix.so
und Ihr Zertifikat PAM - Modul alle erfolgreich sein müssen Sie den Zugriff zu ermöglichen. Ich kenne den Namen des Google-Authentifizierungsmoduls oder des von Ihnen verwendeten Zertifikatmoduls nicht, aber Sie sollten sie in Ihrer Common-Auth-Datei finden können. Wenn Sie also so etwas ganz oben platzieren:Ersetzen
<n>
durch die Anzahl der Module zwischen dem Modul pam_permit.so hier und dem nächstenpam_permit.so
Modul - mit anderen Worten, dies sollte auf den Code [1 = Erfolg = n Standard = Ignorieren] + 1 des obersten Authentifizierungsmoduls gesetzt werden. Diese Syntax ist etwas funky , überspringt jedoch im Wesentlichen die Authentifizierungsmodule, nachdem die oben genannten Module erfolgreich waren.Natürlich fragen Sie sich möglicherweise, wie Sie diese dreistufige Authentifizierung nur auf Ihr Benutzerkonto beschränken können. Dies kann mit einem
pam_succeed_if.so
Modul erfolgen und sollte über dem oben beschriebenen dreistufigen Authentifizierungsblock eingefügt werden:Wo
<username>
wird durch Ihren Benutzernamen ersetzt. Diese Zeile sagt einfach, dass pAM_succeed_if.so erfolgreich sein sollte (auch bekannt als Ihr Benutzername mit dem Benutzernamen in dieser Zeile übereinstimmt), dann sollte PAM mit den nächsten Modulen fortfahren, die die dreistufigen Authentifizierungsmodule sind. Andernfalls sollte PAM zu den realen Modulen springen, die 4 Module von diesem entfernt sind.Um mehrere Dinge abzugleichen, z. B. die Mitgliedschaft in einer Gruppe zusammen mit einem bestimmten Benutzernamen, müssen mehrere Zeilen verwendet werden, zum Beispiel:
Bevor ich dies tue, würde ich die Common-Auth-Datei sichern und mich auch mit dem Einzelbenutzermodus und der Wiederherstellung der alten Datei im Notfall vertraut machen. Diese Konfiguration wurde von mir nicht getestet, sollte aber funktionieren.
Um dies zum ersten Mal zu testen, öffnen Sie ein oder zwei Root-Shells und lassen Sie sie einfach in Ruhe. Diese dienen als Fallbacks für den Fall, dass etwas schief geht, da Sie Common-Auth problemlos durch das Backup ersetzen können. Nehmen Sie dann diese Änderungen vor. Versuchen Sie als Nächstes,
su
sich bei Ihrem Benutzerkonto anzumelden. Sie sollten den dreistufigen Authentifizierungsprozess durchlaufen müssen.Die vollständige Dokumentation des
pam_succeed_if.so
Moduls finden Sie unter http://linux.die.net/man/8/pam_succeed_ifquelle
ChallengeResponseAuthentication
undUsePAM
dann die in meiner obigen Antwort beschriebenen Zeilen entweder in /etc/pam.d/sshd oder /etc/pam.d/common setzen -auth, abhängig davon, ob Sie dies entweder für alle Anmeldungen oder nur für SSH ausführen möchten. Denken Sie daran, die Füllzeile 'pam_certificate_auth.so' zu entfernen und die Zeile [success = <n> als Ergebnis zu ändern.Ich habe diesen Beitrag gelesen und fand ihn cool - hier ist, wie ich die Drei-Faktor-Authentifizierung zum Laufen gebracht habe. Ich schrieb einen Blog - Post über sie hier .
Grundsätzlich habe ich Google Authenticator und Passwort in PAM eingerichtet und anschließend die Authentifizierung mit öffentlichem Schlüssel in OpenSSH eingerichtet (dies umgeht die beiden anderen) und schließlich von OpenSSH aufgefordert, sich auch über PAM zu authentifizieren (letzte Zeile).
Aus / etc / ssh / sshd_conf
quelle
Nur Pubkey + GoogleAuth müssen Sie oben auf Ihrer /etc/pam.d/sshd hinzufügen
Ich nehme an, Sie haben OpenSSH> = 6.2 und sshd_config bearbeitet
Für mehr paranoide Sicherheit fügen Sie einige zusätzliche Konfigurationen hinzu: D.
quelle