Warum ist die SSH-Kennwortauthentifizierung ein Sicherheitsrisiko?


68

In den meisten Handbüchern für die OpenSSH-Konfiguration wird empfohlen, die Kennwortauthentifizierung zugunsten der schlüsselbasierten Authentifizierung zu deaktivieren. Meiner Meinung nach hat die Kennwortauthentifizierung jedoch einen erheblichen Vorteil: Sie kann von jedem Ort aus eine Verbindung ohne Schlüssel herstellen. Wenn dies immer mit einem starken Passwort verwendet wird, sollte dies kein Sicherheitsrisiko darstellen. Oder sollte es?


2
Passwörter sind eine Ein-Faktor-Authentifizierung, die abgehört, erraten und abgespielt werden kann. Schlüssel sind (möglicherweise) zwei Faktoren. Die Möglichkeit, sich mit nur einem Faktor von überall aus anzumelden, ist auf manchen Systemen nicht akzeptabel.
Alex Holst

Antworten:


25

Es gibt Vor- und Nachteile für die pw- oder die schlüsselbasierte Authentifizierung.

In einigen Fällen ist beispielsweise die schlüsselbasierte Authentifizierung weniger sicher als die Kennwortauthentifizierung. In anderen Fällen ist die pw-basierte Lösung weniger sicher. In einigen Fällen ist einer bequemer, in anderen weniger.

Alles läuft darauf hinaus: Wenn Sie eine schlüsselbasierte Authentifizierung durchführen, müssen Sie Ihren Schlüssel mit einer Passphrase sichern. Sofern Sie nicht ssh-agent ausgeführt haben (ssh-agent befreit Sie von jeder Eingabe Ihrer Passphrase), haben Sie an Komfort nichts gewonnen. Sicherheit ist umstritten: Der Angriffsvektor wurde jetzt vom Server auf SIE oder Ihr Konto oder Ihren persönlichen Computer verlagert (...) - diese können leichter zu brechen sein oder auch nicht.

Denken Sie über den Tellerrand hinaus, wenn Sie dies entscheiden. Ob Sie an Sicherheit gewinnen oder verlieren, hängt vom Rest Ihrer Umgebung und anderen Maßnahmen ab.

edit: Oh, habe gerade gesehen, dass du von einem Heimserver sprichst. Ich war in der gleichen Situation, "Passwort" oder "USB-Stick mit Schlüssel drauf" immer bei mir? Ich habe mich für den ersten entschieden, aber den SSH-Abhörport auf einen anderen Port als 22 geändert. Das hindert all diese lahmen Skript-Kiddies daran, ganze Netzwerkbereiche zu erzwingen.


In vielen Fällen ist es möglicherweise überhaupt nicht ratsam, den SSH-Port von 22 zu ändern. adayinthelifeof.nl/2012/03/12/…
Tymek

75

Die Verwendung von SSH-Schlüsseln bietet im Vergleich zur Kennwortanmeldung eine einzigartige Funktion: Sie können die zulässigen Befehle angeben. Dies kann durch Ändern der ~/.ssh/authorized_keysDatei auf dem Server erfolgen.

Zum Beispiel,

command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

würde nur den Befehl `/usr/local/bin/your_backup_script.sh" mit diesem bestimmten Schlüssel erlauben.

Sie können auch die zulässigen Hosts für den Schlüssel angeben:

from="yourclient,yourotherclient", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

Oder kombinieren Sie die beiden:

from="yourbackupserver", command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

Mit Schlüsseln können Sie auch einem bestimmten Benutzer (z. B. einem Berater) temporären Zugriff auf einen Server gewähren, ohne das Kennwort für dieses bestimmte Konto preiszugeben. Nachdem der Berater seine Arbeit beendet hat, kann der temporäre Schlüssel abgezogen werden.


Sehr sehr nützlicher Tipp.
Sachin Divekar

3
Darüber hinaus ist die Verwendung von Schlüsseln vergleichbar mit der Verwendung eines langen Passworts mit 2000 Zeichen (technisch gesehen sogar noch
sicherer

3
Zwei sehr nützliche Tipps zur SSH-Authentifizierung, die ich aber nicht beantworten kann ...
MikeMurko

Wenn Sie einen kennwortauthentifizierten Benutzer zur Ausführung eines bestimmten Befehls zwingen möchten, ändern Sie seine Anmeldeshell. Es ist auch eine sehr schlechte Idee, "temporären Zugriff zu gewähren, ohne das Kennwort preiszugeben". Es gibt Hunderte von Möglichkeiten, den Zugriff für später aufzubewahren.
21.

Der letzte Absatz allein beantwortet die Frage, ob IMO-Schlüssel einen granularen Widerruf ermöglichen, während Sie bei Kennwörtern jeden darüber informieren müssen, dass Sie sie ändern.
Riking

48

Sie können das Beste aus beiden Welten herausholen, indem Sie die Kennwortauthentifizierung nur innerhalb Ihres Netzwerks zulassen. Fügen Sie am Ende Folgendes hinzu sshd_config:

PasswordAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

7

Sie haben Ihre Frage teilweise beantwortet. Je mehr Orte ein Angreifer erreichen kann, desto mehr Möglichkeiten hat er, durch Bruteforcing in Ihren Server einzudringen (siehe DDoS).

Vergleichen Sie auch die Länge Ihres Passworts mit der Schlüsselgröße (normalerweise Tausende von Bits).


4
96-Bit-Entropie bedeutet ein Passwort mit 80 Zeichen, wenn es in Englisch geschrieben ist. 15 Zeichen, wenn es sich um zufälliges Kauderwelsch aus dem druckbaren Zeichensatz handelt. Bist du dir ziemlich sicher, dass deine SSH-Passwörter so lang / stark sind?
MadHatter

3
Wenn Sie mehrere Kennwörter mit 96-Bit-Entropie haben, die nicht für Dictionary-Angriffe anfällig sind, müssen Sie wahrscheinlich ohnehin eine Art Kennwortverwaltungssoftware verwenden, sodass Sie das Element der Verwendung von Kennwörtern verlieren, auf das überall zugegriffen werden kann .
Nick Downton

5
@SachinDivekar, das sind 96 Bit Entropie nur, wenn zufällige Kennwörter aus der Menge [a-zA-Z] verwendet werden, nicht, wenn es sich um englische Wörter handelt.
Jaap Eldering

16
@NickDownton - Sie können ein schönes langes Passwort haben, ohne auf Keypass-Software zurückzugreifen. So etwas mywifesnameisangelaandshehasanicebuttist für Wörterbuchangriffe unüberwindbar, sehr stark und sehr einfach zu merken, aber unmöglich zu erraten. Und es kommt mit dem Bonus, wenn Brownie-Punkte, wenn Sie jemals Ihr Passwort an Ihre Frau geben müssen.
Mark Henderson

7
Sorry, Mark, aber das ist falsch. Die von Ihnen angegebene Passphrase hat 37 Zeichen und daher ungefähr 44 Entropiebits, was schwächer als 7 zufällige druckbare Zeichen ist und überaus angreifbar ist. Lesen Sie den Wikipedia-Artikel über die Arbeit von Claude Shannon für Details, aber das Ergebnis ist, dass das geschriebene Englisch sehr gut vorhersehbar ist - z. B. ist nach "mywifesname" das Wort "is" fast garantiert. Bei sicheren Passwörtern mit Wörtern ergeben vier zufällige Wörter, die aus einem Wörterbuch zusammengesetzt sind, 10 ** 23 Möglichkeiten, was etwa 77 Entropiebits entspricht. Immer noch nicht großartig, aber nicht schlecht.
MadHatter

7

Wenn Sie sich mit einem Passwort anmelden, übermitteln Sie Ihr Passwort an den Server. Dies bedeutet, dass der Bediener des Servers die SSHD ändern kann, um Zugriff auf Ihr Kennwort zu erhalten. Bei der Authentifizierung mit öffentlichem Schlüssel kann Ihr privater Schlüssel nicht abgerufen werden, da nur Ihr öffentlicher Schlüssel an den Server gesendet wird.


2
Dies ist besonders relevant, wenn Sie aufgrund eines Tippfehlers eine Verbindung zum falschen Server herstellen. Zum Beispiel war .cg zu einem bestimmten Zeitpunkt ein Platzhalter, der auf eine einzelne Maschine mit aktiviertem ssh zeigte. Jedes Mal, wenn Sie .cg mit .ch verwechseln, stellen Sie am Ende eine Verbindung zu dieser Box her und
verlieren

@b0fh in der Tat. Soweit ich das beurteilen kann, ist dies die einzige echte Sicherheitsanfälligkeit, die durch die Verwendung von Passwörtern mit ssh verursacht wird. Wenn jemand bereits den Server besitzt, zu dem Sie eine Verbindung herstellen, oder die IP-Adressen, zu denen Sie eine Verbindung herstellen (MITM), fälschen kann, haben Sie bereits verloren.
Kochfelder

6

SSH-Schlüssel verhindern Man-in-the-Middle-Angriffe auf Ihr Passwort.

Wenn Sie versuchen, sich mit einem Schlüssel anzumelden, erstellt der Server eine auf Ihrem öffentlichen Schlüssel basierende Abfrage und sendet sie an Ihren Client. die es entschlüsseln und eine entsprechende Antwort zu senden konstruieren.

Ihr privater Schlüssel wird nie an den Server gesendet, und jeder, der mithört, kann nur diese eine Sitzung abfangen.

mit einem Passwort würden sie Ihre Anmeldeinformationen haben.

Meine Lösung besteht darin, einen tragbaren SSH-Schlüssel in geeigneten Formaten auf einer verschlüsselten Partition auf einem USB-Schlüssel zu haben. das ermöglicht mir: den
schlüssel einfach zurückzuziehen, falls er verloren geht.
Beschränken Sie, auf welche Server ich zugreifen darf,
und tragen Sie sie trotzdem mit sich herum

Die Installation der Mount-Software ist jedoch ein Problem (truecrypt).


1
Das ist falsch. Sobald Sie den öffentlichen Schlüssel des Servers kennen (was Sie tun, wenn Sie ihn zu Ihrem Cache hinzugefügt haben und bei der ersten Verbindung kein MITM erhalten haben), sind Sie immun gegen MITM-Angriffe. Die schlüssel- / kennwortbasierte Authentifizierung hat nichts damit zu tun. Das Passwort wird nie über das Netzwerk gesendet. Eine sichere Verbindung bei der Authentifizierung auf Computerebene (wie lautet Ihr / mein öffentlicher Schlüssel) wird immer vor der Authentifizierung auf Benutzerebene eingerichtet (wie lautet Ihr Passwort / beweisen Sie, dass dieser öffentliche Schlüssel Ihnen gehört). .
Thomas

3
Thomas, in Wirklichkeit ignorieren viele Leute die Warnung vor einer Änderung des Fingerabdrucks. Pubkey-Authentifizierung garantiert MITM-Schutz, auch wenn der private Schlüssel des Servers auf irgendeine Weise kompromittiert wird oder ein menschliches "Ja" abwesend eingegeben wird: Der Angreifer muss wählen, ob er den Datenverkehr nicht sehen kann oder einen öffentlichen Schlüssel sendet, der sich nicht anmeldet Sieg.
Score_Under

5
Und zum Beantworter: Sie müssen kein TrueCrypt verwenden, OpenSh Private Keys werden mit einer eigenen optionalen kennwortbasierten Verschlüsselung ausgeliefert.
Score_Under

5

Es ist ein Kompromiss, wie @MartinVejmelka sagt.

Der Grund für die Verwendung der schlüsselbasierten Authentifizierung ist, dass der Schlüssel so weit über dem aktuellen oder in naher Zukunft vorherrschenden Wert liegt, dass Sie entweder von Ihrem eigenen PC kommen oder den Schlüssel auf einem USB-Stick oder ähnlichem haben müssen.

Ein Passwort hat folgende Probleme:

  • Wenn es kurz ist, kann es brutal gezwungen werden
  • Wenn es lang ist, wird es leicht vergessen
  • Es könnte schultergesurft sein

Ein Schlüssel ist um Größenordnungen länger und wird zu keinem Zeitpunkt angezeigt, sodass diese drei Probleme vermieden werden.


Durch die Verwendung einer Schlüsseldatei tritt jedoch das Problem auf, dass der USB-Stick oder der von Ihnen verwendete Speicher verloren geht.
João Portela

1
An diesem Punkt kann der verlorene Schlüssel entfernt und ein neuer Schlüssel hinzugefügt werden. Bei Passwörtern (insbesondere bei geteilten Passwörtern) kann dies mir sehr weh tun und erfordert viel Stöhnen.
SplinterReality

Einer meiner (vor kurzem im Ruhestand) Passwörter: 08Forging2?seminal*^Rajas-(Posed/|. Es ist zufällig generiert, aber ich habe keine Probleme, mich daran zu erinnern. Und viel Glück beim Schulter-Surfen oder Brute-Forcen.
5.

1
@finnw Correct Horse Battery Staple :-) security.stackexchange.com/q/6095/485
Rory Alsop

2

Gute Punkte, die hier bereits erwähnt wurden.

Was ich für das größte Risiko halte, ist, dass auf vielen Computern Keylogger installiert sind, ohne dass der Benutzer dies merkt, da Sie sich mit einem sicheren Kennwort um die Grundlagen gekümmert haben. Es gibt sogar Leute, die ganze Websites mit nützlichen Hilfsprogrammen erstellen, die Trojaner enthalten, damit es den Besten von uns passieren kann. Ein Keylogger sendet beispielsweise die Anmeldedaten per E-Mail an einen Hacker, der dann problemlos auf den Server zugreifen kann.

Ich wurde kürzlich von Norton davor gewarnt, das Zombee Mod-Installationsprogramm (nicht das Glas, das Installationsprogramm) herunterzuladen, um dem Minecraft-Glas einen Flug hinzuzufügen. Ich habe mir die Details angesehen und Norton hat eine Reihe von Hilfsprogrammen auf dieser Site aufgelistet, die als Trojaner gekennzeichnet waren. Ich weiß nicht, ob das richtig ist oder nicht, aber es war ziemlich spezifisch für Dateinamen. Es ist auch bekannt, dass Trojaner in (einige) Warez gesteckt werden, bevor sie verteilt werden.


2

Ein möglicher Vorteil von SSH gegenüber Passwörtern besteht darin, dass Sie, wenn Sie keine SSH-Passphrase angeben, nie wieder ein Passwort eingeben müssen. Ihr Computer ist auf dem Server an sich vertrauenswürdig, da er über den Schlüssel verfügt. Das heißt, ich verwende normalerweise immer eine SSH-Passphrase, damit ich diesen Vorteil ausschließe.

Ich finde die beste Antwort, warum Benutzerhandbücher SSH häufig als Alternative zur Kennwortauthentifizierung empfehlen, im Ubuntu-Handbuch für SSHOpenSSHKeys. Ich zitiere,

Wenn Sie es nicht für wichtig halten, protokollieren Sie alle böswilligen Anmeldeversuche, die Sie für die nächste Woche erhalten. Mein Computer - ein ganz normaler Desktop-PC - hatte allein in der letzten Woche über 4.000 Versuche, mein Passwort zu erraten, und fast 2.500 Einbruchsversuche. Wie viele tausend zufällige Vermutungen wird es Ihrer Meinung nach dauern, bis ein Angreifer über Ihr Passwort stolpert?

Im Wesentlichen, wenn Sie ein solides, langes Passwort mit Interpunktion, Groß- und Kleinschreibung und Zahlen haben ... werden Sie wahrscheinlich mit der Passwortauthentifizierung einverstanden sein. Auch wenn Sie vorhaben, Ihre Protokolle zu überwachen und sowieso keine "supersicheren" Vorgänge im Netzwerk ausführen, z. B. für einen Heimserver. Dann funktioniert auf jeden Fall ein Passwort gut.


1

Die Passwd-Authentifizierungsmethode ist wirklich unsicher (imho). Mit diesem Mechanismus wird das Passwort an den sshd-Server übertragen (wie @ramon bereits gesagt hat). Dies bedeutet, dass einige Personen den SSHD-Server ändern können, um das Kennwort abzurufen. Mit einem Man-In-The-Middle-Angriff ist dies in einem lokalen Netzwerk sehr einfach durchzuführen.

Sie können den sshd-Server einfach patchen, indem Sie diesen Patch installieren ( https://github.com/jtesta/ssh-mitm ). Verwenden Sie arpspoofund iptables, um Ihren gepatchten Server zwischen den Client und den authentischen SSHD-Server zu stellen.

Bitte deaktivieren Sie die Passwortauthentifizierung: Öffnen Sie die Konfigurationsdatei /etc/ssh/ssh_configund fügen Sie die Zeile hinzu PasswordAuthentication no.


Überprüft der SSH-Client den Server nicht auf RSA-Fingerabdrücke? Nachdem Sie mindestens einmal auf diesen bestimmten Server gewechselt haben, wird dessen Fingerabdruck gespeichert, sodass SSH im Falle möglicher MITM-Angriffe eine Warnung auslöst, nicht wahr?
Septagram

1
Ja. Die Warnung wird angezeigt, da dies in 99% der Fälle durch eine Neuinstallation des Betriebssystems oder durch eine Änderung der Konfiguration verursacht wird. Die meisten Benutzer werden die Warnung ignorieren und fortfahren.
Pioz

@Septagram Viele Shell-Account-Anbieter haben nicht die Gewohnheit, den aktuellen Server-Key-Fingerprint für neue Abonnenten, für die Migration von Benutzerkonten auf neue Server usw. zu veröffentlichen.
Damian Yerrick,

-2

Sie können das mit der -o StrictHostKeyChecking=noOption umgehen . Dies ist sehr nützlich, wenn Sie ssh in einem Shell-Skript verwenden.

ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o PasswordAuthentication=no -o ConnectionAttempts=5 xxUser@xxxHost
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.