it-swarm.com.de

Wird Ihr SSH-Passwort angezeigt, wenn Sie versuchen, eine Verbindung zum falschen Server herzustellen?

Wenn Sie versehentlich versuchen, mit Kennwortanmeldeinformationen eine Verbindung zum falschen Server herzustellen, kann der Administrator das von Ihnen verwendete Kennwort lesen und protokollieren?

191
vfclists

Einfach ausgedrückt: ja

Mehr Details...

Wenn Sie eine Verbindung zu meinem Computer herstellen, wissen Sie nicht, ob ich einen normalen ssh Server verwende oder einen, der geändert wurde, um das übergebene Kennwort zu schreiben.

Außerdem müsste ich sshd nicht unbedingt ändern, könnte aber ein PAM-Modul schreiben (z. B. mit pam_script), die Ihr Passwort übergeben wird.

Also ja. NIE Sende dein Passwort an einen nicht vertrauenswürdigen Server. Der Besitzer des Computers hätte es leicht so konfigurieren können, dass alle versuchten Kennwörter protokolliert werden.

(Tatsächlich ist dies in der Infosec-Welt nicht ungewöhnlich. Richten Sie einen Honeypot-Server ein, um die versuchten Kennwörter zu protokollieren.)

214
Stephen Harris

Ja.

Das Kennwort wird gesendet, nachdem die verschlüsselte Verbindung hergestellt wurde, aber der Remote-Server erhält das Kennwort im Klartext.

Wenn Sie sich dafür interessieren, ist die beste und einfachste Lösung die Verwendung von SSH-Schlüsseln.

Wenn Sie Computer haben, die keine Schlüssel akzeptieren können, besteht eine Lösung darin, ein Tool zu erstellen, das Ihre Kennwörter sicher speichert, und dann sshpass zu verwenden, um abhängig vom Server, zu dem Sie eine Verbindung herstellen, immer das richtige Kennwort zu senden.


Der Grund, warum das Passwort im Klartext gesendet wird, besteht darin, dass alle Entscheidungen über die Verarbeitung und Speicherung dem Remote-Ende überlassen bleiben und der Client völlig dumm sein kann. In den letzten zehn Jahren wurden in Linux- und BSD-Systemen verschiedene Kennwort-Hashing-Formate (Speicherformate) verwendet ( crypt (3) ), von denen keines vom Client unterstützt werden muss.

Obwohl dies teilweise auch auf die Geschichte zurückzuführen ist (d. H. Es war schon immer so). Es gibt bessere Challenge-Response-Authentifizierungsprotokolle, die auch mit Kennwörtern verwendet werden können. Zum Beispiel SRP , das den Parteien während der Authentifizierung ein gemeinsames Geheimnis verschafft. Es wurde für einige SSH-Server implementiert, aber der Patch für OpenSSH ist für eine (sehr) alte Version.

52
ilkkachu

Um auf Stephen Harris 'Antwort aufzubauen, habe ich hier eine Echtzeitansicht erstellt, die zeigt, was ein modifiziertes PAM-Authentifizierungsskript erfassen kann, wenn eine Verbindung zu einer Box über ssh (eine Art Honeypot) hergestellt wird. Ich verwende eine modifizierte Version der PAM-Bibliothek lib-storepw.

https://livesshattack.net

https://livesshattack.net/about

11
Willie S.

SSH ist ein Protokoll, das gegenseitiges Vertrauen erfordert. Aus diesem Grund verwaltet der OpenSSH-Client eine Datei "unknown_hosts", um seine Vertrauenswürdigkeit bei der ersten Verwendung zu implementieren.

Wenn Sie versuchen, sich bei einem SSH-Server anzumelden, nehmen Sie an einem Authentifizierungsverfahren teil, unabhängig davon, wer die Software bereitgestellt hat oder welche Daten für die Protokollierung konfiguriert sind. Wenn Sie die Kennwortauthentifizierung verwenden, übertragen Sie Ihr Kennwort an diesen Server. Dies ist ein Grund, warum eine asymmetrische Kryptografie (öffentlicher Schlüssel, Zertifikate) empfohlen wird. Die Kryptografie mit öffentlichem Schlüssel verringert das Risiko der Offenlegung Ihrer Anmeldeinformationen erheblich. (Obwohl dies Sie möglicherweise nicht vor einem MitM-Angriff schützt, wenn Sie die Weiterleitung von ssh-agent oder ein ähnliches Schema verwenden.)

2
jvoorhis