Wie kann ich die Know_Hosts von SSH (halbwegs sicher) auf dem neuesten Stand halten?

Wie kann ich die Know_Hosts von SSH (halbwegs sicher) auf dem neuesten Stand halten?

Nur um das gleich vorweg zu nehmen, damit mir nicht gesagt wird, ich solle es nicht tun:

  1. Die betreffenden Maschinen befinden sich alle in einem lokalen Netzwerk mit wenig bis gar keinem Internetzugang (sie sind nicht einmal gut mit dem Unternehmensnetzwerk verbunden).
  2. Jeder, der einen Man-in-the-Middle-Angriff durchführen kann, hat bereits Root-Rechte auf dem Rechner.
  3. Die Maschinen werden im Rahmen der Qualitätssicherungsverfahren neu installiert, daher sind neue Hostschlüssel wichtig (wir müssen sehen, wie die anderen Maschinen reagieren). Ich versuche lediglich, die Benutzerfreundlichkeit meiner Maschine zu verbessern.

Ich führe viele Neuinstallationen auf Maschinen durch, bei denen sich deren Hostschlüssel ändern. Dazu muss ich ~/.ssh/known_hostsauf meine Maschine gehen, den alten Schlüssel löschen und den neuen hinzufügen. Das ist ein riesiger Aufwand, also habe ich angefangen, über Möglichkeiten nachzudenken, dies zu automatisieren.

Ich möchte nicht einfach blind jeden Hostschlüssel akzeptieren, daher kommt ein Patchen von OpenSSH, um Hostschlüssel zu ignorieren, nicht in Frage. Ich habe überlegt, einen Wrapper um den sshBefehl zu erstellen, der den zurückgegebenen Fehler erkennt sshund mir eine Aufforderung anzeigt, den alten Schlüssel zu löschen oder das Programm zu beenden. Ich habe auch überlegt, einen Daemon zu erstellen, der den neuesten Hostschlüssel von einer Maschine auf einer Whitelist abruft (es gibt ungefähr zwanzig Maschinen, die ständig neu installiert werden) und den alten Hostschlüssel in ersetzt known_hosts.

Wie würden Sie diesen Prozess automatisieren?

Antwort1

Abhängig von den Gründen für die Neuinstallation/den gleichen IPs würde ich versuchen, „StrictHostKeyChecking“ in ~/.ssh/config für bestimmte Hosts/IPs/Muster einzurichten.

Wenn dies nicht möglich ist, sollten Sie das Laden der Schlüssel auf den Hosts automatisieren, beispielsweise im Neuinstallationsprozess.

Antwort2

Wenn Sie ein Konfigurationsmanagementsystem wie Puppet verwenden, können Sie es verwenden, damit die /etc/ssh/ssh_known_hostsDatei mit den Hosts auf dem neuesten Stand bleibt, während sich die Client-Rechner beim zentralen Server anmelden. Anschließend können Sie die StrictHostKeyCheckingOption in der Konfigurationsdatei aktivieren.

Genau das machen wir mit unseren Amazon EC2-Instanzen, die sich bei unserem Puppet-Masterserver anmelden. Wir verwenden den Puppet-Server als Bastion-Jumpbox für unsere EC2-Instanzen und er ist die einzige Maschine, die sich per SSH mit ihnen verbinden darf. Anschließend halten wir die /etc/ssh/ssh_known_hostsDatei mit den Hostschlüsseln und der /etc/hostsDatei zum Aktualisieren der öffentlichen DNS-IP-Adresse von EC2 auf dem neuesten Stand.

Antwort3

Sie möchten ssh-keyscan, das mit OpenSSH verteilt wird. Von dermanpage:

 ssh-keyscan is a utility for gathering the public ssh host keys of a num‐
 ber of hosts.  It was designed to aid in building and verifying
 ssh_known_hosts files. 

Lassen Sie dies im Rahmen Ihrer Neuinstallation auf einem Computer mit einer aktuellen Schlüsselliste ausführen und verteilen Sie dann die aktualisierte known_hosts-Datei an die übrigen Computer.

Oder, wie andere bereits erwähnt haben, können Sie StrictHostKeyChecking deaktivieren. Dadurch werden Sie anfällig für Man-in-the-Middle-Angriffe, obwohl dies in Ihrer Umgebung möglicherweise kein Problem darstellt.

Antwort4

Vielleicht möchten Sie die Hostschlüssel vor der Neuinstallation speichern und anschließend wiederherstellen.

Alternativ können Sie ein Konfigurationsmanagement-Tool verwenden wieCFengineoderMarionette/etc/ssh/ssh_known_hostsum eine autoritative Adresse an alle Clients auf Ihrer Site zu verteilen . (OpenSSH prüft /etc/ssh/ssh_known_hosts, ob kein passender Eintrag in vorhanden ist ~/.ssh/known_hosts.)

verwandte Informationen