Unterschiede zwischen den Revisionen 1 und 2
Revision 1 vom 2009-04-21 13:56:13
Größe: 5085
Autor: moenoel
Kommentar:
Revision 2 vom 2009-04-21 14:17:58
Größe: 5313
Autor: moenoel
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 6: Zeile 6:
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. Die privaten Keys lagern ausschließlich auf den Rechnern, auf denen sie in Gebrauch sind und werden in keinem Fall übers Netz gespielt. Der Transport der Keys kann über USB-Sticks, Disketten usw. erfolgen. Das gleiche gilt für Backups der Keys.
Zeile 18: Zeile 18:
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. Die public-Keys der Rechner werden in regelmäßigen Abständen von zentraler Stelle übers Netz eingesammelt und auf Veränderungen überprueft. Sollten sich public-Keys verändert haben, werden die zuständigen Techniker automatisch informiert. Der betroffen Rechner wird aus {{{ssh_known_hosts}}} entfernt.
Zeile 28: Zeile 28:
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 ([[http://www.informatik.uni-bremen.de/t2/ssh/doc/ssh_known_hosts.txt|/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. Regelmäßiges Einsammeln der public-Keys und die Benachrichtigung im Falle von Veränderungen. Alle validen Keys werden zu einem {{{ssh_known_hosts}}}-File zusammengefasst und öffentlich gemacht (Webseite, um das File extern zu verbreiten; Filesystem ([[http://www.informatik.uni-bremen.de/t2/ssh/doc/ssh_known_hosts.txt|/home/config/openssh/ssh_known_hosts]]), für die interne Verbreitung). Nicht valide Keys, die aus einer Inkonsistenz her rühren oder nicht unseren Anforderungen (mindestens RSA-2048, Hostdatenbankeintrag erforderlich) genügen, werden unmittelbar aus {{{ssh_known_hosts}}} entfernt.
Zeile 31: Zeile 31:
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. Im Falle einer Inkonsistenz der public-Keys müssen die, für den betroffenen Rechner, zuständigen Techniker von Hand eingreifen ({{{ssh-check}}}), damit ihre (neuen, anderen) public-Keys wieder in {{{ssh_known_hosts}}} berücksichtigt werden können.
Zeile 33: Zeile 33:
Passende Hostkeys muessen von den Technikern selbst erzeugt werden. Passende Hostkeys müssen von den Technikern selbst erzeugt werden.
Zeile 35: Zeile 35:
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! ). Wer möchte, dass sich sein Hostkey, z.B. nach einer Neuinstallation, nicht ändert, muss sich selber darum kuemmern (Da wir jedoch dauerhaft und mit hoher aktuallitaet das File {{{ssh_known_hosts}}} für alle Benutzer und Rechner vorhalten, spricht aus meiner Sicht nicht viel dagegen, dass sich HostKeys auch mal ändern können! ).
Zeile 38: Zeile 38:
Fuer die Verwaltung der public Hostkeys kann das Script {{{/home/config/bin/ssh-check}}} verwendet werden: Für die Verwaltung der public Hostkeys kann das Script {{{/home/config/bin/ssh-check}}} verwendet werden:
Zeile 48: Zeile 48:
 ''Auflistung aller nicht trusted Rechner, die grundsaetzlich (auch gesperrte oder invalide Rechner) in {{{ssh_known_hosts}}} beruecksichtigt werden.''<<BR>><<BR>>  ''Auflistung aller nicht-trusted Rechner, die grunds&auml;tzlich (auch gesperrte oder invalide Rechner) in {{{ssh_known_hosts}}} ber&uuml;cksichtigt werden.''<<BR>><<BR>>
Zeile 57: Zeile 57:
 ''Gesperrten Rechner entsperren. Wichtig: Der Hostkey, der vor der Sperrung gueltig war, wird wieder aktiviert.''<<BR>><<BR>>  ''Gesperrten Rechner entsperren. (!) Wichtig: Der Hostkey, der vor der Sperrung g&uuml;ltig war, wird wieder aktiviert.''<<BR>><<BR>>
Zeile 60: Zeile 60:
 ''Rechner Sperren. Der Rechner wird bei automatischen Scans nicht mehr beruecksichtigt und wird aus ssh_known_hosts entfernt. Wichtig: Der Hostkey bleibt erhalten.''<<BR>><<BR>>  ''Rechner Sperren. Der Rechner wird bei automatischen Scans nicht mehr ber&uuml;cksichtigt und wird aus {{{ssh_known_hosts}}} entfernt. (!) Wichtig: Der Hostkey bleibt erhalten.''<<BR>><<BR>>
Zeile 63: Zeile 63:
 ''Rechner in das System einfuegen. Rechner, die bereits Bestandteil des Systems waren werden komplett entfernt und dann neu eingefuegt.''<<BR>><<BR>>  ''Rechner in das System einf&uuml;gen. Rechner, die bereits Bestandteil des Systems waren werden komplett entfernt und dann neu eingef&uuml;gt.''<<BR>><<BR>>
Zeile 66: Zeile 66:
 ''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.''<<BR>><<BR>>  ''Rechner aus dem System entfernen. (!) Wichtig: Trusted-Rechner kann man nicht wirklich entfernen. Trusted-Rechner haben einen g&uuml;ltigen/ung&uuml;ltigen public Key oder sind gesperrt, werden aber immer ber&uuml;cksichtigt.''<<BR>><<BR>>
Zeile 72: Zeile 72:
 ''Kommentar beifuegen.''<<BR>>  ''Kommentar beif&uuml;gen.''<<BR>>
Zeile 77: Zeile 77:
'''Rechner''' {{{xyz}}} hatte waerend der '''Neuinstallation''' einen anderen Hostkey und ist deshalb automatisch gesperrt worden. Aktuell hat der Rechner wieder den alten Hostkey. '''Rechner''' {{{xyz}}} hatte w&auml;rend der '''Neuinstallation''' einen anderen Hostkey und ist deshalb automatisch gesperrt worden. Aktuell hat der Rechner wieder den alten Hostkey.
Zeile 84: Zeile 84:
''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.'' ''Mit {{{ssh-check –i xyz}}} wird die ssh-relevante Vergangenheit des Rechners gel&ouml;scht. Anschliessend wird der neue Hostkey gescannt und in {{{ssh_known_hosts}}} eingesetzt.''
Zeile 89: Zeile 89:
''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. ''Mit {{{ssh-check –u xyz}}} wird die ssh-relevante Vergangenheit des Rechners gel&ouml;scht. Mit {{{ssh-check –i abc}}} wird der Rechner in das System eingefuegt, der neue Hostkey gescannt und in {{{ssh_known_hosts}}} eingesetzt.

Umgang mit Hostkeys

Private Hostkeys

Handling

Die privaten Keys lagern ausschließlich auf den Rechnern, auf denen sie in Gebrauch sind und werden in keinem Fall übers Netz gespielt. Der Transport der Keys kann über USB-Sticks, Disketten usw. erfolgen. Das gleiche gilt für Backups der Keys.

Generierung

# Erstellt ein RSA-4096 Schluesselpaar. 
ssh-keygen -t rsa -b 4096 -N "" -f /etc/ssh/ssh_host_rsa_key

Konsistenz der Keys

Kompromittierter public Key

Die public-Keys der Rechner werden in regelmäßigen Abständen von zentraler Stelle übers Netz eingesammelt und auf Veränderungen überprueft. Sollten sich public-Keys verändert haben, werden die zuständigen 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

Regelmäßiges Einsammeln der public-Keys und die Benachrichtigung im Falle von Veränderungen. Alle validen Keys werden zu einem ssh_known_hosts-File zusammengefasst und öffentlich gemacht (Webseite, um das File extern zu verbreiten; Filesystem (/home/config/openssh/ssh_known_hosts), für die interne Verbreitung). Nicht valide Keys, die aus einer Inkonsistenz her rühren oder nicht unseren Anforderungen (mindestens RSA-2048, Hostdatenbankeintrag erforderlich) genügen, werden unmittelbar aus ssh_known_hosts entfernt.

Nicht automatisch

Im Falle einer Inkonsistenz der public-Keys müssen die, für den betroffenen Rechner, zuständigen Techniker von Hand eingreifen (ssh-check), damit ihre (neuen, anderen) public-Keys wieder in ssh_known_hosts berücksichtigt werden können.

Passende Hostkeys müssen von den Technikern selbst erzeugt werden.

Wer möchte, dass sich sein Hostkey, z.B. nach einer Neuinstallation, nicht ändert, muss sich selber darum kuemmern (Da wir jedoch dauerhaft und mit hoher aktuallitaet das File ssh_known_hosts für alle Benutzer und Rechner vorhalten, spricht aus meiner Sicht nicht viel dagegen, dass sich HostKeys auch mal ändern können! ).

Tool

Für die Verwaltung der public Hostkeys kann das Script /home/config/bin/ssh-check verwendet werden:

./ssh-chek

  • -h Help
    kurze Info.

    -l List suspended hosts
    Auflistung aller gesperrten Rechner.

    -n List non trusted hosts
    Auflistung aller nicht-trusted Rechner, die grundsätzlich (auch gesperrte oder invalide Rechner) in ssh_known_hosts berücksichtigt 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 gültig war, wird wieder aktiviert.

    -s [hostname] Lock host
    Rechner Sperren. Der Rechner wird bei automatischen Scans nicht mehr berücksichtigt und wird aus ssh_known_hosts entfernt. (!) Wichtig: Der Hostkey bleibt erhalten.

    -i [hostname] Install host
    Rechner in das System einfügen. Rechner, die bereits Bestandteil des Systems waren werden komplett entfernt und dann neu eingefügt.

    -u [hostname] Uninstall host
    Rechner aus dem System entfernen. (!) Wichtig: Trusted-Rechner kann man nicht wirklich entfernen. Trusted-Rechner haben einen gültigen/ungültigen public Key oder sind gesperrt, werden aber immer berücksichtigt.

    -p [portnumber] port != 22
    Verwendung eines vom Default abweichenden Ports.

    -c Comment required
    Kommentar beifügen.

Beispiele:

Rechner xyz hatte wärend 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 gelöscht. 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 gelöscht. Mit ssh-check –i abc wird der Rechner in das System eingefuegt, der neue Hostkey gescannt und in ssh_known_hosts eingesetzt.

SSH/Umgang mit Public Keys (zuletzt geändert am 2009-10-16 12:33:42 durch jbrandt)