Wie richte ich sshd so ein, dass sowohl ein privater Schlüssel als auch ein Passwort erforderlich sind?

8

Wie richte ich sshd so ein, dass sowohl ein privater Schlüssel als auch ein Passwort erforderlich sind?

In / etc / ssh / sshd_config habe ich derzeit:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes

Anscheinend kann sich ein Benutzer jedoch entweder mit einem privaten Schlüssel oder einem Kennwort anmelden.

Ryanprayogo
quelle

Antworten:

4

Sie müssen einen SSH-Gatekeeper einrichten. Dadurch kann openssh die Multifaktorauthentifizierung ermöglichen.

Hier ist ein großartiger Link: https://calomel.org/openssh.html

Im Wesentlichen verwenden Sie die ForceCommand-Direktive, um ein Skript auszuführen, wenn sich der Benutzer anmeldet. Dieses Skript fordert den Benutzer dann zur Eingabe des Kennworts auf. Ich suche derzeit nach einer Methode, um ein bestimmtes Kennwort mit dem Systemkennwort zu vergleichen, aber ich werde (verständlicherweise) leer.

Wenn das Benutzerkonto in einem LDAP-Verzeichnis gespeichert ist, können Sie versuchen, mit diesen Anmeldeinformationen eine Bindung an das Verzeichnis herzustellen. Das Problem besteht jedoch darin, dass das ausgeführte Programm als Benutzer und nicht als Root ausgeführt wird. Ich kenne die Sicherheitsauswirkungen des Schreibens des kompilierten Codes und des Einstellens von SUID nicht.

Hoffentlich gibt dir jemand eine bessere Antwort.

Aber da ich so viel getippt habe, befinden Sie sich auf einer extrem sicheren Site? Denn das ist wirklich der einzige Grund dafür. Normale öffentliche Schlüssel mit Passphrasen sollten für 99% der Fälle mehr als ausreichend sein.

Matt Simmons
quelle
Sie benötigen keine Root-Rechte, um eine Verbindung zu einem LDAP-Server herzustellen. Was Sie brauchen, ist ein Konto mit sehr eingeschränkten Berechtigungen (binden Sie einfach und suchen Sie uid, cn), um die CN des Benutzers zu finden. Wenn Sie den CN haben, binden Sie erneut und geben dem Benutzer die Kennwortabfrage. Der Nachteil ist, dass dies die Kennwortalterung nur erzwingt, wenn Sie ppolicy verwenden.
Hubert Kario
Gibt es keine Möglichkeit, PAM dazu zu bringen, nach dem Benutzerkennwort zu fragen, sobald Sie sich mit SSH und PKI angemeldet haben?
Chrw
4

Neuere Versionen von OpenSSH haben dies viel einfacher gemacht!

Fügen Sie /etc/ssh/sshd_configeinfach Folgendes hinzu:

AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

Wenn Sie einer bestimmten IP-Adresse (z. B. 192.168.10.10) erlauben möchten, sich mit den OpenSSH-Standardmethoden anzumelden, aber für jede andere IP-Adresse sowohl ein Kennwort als auch einen Schlüssel verwenden müssen, können Sie Matchstattdessen den folgenden Block hinzufügen :

Match Address "*,!192.168.10.10"
    AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

Obwohl nicht gut dokumentiert, ist das führende Sternchen auf der Übereinstimmungslinie erforderlich. Match Address "!192.168.10.10"wird eigentlich nie zusammenpassen. Dies kann sich in zukünftigen Versionen von OpenSSH ändern .

Liczyrzepa
quelle
Bitte poste nicht die gleiche Antwort mehrmals und versuche auch nicht, den Beitrag anderer Leute mit deinen eigenen Antworten zu bearbeiten. Hinterlassen Sie gegebenenfalls einen Kommentar mit einem Link zu Ihrer Antwort.
Sven
Sie haben meine Entschuldigung - ich habe die identische Antwort gelöscht
Liczyrzepa
-3

Zwei-Faktor-Authentifizierung? Nicht ganz. Das Zertifikat ist eine stärkere Authentifizierungsmethode als ein Kennwort.

Wenn Sie befürchten, dass das Zertifikat kompromittiert werden könnte, richten Sie die privaten Schlüssel so ein, dass sie durch ein Kennwort geschützt sind. Dadurch wird sichergestellt, dass der Benutzer zur Eingabe eines Kennworts aufgefordert wird, bevor das Zertifikat verwendet werden kann. Dadurch erhalten Sie eine Zwei-Faktor-Authentifizierung. Sie werden wissen, dass die Verbindung von jemandem stammt, der sowohl den privaten Schlüssel als auch das Passwort zum Entsperren besitzt.

Deaktivieren Sie die Kennwortauthentifizierung auf Ihrem SSH-Server. Dies verhindert, dass Benutzer Wörterbuch- / Brute-Force-Angriffe verwenden.

Sybreon
quelle
6
Das Festlegen eines Kennworts für den privaten Schlüssel ist nicht dasselbe wie das Erfordernis eines Schlüssels und eines Kennworts vom Server. Letzteres wird auf der Serverseite erzwungen, während die geschützte Schlüsseldatei dem Benutzer überlassen bleibt.
Andol
Was ich nicht zustimme, ist, dass diese Form der Zwei-Faktor-Authentifizierung sicherer ist als Zertifikate. Ich habe Angst vor dem Pseudo-Sicherheitsgefühl, das es geben könnte.
Sybreon