Vertrauen Sie dem SSH-Server basierend auf dem Schlüssel, anstatt wenn Schlüssel + IP übereinstimmen

8

Ist es möglich, dass der SSH-Client sich nicht darum kümmert, hinter welcher IP sich ein SSH-Server befindet (und ob früher ein anderer Server hinter dieser IP stand), sondern bestimmten Serverschlüsseln vertraut? (Und vielleicht diese Schlüssel mit einem Spitznamen versehen?) Ich verwende dynamisches DNS und habe auf einigen Computern IPv6-Datenschutzerweiterungen aktiviert. Ich werde immer gefragt, ob eine Verbindung sicher ist. Eine andere Möglichkeit besteht darin, dass von DHCP zugewiesene Adressen verschiedenen SSH-Servern zugewiesen werden und alle Arten von "Schlüssel stimmt nicht mit IP-Fehlern überein".

Azendale
quelle
Ich hätte wahrscheinlich auch erwähnen sollen, dass ich eine Liste öffentlicher Schlüssel für jeden meiner SSH-Server auf einer Webseite habe, die über SSL bereitgestellt wird, sodass ich auf einfache Weise überprüfen kann, ob ich einem bestimmten Serverschlüsselsatz tatsächlich vertraue.
Azendale

Antworten:

7

Fügen Sie einen Spitznamen für Ihren Server hinzu ~/.ssh/configund deaktivieren Sie CheckHostIPdiesen Server.

Host nickname
HostName example.dyndns.org
CheckHostIP no

Bevor Sie zum ersten Mal eine Verbindung zum Server herstellen, können Sie den öffentlichen Schlüssel außerhalb des Bandes kopieren: /etc/ssh/ssh_host_rsa_key.pubVom Server greifen , den root@hostnameTeil am Ende der Zeile entfernen , example.dyndns.orgam Anfang hinzufügen und die Zeile an anhängen ~/.ssh/known_hosts. Optional können Sie ssh-keygen -Hden Hostnamen hashen (dies ist nur nützlich, wenn Sie sich Sorgen über die Privatsphäre dieses Eintrags machen, wenn jemand Ihre Festplatte oder Ihre Backups stiehlt, was für 99,99% der Benutzer nutzlos ist, da die Informationen in einem anderen in der Nähe vorhanden sind Lage sowieso).

Gilles 'SO - hör auf böse zu sein'
quelle
Bedeutet das Host nickname, dass ich es einfach schaffen kann ssh nickname? Wenn ja, ist das ziemlich ordentlich.
Azendale
@ Azendale: Genau das ist eine allgemeine Funktion, um einem Hostnamen und einer Reihe von Optionen (Benutzername, boolesche Optionen, Tunnel usw.) einen Spitznamen zu geben.
Gilles 'SO - hör auf böse zu sein'
2

In /etc/ssh/ssh_configdie Zeile

CheckHostIP no

Dies nimmt jedoch ein wenig von der Sicherheit in SSH weg , da sich jeder Computer hinter dem IP- oder DynDNS-Namen verstecken kann, mit dem Sie eine Verbindung herstellen.

htorque
quelle
1
Dies nimmt keinerlei Sicherheit. Der springende Punkt beim Speichern des Hostschlüssels besteht darin, den anderen Computer zu identifizieren. Der Name und die IP-Adresse sind für die Sicherheit nicht relevant, wenn Sie über den Hostschlüssel verfügen. Das Entfernen der falschen Nachrichten ist in der Tat ein Sicherheitsgewinn (falsche Nachrichten verbrauchen Ihre Aufmerksamkeit, was eine knappe Ressource ist).
Gilles 'SO - hör auf böse zu sein'
1
@ Gilles: Die Manpage ist anderer Meinung. Ja, Sie verlieren keine Sicherheit für Verbindungen, bei denen keine bekannte IP-zu-Host-Beziehung besteht. In anderen Fällen geben Sie den Schutz vor DNS-Spoofing-Angriffen auf (wie in der Manpage angegeben).
Htorque
Ich weiß nicht, auf welche Stelle in der Manpage Sie sich beziehen. Wenn es die Beschreibung von ist CheckHostIP, dann heißt das nicht, dass Sie keinen Schutz aufgeben. Mit CheckHostIP nomuss der Spoofer immer noch den privaten Schlüssel des Servers erhalten, und wenn sie das kann, ist es unwahrscheinlich, dass sie seine IP-Adresse sowieso nicht fälschen kann.
Gilles 'SO - hör auf böse zu sein'
Können Sie mir ein Beispiel geben, wie gefährlich DNS-Spoofing wäre, wenn ich weiß, dass ich dem Schlüssel vertraue? Ich verwende die Authentifizierung mit öffentlichem Schlüssel, um mich anzumelden. Dadurch kann ein böswilliger Server kein Kennwort erhalten. Was ist, wenn ich Kennwörter verwendet habe?
Azendale
Die Verwendung der Authentifizierung mit öffentlichem Schlüssel schützt Ihr Passwort nicht wirklich. Der Server könnte Sie MITM und Ihr Passwort erhalten, wenn Sie sudooder ähnliches.
Remram