SSH-Schlüsselkennwörter erzwingen?

9

Ich möchte passwortbasierte Anmeldungen für SSH entfernen. Ich möchte jedoch keine passwortlosen SSH-Schlüssel zulassen, da dies noch schlimmer wäre.

Wie kann ich sicherstellen, dass nur SSH-Schlüssel mit Kennwörtern eine Verbindung herstellen können?

Wenn dies nicht möglich ist, gibt es Alternativen wie die zentrale Verwaltung der SSH-Schlüsselgenerierung und die Verhinderung, dass Benutzer ihre eigenen Schlüssel generieren und / oder verwenden? So etwas wie PKI, nehme ich an.

Lee B.
quelle

Antworten:

20

Die Passphrase, die für den privaten Schlüssel festgelegt werden kann, hängt nicht mit dem SSH-Server oder der Verbindung zu diesem zusammen. Das Festlegen einer Passphrase für den privaten Schlüssel ist lediglich eine Sicherheitsmaßnahme, die der Schlüsselbesitzer ergreifen kann, um den Zugriff Dritter auf seine Remote-Shell zu verhindern, falls der private Schlüssel gestohlen wird.

Leider können Sie Benutzer nicht zwingen, ihre privaten Schlüssel mit Passphrasen zu sichern. Manchmal sind ungeschützte private Schlüssel erforderlich, um den Zugriff auf den Remote-SSH-Server zu automatisieren. Eine gute Gewohnheit , die ich sehr empfehlen für solche Fälle ist es, die Nutzer zu beraten Hash der known_hosts - Datei (gespeichert in ~ / .ssh / known_hosts ), die Informationen über die entfernten Hosts der Benutzer eine Verbindung zu, mit dem folgenden Befehl hält:

ssh-keygen -H -f ~/.ssh/known_hosts

Selbst wenn ein Dritter Zugriff auf einen ungeschützten privaten Schlüssel erhält, ist es auf diese Weise äußerst schwierig herauszufinden, für welche Remote-Hosts dieser Schlüssel gültig ist. Das Löschen des Shell-Verlaufs ist natürlich obligatorisch, damit diese Technik einen beliebigen Wert hat.

Außerdem sollten Sie immer berücksichtigen, dass sich root nicht remote anmelden kann, indem Sie Folgendes in die Konfiguration Ihres SSH-Servers (sshd_config) einfügen:

PermitRootLogin no

Wenn Sie andererseits verhindern möchten, dass Benutzer Schlüssel zur Authentifizierung verwenden, aber stattdessen Kennwörter verwenden, sollten Sie Ihrer sshd_config Folgendes hinzufügen :

PasswordAuthentication yes
PubkeyAuthentication no
Geboren um zu reiten
quelle
8

Es ist nicht möglich.

Benutzer können mit ihren Schlüsseldateien alles tun und in passwortlose konvertieren, selbst wenn Sie sie beispielsweise generiert haben.

siposa
quelle
3

Das kannst du nicht. Sobald der Benutzer die Schlüsseldaten in seinem Besitz hat, können Sie ihn nicht mehr davon abhalten, die Passphrase zu entfernen. Sie müssen nach anderen Möglichkeiten suchen, um Ihre Authentifizierung durchzuführen.

womble
quelle
2

Um die Kontrolle über Benutzerschlüssel zu erlangen, müssen alle Schlüssel in ein Stammverzeichnis verschoben werden, in dem die Schlüssel lesbar sind, aber vom Endbenutzer nicht geändert werden können. Dies kann durch Aktualisieren von sshd_config erfolgen.

Sobald sich die Schlüsseldateien an einem kontrollierten Speicherort befinden, benötigen Sie eine Verwaltungsoberfläche, um die Kennwortrichtlinie zu aktualisieren (und durchzusetzen) und anschließend die Schlüssel an die erforderlichen Hosts zu verteilen. Entweder selbst rollen oder sich Produkte wie FoxT / Tectia usw. ansehen.

PT
quelle
... was die Vorteile von Public-Key bricht
Patwie
0

Eine Abschwächung wäre die Verwendung des Google Authenticator PAM-Modul-Plugins. Normalerweise innerhalb der offiziellen Pakete erhältlich.

Dadurch wird 2FA über einen 6-stelligen Code auf Ihrem Smartphone verfügbar.

Anweisungen hier: Einrichten der Multi-Faktor-Authentifizierung für SSH unter Ubuntu 16.04

Basil A.
quelle
1
Sie sollten beachten, dass dies die Frage nicht direkt beantwortet, sondern eine (gute) Alternative darstellt.
Ceejayoz
1
@ceejayoz Du hast recht. Ich habe gerade zu Beginn der Antwort "Eine Abschwächung wäre zu verwenden ..." hinzugefügt, um zu verdeutlichen, dass dies eine Alternative ist.
Basil A
-1

EINFACH erweitern Sie einfach das SSH-Protokoll, sodass der SSH-Client oder der SSH-Agent ein Flag meldet / setzt, um anzugeben, ob der ursprüngliche private Schlüssel verschlüsselt wurde oder nicht (möglicherweise kann die Serverseite sogar eine Abfrage stellen) - da die Clientseite sichtbar ist des privaten Schlüssels und fordert sogar bereits zur Eingabe der Passphrase auf, wenn der Schlüssel verschlüsselt ist.

wallabyted
quelle