Private HostKeys
Handling
Die privaten Keys lagern ausschliesslich auf den Rechnern, auf denen sie in Gebrauch sind und werden in keinem Fall uebers Netz gespielt. Der Transport der Keys kann ueber USB-Sticks, Disketten usw erfolgen. Das gleiche gilt fuer Backups der Keys.
ssh-keygen -t rsa -b 4096 -N "" -f /etc/ssh/ssh_host_rsa_key -> Erstellt einen RSA-4096 Schluesselpaar.
Die public Keys der Rechner werden in regelmaessigen Abstaenden von
zentraler Stelle uebers Netz eingesammelt und auf Veraenderungen ueberprueft.
Sollten sich public Keys veraendert haben, werden die zustaendigen Techniker
automatisch informiert. Der betroffen Rechner wird aus ssh_known_hosts
entfernt.
Kompromittierter
private Key
Der Rechner meldet beim Versuch sich einzuloggen das Problem und weist alle Verbindungen zurueck.
Administration
Automatisch
Regelmaessiges Einsammeln der public Keys und die Benachrichtigung im Falle von
Veraenderungen. Alle validen Keys werden zu einem ssh_known_hosts File
zusammengefasst und oeffentlich gemacht (Webseite, um das File extern zu
verbreiten; Filesystem (/home/config/openssh/ssh_known_hosts), fuer die interne
Verbreitung). Nicht valide Keys, die aus einer Inkonsistenz her ruehren oder
nicht unseren Anforderungen (mindestens RSA-2048, Hostdatenbankeintrag
erforderlich) genuegen, werden unmittelbar aus ssh_known_hosts entfernt.
Nicht automatisch
Im Falle einer Inkonsistenz der public Keys muessen die, fuer den betroffenen
Rechner, zustaendigen Techniker von Hand eingreifen (ssh-check), damit ihre
(neuen, anderen) public Keys wieder in ssh_known_hosts beruecksichtigt werden
koennen.
Passende Hostkeys muessen von den Technikern selbst erzeugt werden.
Wer moechte, dass sich sein Hostkey, z.B. nach einer Neuinstallation, nicht
aendert, muss sich selber darum kuemmern (Da wir jedoch dauerhaft und mit hoher
aktuallitaet das File ssh_known_hosts fuer alle
Benutzer und Rechner vorhalten, spricht aus meiner Sicht nicht viel
dagegen, dass sich HostKeys auch mal aendern koennen! ).
Fuer die Verwaltung der public Hostkeys kann das Script „/home/config/bin/ssh-check“ verwendet werden:
./ssh-check -h Help
kurze Info.
-l List suspended hosts
Auflistung aller gesperrten Rechner.
-n List non trusted hosts
Auflistung aller nicht trusted Rechner, die
grundsaetzlich (auch gesperrte oder invalide Rechner) in „ssh_known_hosts“ beruecksichtigt
werden.
-a List hosts in ssh_known_hosts
Auflistung aller Rechner, die aktuell in
ssh_known_hosts vorhanden sind.
-x [hostname] Info about host
Alle ssh-relevanten Statusinformationen zu einem Rechner.
-e [hostname] Unlock suspended
host
Gesperrten Rechner entsperren. Wichtig: Der Hostkey, der vor der
Sperrung gueltig war, wird wieder aktiviert.
-s [hostname] Lock host
Rechner Sperren. Der Rechner wird bei automatischen Scans nicht mehr
beruecksichtigt und wird aus „ssh_known_hosts“ entfernt. Wichtig: Der Hostkey
bleibt erhalten.
-i [hostname] Install host
Rechner in das System einfuegen. Rechner, die bereits Bestandteil des
Systems waren werden komplett entfernt und dann neu eingefuegt.
-u [hostname] Uninstall host
Rechner aus dem System entfernen. Wichtig: Trusted Rechner kann man
nicht wirklich entfernen. Trusted Rechner haben einen gueltigen/ungueltigen
public Key oder sind gesperrt, werden aber immer beruecksichtigt.
-p [portnumber] port != 22
Verwendung eines vom Default abweichenden Ports.
-c Comment required
Kommentar beifuegen.
Beispiele:
Rechner xyz hatte waerend der Neuinstallation einen anderen Hostkey und ist deshalb automatisch gesperrt worden. Aktuell hat der Rechner wieder den alten Hostkey.
Mit „ssh-check –e xyz“
wird die Sperrung aufgehoben und der alte Hostkey wieder in „ssh_known_hosts“
eingesetzt.
Rechner xyz wurde gehackt. Nach der Neuinstallation soll der alte Hostkey durch einen anderen ersetzt werden.
Mit „ssh-check –i xyz“
wird die ssh-relevante Vergangenheit des Rechners geloescht. Anschliessend wird
der neue Hostkey gescannt und in „ssh_known_hosts“ eingesetzt.
Rechner xyz wird in abc umbenannt.
Mit „ssh-check –u xyz“
wird die ssh-relevante Vergangenheit des Rechners geloescht. Mit „ssh-check –i
abc“ wird der Rechner in das System eingefuegt, der neue Hostkey gescannt und
in „ssh_known_hosts“ eingesetzt.