Unterschiede zwischen den Revisionen 1 und 12 (über 11 Versionen hinweg)
Revision 1 vom 2009-04-21 13:56:13
Größe: 5085
Autor: moenoel
Kommentar:
Revision 12 vom 2009-10-16 12:11:03
Größe: 1895
Autor: jbrandt
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
= Umgang mit Hostkeys = = Umgang mit Schlüsseln bei der Public-Key-Authentifizierung =
Zeile 3: Zeile 3:
== Private Hostkeys == == Private Schlüssel ==
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 Schlüssel 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 8: Zeile 8:
=== Generierung === /!\ Wegen der sonst nicht zu kontrollierenden Mißbrauchsgefahr sind nutzergebundene private Keys grundsätzlich mit einer Passphrase zu verschlüsseln!

=== Kompromittierter private Key ===
Ist ein privater Schlüssel kompromittiert, d.h. möglicherweise in unbefugte Hände gelangt,
muß der zugehörige öffentliche Schlüssel umgehend aus der {{{authorized_keys}}}-Datei entfernt werden. Für den schnellen Zugriff von außen bietet sich hier das
[[https://www.fb3.uni-bremen.de/ssh-pubkey/|PubKey-Web-Interface]] an.

=== Vergessenene Passphrase ===
Eine verlorenene Passphrase läßt sich nicht zurücksetzen. Es muß ein neues Schlüsselpaar erzeugt und konfiguriert werden.

=== Ändern der Passphrase ===
Ist die Passphrase bekannt, läßt sie sich auch ändern:
Zeile 10: Zeile 21:
# Erstellt ein RSA-4096 Schluesselpaar.
ssh-keygen -t rsa -b 4096 -N "" -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -p -f ~/.ssh/id_rsa
Zeile 13: Zeile 23:
ändert z.B. die Passphrase des Standard-Schlüssels.

=== Verwaltung von Passphrasen ===
Wer sich das wiederholte Eingeben der Passphrase ersparen möchte, kann sich die entschlüsselten ''Private Keys'' in den Hauptspeicher laden:
{{{
ssh-agent
}}}
lädt den Standard-Schlüssel {{{~/.ssh/id_rsa}}},
{{{
ssh-add <Schlüsseldatei>
}}}
fügt einen weiteren Schlüssel hinzu,
{{{
ssh-add -l
}}}ß
listet alle geladenen Schlüssel auf.
Zeile 15: Zeile 41:
== Konsistenz der Keys == == Öffentliche Schlüssel ==
Zeile 17: Zeile 43:
=== Kompromittierter public Key ===
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 ([[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.

=== 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! ).

=== Tool ===
Fuer die Verwaltung der public Hostkeys kann das Script {{{/home/config/bin/ssh-check}}} verwendet werden:

{{{./ssh-chek}}}
 {{{-h}}} Help<<BR>>
 ''kurze Info.''<<BR>><<BR>>

 {{{-l}}} List suspended hosts<<BR>>
 ''Auflistung aller gesperrten Rechner.''<<BR>><<BR>>

 {{{-n}}} List non trusted hosts<<BR>>
 ''Auflistung aller nicht trusted Rechner, die grundsaetzlich (auch gesperrte oder invalide Rechner) in {{{ssh_known_hosts}}} beruecksichtigt werden.''<<BR>><<BR>>

 {{{-a}}} List hosts in ssh_known_hosts<<BR>>
 ''Auflistung aller Rechner, die aktuell in {{{ssh_known_hosts}}} vorhanden sind.''<<BR>><<BR>>

 {{{-x [hostname]}}} Info about host<<BR>>
 ''Alle ssh-relevanten Statusinformationen zu einem Rechner.''<<BR>><<BR>>

 {{{-e [hostname]}}} Unlock suspended host<<BR>>
 ''Gesperrten Rechner entsperren. Wichtig: Der Hostkey, der vor der Sperrung gueltig war, wird wieder aktiviert.''<<BR>><<BR>>

 {{{-s [hostname]}}} Lock host<<BR>>
 ''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>>

 {{{-i [hostname]}}} Install host<<BR>>
 ''Rechner in das System einfuegen. Rechner, die bereits Bestandteil des Systems waren werden komplett entfernt und dann neu eingefuegt.''<<BR>><<BR>>

 {{{-u [hostname]}}} Uninstall host<<BR>>
 ''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>>

 {{{-p [portnumber]}}} port != 22<<BR>>
 ''Verwendung eines vom Default abweichenden Ports.''<<BR>><<BR>>

 {{{-c}}} Comment required<<BR>>
 ''Kommentar beifuegen.''<<BR>>


'''''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.''

<<BR>>
'''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.''

<<BR>>
'''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.
=== Verwaltung öffentlicher Schlüssel ===
Mit dem [[https://www.fb3.uni-bremen.de/ssh-pubkey/|PubKey-Web-Interface]] lassen sich die ''Public Keys'' sehr einfach installieren und verwalten.

Umgang mit Schlüsseln bei der Public-Key-Authentifizierung

Private Schlüssel

Handling

Die privaten Schlüssel 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.

/!\ Wegen der sonst nicht zu kontrollierenden Mißbrauchsgefahr sind nutzergebundene private Keys grundsätzlich mit einer Passphrase zu verschlüsseln!

Kompromittierter private Key

Ist ein privater Schlüssel kompromittiert, d.h. möglicherweise in unbefugte Hände gelangt, muß der zugehörige öffentliche Schlüssel umgehend aus der authorized_keys-Datei entfernt werden. Für den schnellen Zugriff von außen bietet sich hier das PubKey-Web-Interface an.

Vergessenene Passphrase

Eine verlorenene Passphrase läßt sich nicht zurücksetzen. Es muß ein neues Schlüsselpaar erzeugt und konfiguriert werden.

Ändern der Passphrase

Ist die Passphrase bekannt, läßt sie sich auch ändern:

ssh-keygen -p -f ~/.ssh/id_rsa

ändert z.B. die Passphrase des Standard-Schlüssels.

Verwaltung von Passphrasen

Wer sich das wiederholte Eingeben der Passphrase ersparen möchte, kann sich die entschlüsselten Private Keys in den Hauptspeicher laden:

ssh-agent

lädt den Standard-Schlüssel ~/.ssh/id_rsa,

ssh-add <Schlüsseldatei>

fügt einen weiteren Schlüssel hinzu,

ssh-add -l

ßlistet alle geladenen Schlüssel auf.

Öffentliche Schlüssel

Verwaltung öffentlicher Schlüssel

Mit dem PubKey-Web-Interface lassen sich die Public Keys sehr einfach installieren und verwalten.

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