Ich verwende einen SSH-Server und verwende weiterhin die einfache Kennwortauthentifizierung. Überall, wo ich über Sicherheit lese, wird empfohlen, die Public-Key-Authentifizierung zu verwenden. Aber ich verstehe die Vorteile nicht. Ihre Verwendung ist in meinen Augen entweder unsicher oder eine Menge praktischer Arbeit.
Wenn jemand versucht, die Anmeldung an meinem SSH-Server zu erzwingen, ist Public-Key natürlich viel sicherer als jedes andere Passwort. Aber davon abgesehen ist es völlig unsicher.
Die Berater argumentieren meistens, dass Sie sich kein Passwort merken müssen. Wie unsicher ist das? Wenn sich jemand in meinen Computer einhackt, bekommt er nicht nur meinen Computer, sondern auch meinen Server? Wenn ich SSH von verschiedenen Clients aus verwende, muss ich die öffentlichen Schlüssel jeweils einzeln speichern, was die Wahrscheinlichkeit vervielfacht, dass sie in falsche Hände geraten. Ich könnte sie auf einem USB-Stick speichern, den ich bei mir habe, aber er kann verloren gehen und der Finder hat Zugriff auf meinen Server.
Möglicherweise bin ich mit der Zwei-Faktor-Authentifizierung besser bedient.
Fehlt mir ein Argument? Was ist der beste Weg für mich?
quelle
Antworten:
Dies gilt möglicherweise auch für Keylogger: Sobald Sie sich vom infizierten Computer auf Ihrem Server anmelden, erhalten diese das Kennwort.
Schlüssel haben jedoch drei Vorteile:
1) Cacheable Authentifizierung. Geben Sie Ihre Passphrase einmal ein und führen Sie mehrere ssh-Befehle aus. Dies ist sehr nützlich, wenn Sie etwas verwenden, das ssh als Transport verwendet, z. B. scp, rsync oder git.
2) Skalierbare Authentifizierung. Geben Sie Ihre Passphrase einmal ein und melden Sie sich bei mehreren Computern an . Je mehr Maschinen Sie haben, desto nützlicher ist dies. Wenn Sie 100 Maschinen haben, was machen Sie dann? Sie können nicht dasselbe Kennwort verwenden (es sei denn, es ist eine Klonfarm), und Sie können sich nicht an so viele erinnern. Sie müssten also einen Passwort-Manager verwenden und sind wieder bei einem einzigen Kompromiss angelangt. Effektiv ist der Schlüssel Passwort ist Ihr Passwort - Manager.
2b) Die Skalierung ist umgekehrt, wenn Sie mehrere Administratoren auf demselben System haben, da Sie Benutzer A die Schlüssel entziehen können, ohne B, C, D, E, F ... mitteilen zu müssen, dass sich das Kennwort geändert hat.
(Dies kann auch mit einzelnen Konten und sudo geschehen, aber dann müssen Sie diese Konten irgendwie bereitstellen.)
3) Automatisierung und Teildelegation. Sie können SSH so einrichten, dass bei einer Schlüsselverbindung ein bestimmter Befehl ausgeführt wird . Auf diese Weise kann ein automatisierter Prozess auf System A auf System B etwas tun, ohne dass zwischen beiden eine vollständige Vertrauensstellung ohne Kennwort besteht.
(Es ist ein Ersatz für rlogin / rsh, was unglaublich unsicher war)
Bearbeiten: Ein weiterer Vorteil von öffentlichen Schlüsseln anstelle von Kennwörtern ist das häufige Szenario, in dem der Server durch eine Sicherheitsanfälligkeit gefährdet wird. In diesem Fall wird das Kennwort sofort gefährdet, wenn Sie sich mit einem Kennwort anmelden. Mit einem Schlüssel einloggen geht nicht! Ich würde sagen, dass dies häufiger vorkommt, als dass der ursprüngliche Desktop des Administrators gefährdet wird.
quelle
ssh -A
und von dort aus bei Computern anmelden, die es der Öffentlichkeit ermöglichen, Ihren ursprünglichen Host zu konfigurieren.Wenn Sie gute Passwörter verwenden, kann dies ausreichend sicher sein. Normalerweise beschränke ich die Anzahl der öffentlich zugänglichen Server auf ein Minimum und erlaube SSH von bestimmten IP (s), wann immer dies möglich ist.
Sie können Ihre Schlüssel auch durch eine Passphrase (Passwort) schützen. Diese Passphrase muss also immer dann eingegeben werden, wenn Sie sich bei Ihren Servern anmelden müssen. Niemand kann dann Ihren Schlüssel verwenden, wenn nicht die richtige Passphrase angegeben ist.
Es gibt ähnliche Beiträge:
quelle
Eine Möglichkeit, wie die Autorisierung öffentlicher Schlüssel sicherer ist, besteht darin, dass der Angreifer es schafft, zwischen dem Client-Computer und dem Server eine Man-in-the-Middle-Verbindung (MitM) herzustellen, und dass Sie den sich ändernden Host-Schlüssel nicht bemerken (möglicherweise, weil Sie dies nicht getan haben) Sie haben den alten Schlüssel nicht (z. B. weil dies das erste Mal ist, dass Sie diesen bestimmten Client-Computer verwenden).
(Dasselbe gilt, wenn der Angreifer die Kontrolle über den Server übernimmt und es andere Server gibt, auf denen dieselben Anmeldeinformationen funktionieren.)
Bei der standardmäßigen passwortbasierten Authentifizierung übermitteln Sie Ihr Passwort (innerhalb der verschlüsselten Verbindung) im Klartext. Normalerweise wird es vom Originalserver gehasht und das Ergebnis mit einem in der Passwortdatenbank gespeicherten Hash verglichen. Ein MitM-Angreifer könnte stattdessen dieses Kennwort verwenden, eine Verbindung zum realen Server herstellen und sich dort anmelden ... und entweder den Inhalt an Sie weiterleiten (damit Sie nichts bemerken) oder einfach seine eigenen bösen Dinge auf Ihrem Server tun .
Bei der Authentifizierung mit öffentlichem Schlüssel signiert der Client im Grunde genommen einige Daten, die sowohl dem Server als auch dem Client bekannt sind, um zu beweisen, dass er im Besitz des privaten Schlüssels ist, und sendet die Signatur an den Server. Diese signierten Daten enthalten eine Sitzungskennung, die von Zufallszahlen abhängt, die sowohl vom Client als auch vom Server ausgewählt werden, und daher für jede Sitzung unterschiedlich ist. Wenn die MitM eine eigene SSH-Verbindung zum realen Server herstellt, hat dieser eine andere Sitzungs-ID, und daher funktioniert die vom Client bereitgestellte Signatur dort nicht.
Wie bereits in anderen Antworten erwähnt, müssen Sie Ihren privaten Schlüssel natürlich sicher aufbewahren, z. B. mit einer Passphrase verschlüsselt, oder auf einem separaten Gerät, das nur nach Eingabe einer PIN Signaturen erstellt.
quelle
OpenSSH kann seine eigene Zertifizierungsstelle für die Verwaltung von SSH-Host- und Clientschlüsseln behalten und Sperrlisten verwenden. Dies könnte die Sicherheit erhöhen, die durch die schlüsselbasierte Authentifizierung bereitgestellt wird.
quelle
Sie haben Recht mit der Behauptung "Sie brauchen kein Passwort". Das ist auf Kundenseite wirklich unsicher.
Wenn Sie nur öffentliche Schlüssel für die Anmeldung zulassen, ist dies wesentlich sicherer, da Sie keinen Brute-Force-Zugriff auf Ihren Server erzwingen können. Alles, was ein Angreifer erreichen kann, ist eine gewisse Auslastung Ihres Servers - Sie können fail2ban einsetzen , um dies in Schach zu halten.
Für die Sicherheit auf der Clientseite müssen Sie den privaten Schlüssel mit einer guten Passphrase schützen. Natürlich ist die Verbindung zum Server jetzt umständlicher als mit einem Passwort. Um dies zu umgehen, können Sie den privaten Schlüssel mit ssh agent im Speicher ablegen, wenn Sie mehrmals hintereinander eine Verbindung zum Server herstellen möchten. Es wird empfohlen, die Zeit zu begrenzen, die ein Schlüssel im Speicher aufbewahrt werden soll.
quelle
Eine Möglichkeit für 2FA für SSH (und eine, die relativ wenig Einrichtung / Komplexität erfordert) ist die Verwendung eines öffentlichen Schlüssels und eines Kennworts.
Ich glaube, dass etwas in der Art
AuthenticationMethods publickey,keyboard-interactive
hinzugefügt werden kann/etc/ssh/sshd_config
, damit das funktioniert.Allgemeiner ist das Problem eher, dass Passwörter (allein) keine großartige Methode zur Authentifizierung sind, da sie oft von zweifelhafter Qualität sind. Ein sehr einfaches Argument für Schlüssel im Vergleich zu Passwörtern ist, dass ein Schlüssel im Allgemeinen mindestens 2048 Bit und häufig mehr umfasst (bei EC-Schlüsseln ist dies eher die effektive Stärke als die tatsächliche Größe). Diese Bits werden auch durch einen kryptologisch sicheren (oder geeigneten) Mechanismus erzeugt.
Ein Kennwort hat häufig weniger als 2048 Bit und wird häufig nicht von einer kryptografisch sicheren Quelle abgeleitet.
Sie können Ihre Schlüssel auch mit einem Passwort sichern, um Probleme beim Verlust zu vermeiden (obwohl jemand versuchen könnte, dieses Passwort brutal zu erzwingen).
Im Grunde genommen können die Unterschiede zwischen Schlüsseln und Passwörtern ziemlich transparent gemacht werden, und durch die Verwendung von Schlüsseln erhalten Sie ein besseres Passwort, als es ein Mensch handhaben könnte. Das soll nicht heißen, dass sie ein Allheilmittel sind, aber im Durchschnitt bieten sie mehr Sicherheit als Passwörter.
quelle