Spiegelt die Meldung "Authentizität des Hosts kann nicht hergestellt werden" in SSH ein Sicherheitsrisiko wider?

5367
Charles Duffy

Immer wenn ich von meinem Computer aus eine Verbindung zu einem neuen SSH-Server herstelle, erhalte ich folgende Nachricht:

The authenticity of host '[censored]:censored ([0.0.0.0]:censored)' can't be established. RSA key fingerprint is SHA256:censored. Are you sure you want to continue connecting (yes/no)? 

Warum fragt mich SSH das?

Habe ich ein Risiko, eine Verbindung zu einem zufälligen SSH-Server herzustellen?

Oder soll dies nur sicherstellen, dass der Server, zu dem Sie eine Verbindung herstellen, nicht gehackt wurde?

19
Verwenden Sie ein Kennwort oder einen Schlüssel, um sich anzumelden? kasperd vor 6 Jahren 0
Es gibt mehrere * bessere * Möglichkeiten, Host-Schlüssel zu verteilen als Trust-on-first-use. Dies ist ein relativ unsicherer Workflow. Hostschlüssel können über LDAP verteilt werden. über signierte DNS-Einträge; kann mit SSH-Zertifizierungsstellen unterzeichnet werden; usw. Was bedeutet, dass das, was Sie hier sehen, darauf hinweist, dass Ihre Website auf "der faulen Weise" konfiguriert ist (was fast alle sind!), was * weniger * sicherer ist, als andere Schritte zu unternehmen, um die Dinge richtig zu machen. Charles Duffy vor 6 Jahren 1

2 Antworten auf die Frage

29
Attie

Sie werden gefragt, weil sie noch nie mit diesem Host verbunden ist.

Wenn Sie sich in einer sicheren Umgebung befinden, kennen Sie den Fingerabdruck des Remote-Hosts und vergleichen ihn bei der ersten Verbindung. Wenn der Fingerabdruck mit dem übereinstimmt, was Sie wissen, sollte es großartig sein. Wenn Sie sich in einer weniger sicheren Umgebung befinden, können Sie dies bei der ersten Verbindung akzeptieren.

Nachdem Sie " Ja, ich vertraue diesem Host-Schlüssel und möchte, dass er mit diesem Hostnamen / dieser IP-Adresse verknüpft wird " sagen, wird sich der SSH-Client dies für Sie merken ... Wenn aus irgendeinem Grund (Neuinstallation / neue Host-Schlüssel / Neu) Maschine / Mann in der Mitte) Der Schlüssel stimmt bei einer nachfolgenden Verbindung nicht überein, es wird eine Warnung wie unten angezeigt:

$ ssh baloo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:Su0uy/4BcRcpmyLfxO9ndlcda52F8uct6yWNp7Sa92M. Please contact your system administrator. Add correct host key in /home/attie/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/attie/.ssh/known_hosts:65 remove with: ssh-keygen -f "/home/attie/.ssh/known_hosts" -R baloo ECDSA host key for baloo has changed and you have requested strict checking. Host key verification failed. 

Wenn Sie in dieser Situation wissen, dass der entfernte Host tatsächlich geändert wurde, können Sie fortfahren ... und möglicherweise überprüfen, ob der Fingerabdruck korrekt ist.

Wenn Sie sich nicht sicher sind oder wissen, dass sich der entfernte Host nicht geändert haben sollte, weist er Sie auf einen möglichen Angriff hin.

Dies ist das TOFU-Prinzip: Vertrauen bei der ersten Verwendung Patrick Mevzek vor 6 Jahren 4
Übereinstimmend ist TOFU keine gute Idee - vor allem, wenn Sie sich sicher sein müssen ... Ihre Meinung und Ihr Ansatz werden (sollten) von Ihrem Thread-Modell abhängen. Attie vor 6 Jahren 2
Die Wirksamkeit dieses Verfahrens finden Sie jedoch unter https://www.cs.auckland.ac.nz/~pgut001/pubs/defending.pdf, Seite 45-48. Joker_vD vor 6 Jahren 1
Interessante Folien, vielen Dank für das Teilen von @Joker_vD Attie vor 6 Jahren 0
@Attie Sie können auch Zertifikate anstelle von Schlüsseln für SSH verwenden und kehren dann zum HTTP-Welt-PKI-Modell der Vertrauensstellung zurück. Patrick Mevzek vor 6 Jahren 0
@PatrickMevzek Das Problem ist, dass unser gesamtes Modell des Computervertrauens grundsätzlich von der Granularität eines Booleschen beeinflusst wird, während in der realen Welt ein praktisches Modell des Vertrauens (wie etwa das, was wir intuitiv in zwischenmenschlichen Beziehungen verwenden) eher wie ein Bedingte Wahrscheinlichkeit: Angesichts einer Forderung eines Unternehmens haben wir ein gewisses Vertrauen, dass das Unternehmen dem folgen wird, und wir begrenzen unser Risikopotenzial im Verhältnis dazu. mtraceur vor 6 Jahren 1
@mtraceur beschreiben Sie das PGP-Modell des Web of Trust ... https://en.wikipedia.org/wiki/Web_of_trust Patrick Mevzek vor 6 Jahren 0
@PatrickMevzek Ich denke, das ist näher an meiner Idee, aber ist das nicht immer noch grundsätzlich boolesch in seiner Verwendung? Letztendlich sagen Sie entweder "Ja, ich vertraue dem Schlüssel" oder "Nein, ich kann es nicht" - es gibt keine Tools, die sich sinnvollerweise anders verhalten, basierend auf einem granularen Vertrauensbegriff, der mir bewusst ist. Ich denke dabei an ein Web-of-Trust, das auf Maschinen basiert, die die Vertrauensbewertungen anderer Maschinen mithilfe von Algorithmen für maschinelles Lernen anpassen und sich gegenseitig ihre Vertrauensbewertungen mitteilen (die wiederum nur von jeder Maschine proportional gewogen würden) einige Vertrauensbewertung). mtraceur vor 6 Jahren 0
@PatrickMevzek Ich denke auch, dass ein solches System weitaus vollständiger sein müsste, als * nur * sich auf ein Protokoll wie SSH oder TLS oder PGP zu konzentrieren. Das Betriebssystem müsste etwaige Abweichungen von den erwarteten Protokollen, die sie erkennen, bis hin zu den niedrigsten Netzwerkebenen und anderen Datenpunkten, die betroffen sind, dynamisch berücksichtigen und dies mit ausreichender Granularität für die Benutzerprogramme der Benutzer offenlegen. Wir beginnen jetzt mit dem Side-Track, aber ich wollte sicherstellen, dass klar ist, was ich mit "booleschen" Vertrauensmodellen meint, die nicht ausreichen. Wenn Sie dies weiter besprechen möchten, nehmen Sie es mit uns ins Gespräch. mtraceur vor 6 Jahren 0
@mtraceur Nein, es ist nicht boolean. Es gibt ein Vertrauensmaßstab, aber wahrscheinlich nicht genug für Ihren Fall. Wir sind jetzt hier ohne Thema. Patrick Mevzek vor 6 Jahren 0
9
KNejad

Wenn Sie diese Nachricht erhalten, sagt SSH einfach: "Ich habe diesen Computer noch nie zuvor gesehen, daher kann ich nicht sicher sein, von wem er sagt, dass er es ist. Vertrauen Sie dem?" An welchem ​​Punkt können Sie sagen, dass Sie ihm vertrauen, und in Zukunft wird sich Ihr Computer daran erinnern und Sie nicht erneut fragen.

Um dies zu gewährleisten, sollten Sie den mit dem Schlüssel auf dem Server bereitgestellten Schlüssel manuell vergleichen (da Sie einem GPG-Schlüssel vertrauen würden, indem Sie prüfen, ob die Person, von der Sie glauben, dass er zu ihm gehört, den öffentlichen Schlüssel tatsächlich generieren kann). Obwohl sich die Menschen in Wirklichkeit nicht damit beschäftigen (zumindest aus meinem Wissen).

Der eigentliche Vorteil ergibt sich aus jeder nachfolgenden Verbindung zum Server. Wenn sich SSH darüber beschwert, dass der Server, dem Sie bereits vertraut haben, nicht derselbe Server ist, besteht die Möglichkeit, dass Sie Opfer eines MiTM-Angriffs werden.

Alles in allem, wenn Sie sich in einem Netzwerk befinden, in dem Sie sicher sind, dass kein Man in the Middle-Angriff stattfindet. Wenn Sie sich zum ersten Mal mit dem Computer verbinden, sollten Sie sicher sein, den Schlüssel zu akzeptieren. (Wenn Sie jedoch an einer streng geheimen Regierungsmission arbeiten, bitten Sie Ihren Systemadministrator, vor dem Verbindungsaufbau den Fingerabdruck zu überprüfen.)