Benutzer-Werkzeuge

Webseiten-Werkzeuge


howtos:sshexpert

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howtos:sshexpert [2017/12/02 15:46] – [SSH Key eines Users signieren] morquaihowtos:sshexpert [2022/02/18 08:09] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 9: Zeile 9:
 Die CA besteht eigentlich nur aus einem Key Pair, wie jeder andere SSH-Key. Allerdings wird dieser Key nicht zur Authentifizierung eines Benutzers sondern zur Erstellung einer digitalen Signatur genutzt. Idealerweise liegt der private Key der CA auf einem Rechner ohne Internetverbundung, um zu vermeiden das Hacker selbst ihre Keys signieren.\\ Die CA besteht eigentlich nur aus einem Key Pair, wie jeder andere SSH-Key. Allerdings wird dieser Key nicht zur Authentifizierung eines Benutzers sondern zur Erstellung einer digitalen Signatur genutzt. Idealerweise liegt der private Key der CA auf einem Rechner ohne Internetverbundung, um zu vermeiden das Hacker selbst ihre Keys signieren.\\
 Der Key wird wie immer mit ssh-keygen angelegt Der Key wird wie immer mit ssh-keygen angelegt
-  ssh-keygen -b 2048 -t rsa -C "Meine Certification Authority" -N "Passphrase" -f id_rsa_ca+  ssh-keygen -b 2048 -t rsa -C "Meine Certification Authority" -N "Passphrase" -f id_rsa_userca
 Dieser Key wird nun genutzt, um die Public Keys der User zu signieren. Dieser Key wird nun genutzt, um die Public Keys der User zu signieren.
 ===== SSH Key eines Users signieren ===== ===== SSH Key eines Users signieren =====
-  ssh-keygen -s id_rsa_ca -I "vorname.machname@example.com" -n "unixuser1,unixuser2" -V +2w -z 1 id_rsa.pub+  ssh-keygen -s id_rsa_userca -I "vorname.machname@example.com" -n "unixuser1,unixuser2" -V +2w -z 1 id_rsa.pub
 Damit ist der Key signiert, und man kann die Signatur mit ssh-keygen anschauen: Damit ist der Key signiert, und man kann die Signatur mit ssh-keygen anschauen:
   ssh-keygen.exe -L -f id_rsa-cert.pub     ssh-keygen.exe -L -f id_rsa-cert.pub  
Zeile 36: Zeile 36:
 Der Unterschied zwischen einem klassischen SSH Key und einem mit Signatur liegt darin wem man vertraut, dem Key oder demjenigen der ihn signiert hat. Bisher musste man jeden Key dem man vertraut bei jedem User auf jedem Server hinterlegen. Durch das Vertrauen in die Signatur reicht es aus, dem SSH Server die Keys, deren Signatur man vertraut, einmal bekannt zu machen.\\ Der Unterschied zwischen einem klassischen SSH Key und einem mit Signatur liegt darin wem man vertraut, dem Key oder demjenigen der ihn signiert hat. Bisher musste man jeden Key dem man vertraut bei jedem User auf jedem Server hinterlegen. Durch das Vertrauen in die Signatur reicht es aus, dem SSH Server die Keys, deren Signatur man vertraut, einmal bekannt zu machen.\\
 Um dies zu tun muss man den oben generierten Public Key der CA nach /etc/ssh kopieren und folgende Zeile in die /etc/ssh/sshd_config eingetragen werden: Um dies zu tun muss man den oben generierten Public Key der CA nach /etc/ssh kopieren und folgende Zeile in die /etc/ssh/sshd_config eingetragen werden:
-  TrustedUserCAKeys /etc/ssh/id_rsa_ca.pub+  TrustedUserCAKeys /etc/ssh/id_rsa_userca.pub
 Die Datei die hinter TrustedUserCAKeys angegeben wird kann, wie eine authorized_keys Datei, auch mehrere Keys beinhalten, es kann also bei Bedarf auch mehrere Stellen geben, deren Signatur man vertraut.\\ Die Datei die hinter TrustedUserCAKeys angegeben wird kann, wie eine authorized_keys Datei, auch mehrere Keys beinhalten, es kann also bei Bedarf auch mehrere Stellen geben, deren Signatur man vertraut.\\
 Wenn man auf diese Weise vorgeht, muss der signierte SSH Public Key innerhalb der Signatur eine Information enthalten, für welchen Unix User die Signatur verwendet werden darf. Im SSH Jargon nennt man dies die "Principals". Im Beispiel oben steht diese Angabe hinter dem "-n" Flag, das Zertifikat ist also für die Benutzer "unixuser1" und "unixuser2" gültig. Darüberhinaus kann, wie gewohnt, ein signierter Key auch in der authorized Keys Datei benutzt werden. Im letzteren Fall wird dann wieder dem Key und nicht der Signatur vertraut.\\ Wenn man auf diese Weise vorgeht, muss der signierte SSH Public Key innerhalb der Signatur eine Information enthalten, für welchen Unix User die Signatur verwendet werden darf. Im SSH Jargon nennt man dies die "Principals". Im Beispiel oben steht diese Angabe hinter dem "-n" Flag, das Zertifikat ist also für die Benutzer "unixuser1" und "unixuser2" gültig. Darüberhinaus kann, wie gewohnt, ein signierter Key auch in der authorized Keys Datei benutzt werden. Im letzteren Fall wird dann wieder dem Key und nicht der Signatur vertraut.\\
Zeile 60: Zeile 60:
 ==== Signieren eines Hostkeys ==== ==== Signieren eines Hostkeys ====
 Man kann natürlich denselben CA Keys benutzen wie für die Benutzerauthentifizierung, sinnvoller ist es aber einen eigenen CA-Key für Hosts anzulegen\\ Man kann natürlich denselben CA Keys benutzen wie für die Benutzerauthentifizierung, sinnvoller ist es aber einen eigenen CA-Key für Hosts anzulegen\\
-  ssh-keygen -b 2048 -t rsa -C "Meine Certification Authority" -N "Passphrase" -f id_rsa_ca+  ssh-keygen -b 2048 -t rsa -C "Meine Certification Authority" -N "Passphrase" -f id_rsa_hostca 
 +Das signieren der Host Keys funktioniert (fast) genauso wie bei User Keys: 
 +  ssh-keygen -s id_rsa_hostca -I "serveradmin@example.com" -h -n server1.example.com -V +52w /etc/ssh/ssh_host_rsa_key.pub 
 +Jeder in der /etc/ssh/sshd_config angegebene Key muss einzeln signiert werden, i.d.R. sind dies 
 +  /etc/ssh_host_dsa_key.pub 
 +  /etc/ssh_host_ecdsa_key.pub 
 +  /etc/ssh_host_ed25519_key.pub 
 +  /etc/ssh_host_rsa_key.pub 
 +Der Benutzer muss nun in seiner ~/.ssh/known_hosts folgende Eintrag machen, um allen Hostkeys, die mit dem Key id_rsa_hostca signiert sind, zu vertrauen. Dazu benötigt er den Public Key der signierenden SSH Keys. Folgender Befehl fügt nun die entsprechende Zeile zur known_hosts Datei hinzu (am Ende) 
 +  echo '@cert-authority *.example.com ' $(cat id_rsa_hostca) >>~/.ssh/known_hosts 
 +===== Das war es auch schon ===== 
 +Mit einer solchen Konfiguration kann nun der Server sicherstellen, das die Benutzer vertrauenswürdig sind und andererseits der Benutzer sicher sein wirklich mit dem erwarteten Server verbunden zu sein.\\ 
 +Da Vertrauen zeitlich begrenzt sein kann besteht die Möglichkeit jeder Signatur einen Gültigkeitszeitraum zuzuordnen. Insbesondere kann sichergestellt werden, das bei Benutzern der SSH-Key, wie von Passworten gewohnt, regelmäßig neu erstellt wird. Derjenige, der die Signatur eines User Keys durchführt muss nur den alten und den neuen Public Key vergleichen. Ein gleicher Public Key bedeutet auch, das der gleich Private Key zum Einsatz kam. 
 +   
 + 
 + 
      
      
  
howtos/sshexpert.1512229609.txt.gz · Zuletzt geändert: 2017/12/02 15:46 (Externe Bearbeitung)