Grundsätzlich steht die gesamte Frage in der Überschrift: Sendet ssh das Passwort über das Netzwerk? Vorausgesetzt natürlich, dass die Anmeldung über Benutzername und Passwort verwendet wird.
Ich frage, denn wenn ssh das Passwort nicht über das Netzwerk sendet, kann ein Mann in der Mitte das Passwort des Benutzers nicht erhalten, selbst wenn der Benutzer den mutmaßlichen Host zu seiner Datei "unknown_hosts" hinzufügt.
Jemand sagte, dass es muss, also schrieb ich ein Gegenbeispiel in einen Kommentar. Da die Frage, wie es sonst möglicherweise funktionieren könnte, jetzt immer wieder auftauchte, kopiere ich diesen Kommentar hier.
Der Server kann dem Client mitteilen, welcher Hash verwendet werden soll. [Das gleiche, mit dem die Passwörter in der Schattendatei des Servers gehasht werden.] Der Client kann dann den Hash berechnen, der in der Schattendatei des Servers enthalten sein soll, aber wir rufen den auf dem Server auf. So wissen sowohl der Server als auch der Client ψ. Der Client kann dann ein zufälliges Salz σ auswählen und .
an den Server senden (Hash (ψ.σ), σ) (wobei der Verkettungsoperator ist). Der Server hasht dann ψ'.σ und prüft, ob das erste Element des vom Client empfangenen Tupels mit diesem Hash übereinstimmt. In diesem Fall kennt der Client das Kennwort.
Antworten:
Wenn Sie die Kennwortauthentifizierung verwenden, sendet SSH das Kennwort über das Netzwerk. Die Verbindung ist verschlüsselt, sodass Lauscher das Kennwort nicht sehen können. Die Verbindung wird authentifiziert, vorausgesetzt, Sie klicken nicht blind durch die Meldung "Die Authentizität von ... kann nicht hergestellt werden", sodass Ihr Kennwort nur an den legitimen Server gesendet wird.
Die langweilige Antwort auf das „Warum“ lautet, dass das SSH-Protokoll dies erfordert.
Die weniger langweilige Antwort ist, dass die Passwortauthentifizierung so funktionieren muss. Es gibt Möglichkeiten, eine Authentifizierung durchzuführen, die auf diese Weise nicht funktioniert. Dies ist jedoch keine einfache Kennwortauthentifizierung mehr.
Die meisten Authentifizierungsprotokolle, die weiter fortgeschritten sind als die einfache Kennwortauthentifizierung, haben die nette Eigenschaft, dass der Client keine geheimen Daten an den Server sendet, die ein böswilliger Server verwenden könnte, um sich als Benutzer auf einem dritten Server auszugeben. Bei der Authentifizierung mit öffentlichem SSH- Schlüssel , der häufigsten SSH-Authentifizierungsmethode außer Kennwörtern, funktioniert dies, da der Client eine Signatur (die den privaten Schlüssel erfordert) von Daten sendet, die die Sitzungskennung enthalten. Wenn der böswillige Server versuchen würde, sich bei einem dritten Server zu authentifizieren, müsste er eine Signatur von Daten mit einer anderen Sitzungskennung generieren, was ohne den privaten Schlüssel, der auf dem Client verbleibt, nicht möglich wäre.
Beachten Sie, dass dies keine kennwortbasierte Authentifizierung ist, wenn Sie die Authentifizierung mit öffentlichem Schlüssel verwenden und ein Kennwort eingeben müssen, um den Schlüssel zu verwenden. Das Kennwort zur Verwendung des Schlüssels wird ausschließlich auf der Clientseite verwendet, um den Schlüssel aus der Schlüsseldatei zu lesen. Bei Verwendung der Authentifizierung mit öffentlichem Schlüssel weiß der Server nicht, ob der Schlüssel in einer verschlüsselten Datei gespeichert wurde.
Für die Kennwortauthentifizierung muss das Kennwort an den Server gesendet werden. Das Senden eines Hashs des Passworts anstelle des Passworts selbst hilft nicht, da das Passwort dann zum Hash wird: Ein Angreifer müsste nicht das tatsächliche Passwort finden, sondern nur den Hash. Ein Angreifer könnteAngriff durch Finden des tatsächlichen Passworts, so gibt es keine Verbesserung. Aber wenn der Angreifer in Ihrem vorgeschlagenen Schema den Hash, aber nicht das Passwort gefunden hat, würde dies ausreichen. Im Gegensatz dazu muss der Angreifer bei einer normalen kennwortbasierten Authentifizierung das Kennwort kennen, da er weiß, dass der Hash nicht gut genug ist. Wenn das Kennwort stark genug ist, kann der Angreifer das Kennwort nicht aus dem Hash finden. In der Praxis kennt der Angreifer möglicherweise den Hash, aber nicht das Kennwort, weil es dem Angreifer gelungen ist, die Datenbank mit Kennwort-Hashes vom Server zu extrahieren, möglicherweise aus einer ungeschützten Sicherung oder über eine Sicherheitsanfälligkeit auf dem Server. Solche Schwachstellen auf Websites machen die Nachrichten ziemlich oft.
Ihr vorgeschlagenes Protokoll ist weniger gut als das Standardprotokoll. Rollen Sie nicht Ihre eigene Krypto!
quelle
Ja. Das Kennwort wird über die verschlüsselte Verbindung gesendet, jedoch im Klartext an den Remote-Server.
Die übliche Methode zur Authentifizierung besteht darin, dass der Server einen Hash des Kennworts berechnet und mit einem auf dem Server gespeicherten Wert vergleicht. Es gibt verschiedene Möglichkeiten, Hashes zu speichern, und bei aktuellen Implementierungen weiß der Client nicht, was der Server verwendet. ( siehe zB die
crypt
Manpage ). (Selbst wenn dies der Fall wäre, würde das einfache Senden eines Hashs des Passworts den Hash ohnehin dem Passwort entsprechen.)Wenn der Server PAM verwendet, implementieren die PAM-Module möglicherweise die Authentifizierung mit nahezu jeder Methode, für die möglicherweise das Kennwort im Klartext erforderlich ist.
Bei der Authentifizierung mit öffentlichen Schlüsseln wird der Schlüssel jedoch nicht an den Remote-Host gesendet. (Einige Erklärungen und Links dazu in einer Frage zu security.SE )
Es gibt auch kennwortbasierte Authentifizierungsalgorithmen wie SRP , bei denen das Kennwort nicht im Klartext an das andere Ende gesendet werden muss. Obwohl SRP nur für OpenSSH als externer Patch implementiert zu sein scheint.
quelle
password
Authentifizierungstyp, der in den SSH-Standards definiert ist. Es wäre eine Variante deskeyboard interactive
Authentifizierungstyps.keyboard-interactive
dies für die Eingabe durch den Benutzer gedacht ist.keyboard-interactive
noch schlimmer ist, wenn kennwortähnliche Geheimnisse aufgrund von Timing-Angriffen übermittelt werden. Moderne Konfigurationen sollten nur die Authentifizierung mit öffentlichem Schlüssel verwenden und die Kennwortauthentifizierung deaktivieren. Es gibt keinen Grund für die Benutzer auch Konten haben mehr Passwörter.password
, meine ich, und vor allem mit dem Timing-Angriff?Ja, ssh sendet das Passwort über das Netzwerk, aber nachdem die End-to-End-Verschlüsselung ausgehandelt wurde. Siehe Abschnitt 8 von RFC 4252, der besagt, dass eine Kennwortauthentifizierungsnachricht enthält
plaintext password in ISO-10646 UTF-8 encoding [RFC3629]
quelle
Wenn Sie ein Passwort basiertes Authentifizierungsschema verwenden Sie dann, ja wird das Passwort über das Netzwerk bis zum Endpunkt geführt ...
Aber es ist ein verschlüsselter Kanal.
z.B
In diesem Szenario wurde das Kennwort verschlüsselt über das Netzwerk gesendet.
Aus diesem Grund ist es sehr wichtig, die
known_hosts
Einträge richtig zu behandeln und viel Aufmerksamkeit zu schenken, wenn Sie die@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
Nachricht sehen! Das ist Ihre Verteidigung gegen einen MITM-Angriff.quelle
SSH sendet die Benutzer-ID und das Kennwort im Klartext innerhalb eines verschlüsselten Kanals über das Netzwerk. Aus diesem Grund werden Sie beim Verbinden eines neuen Hosts aufgefordert, den Schlüssel zu akzeptieren. Im Falle eines Man-in-the-Middle-Angriffs mit einem bekannten Host verweigert SSH die Verbindung, bis Sie den alten Schlüssel entfernen.
Das Klartextkennwort ist an den Endpunkten, Ihrem Computer und dem Remotecomputer verfügbar. Es ist möglich, die Kennwortauthentifizierung zu deaktivieren. In diesem Fall wird das Kennwort weder angefordert noch an den Remote-Host gesendet.
Es ist sicherer, die schlüsselbasierte Authentifizierung mit einem kennwortgeschützten Schlüssel zu verwenden. Sie müssen Ihren Schlüssel zum Remote-System hinzufügen lassen. Der öffentliche Schlüssel ist eine Textdatei, die von vielen Mechanismen übertragen werden kann. Bei Verwendung der schlüsselbasierten Authentifizierung können Einschränkungen für die Verwendung des Schlüssels festgelegt werden.
quelle