Secure Shell (SSH) im URZ der TU Chemnitz
SSH ist der vom URZ favorisierte Mechanismus für Remote Login, Remote Copy und Remote Execution beim Zugang zu Unix/Linux-Systemen im Netz.
Software
Die Implementierung OpenSSH gehört bei Unix/Linux-Systemen i.d.R. zum Standardumfang. Für Windows-Systeme ist PuTTY als SSH-Klient und WinSCP zum Übertragen von Dateien zu empfehlen:
- PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- WinSCP: http://winscp.net/eng/docs/lang:de
Hinweis: Es gibt auch eine Linux-Version von PuTTY. Diese kann ggf. als grafische Alternative zur kommandozeilenorientierten OpenSSH verwendet werden.
Informationen
- Secure Shell (SSH) - Gesicherte Kommunikation über unsichere Netze
- Manuals der OpenSSH-Implementation
SSH, Kerberos und AFS
Die Installation und Konfiguration von OpenSSH auf den vom URZ betreuten Maschinen erfolgt so, dass ein Single-Sign-On-Verfahren realisiert wird:
- Beim Login unter Linux an einer Maschine in einem der Pools oder an einem Arbeitsplatz geben Sie Ihr Nutzerkennzeichen und Ihr Passwort ein.
-
Daraufhin erhalten Sie ein sog. Kerberos Ticket Granting Ticket (TGT) und Ihr
AFS-Token. Das TGT beweist anderen Rechnern und Diensten Ihre Identität,
ohne dass Sie erneut Ihr Passwort eingeben müssen. Das TGT wird in einem
Ticket Cache gespeichert. Diesen können Sie sich mit dem Kommando
klist
anzeigen lassen. - Beim Aufruf von ssh wird dieses TGT benutzt, um dem Zielrechner Ihre Identität zu bestätigen. Außerdem wird es an den Zielrechner übertragen (forward) und dort ebenfalls im Ticket Cache gespeichert.
- Am Zielrechner wird ausgehend vom TGT ein AFS-Token erzeugt und dem AFS Cache Manager übergeben, so dass Sie auf Ihre Dateien zugreifen können.
Dieses Verfahren funktioniert nur in der Protokoll-Version 2, die auf Grund des höheren Sicherheitsniveaus stets bevorzugt werden sollte und bei den vom URZ administrierten Maschinen die einzig zulässige ist.
Wenn Sie sich bereits auf einer selbst administrierten Maschine ein TGT
beschaffen möchten, um sich damit ohne Passwort-Eingabe per ssh an Maschinen
des URZ anmelden zu können, übernehmen Sie bitte die entsprechenden
Einstellungen der Konfigurationsdateien.
Beachten Sie bitte, dass Kerberos nur im Campusnutz oder mit einer
VPN-Verbindung nutzbar ist.
- Kerberos-TGT beschaffen
(Ersetzen Sienkz
durch Ihr Nutzerkennzeichen.)kinit nkz@TU-CHEMNITZ.DE
- optional: Kerberos-Konfiguration
/etc/krb5.conf
anlegen, ein Beispiel finden Sie im Abschnitt Kerberos-Konfiguration von Linux-/Unix-Systemen. - Kerberos-Authentifizierung konfigurieren in
~/.ssh/config
oder/etc/ssh/ssh_config
Host *.tu-chemnitz.de GSSAPIAuthentication yes GSSAPIDelegateCredentials yes
Umgang mit SSH-Host-Schlüsseln und deren Fingerprints
SSH enthält mehrere Sicherheitsmechanismen. Neben einer verschlüsselten Datenübertragung, die die Vertraulichkeit gewährleistet, wird auch noch eine zuverlässige gegenseitige Authentifizierung der Partner, d.h. des jeweiligen Zielrechners (Servers) sowie des SSH-Benutzers realisiert.
Der Server verfügt dazu über Schlüsselpaare, die seiner indeutigen Identifikation dienen und jeweils aus einem privaten und einem öffentlichen Schlüssel bestehen. Aktuell kommen im URZ drei Typen von Schlüsselpaaren für SSH2 zum Einsatz: RSA, ECDSA und ED25519. Durch entsprechende kryptografische Operationen weist der Server dem Klienten nach, dass er über den zu seinem öffentlichen Schlüssel gehörenden privaten Schlüssel verfügt und somit der echte Server ist.
Dieser Nachweis setzt aber voraus, dass der Klient den authentischen
öffentlichen Server-Schlüssel kennt und dessen Authentizität auch wirklich
prüft. Dies erfolgt automatisch über die in Dateien gespeicherten Listen
bekannter Schlüssel bzw. über Zertifikate einer bekannten SSH-CA (Certification
Authority). Relevant hierfür sind die Dateien
/etc/ssh/ssh_known_hosts
, /etc/ssh/ssh_known_hosts2
und $HOME/.ssh/known_hosts
).
Wenn man einen Zielrechner kontaktiert, dessen öffentlicher Host-Schlüssel in
den lokalen Schlüssellisten fehlt, zeigt die SSH mit der bei uns gewählten
Standard-Option StrictHostKeyChecking ask
den Fingerprint des
öffentlichen Host-Schlüssels an und lässt den Benutzer entscheiden, ob dieser
Schlüssel authentisch ist und daher die Verbindung aufgebaut werden soll, z.B.:
$ ssh login.tu-chemnitz.de The authenticity of host 'login.tu-chemnitz.de (134.109.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:tbY+wsIbU3ohVDGe2WSRSe6bC8IG9WGEyQmJQ2990Q4. Are you sure you want to continue connecting (yes/no)?
Ein sicherheitsbewusster Nutzer wird erst dann mit yes
antworten
und damit die Übernahme des Host-Schlüssels in die eigene Schlüsselliste
veranlassen, wenn er den Fingerprint sorgfältig überprüft, also mit dem auf
einem sicheren Weg beschafften echten Wert verglichen hat.
Für einen SSH-Zugriff aus dem Internet steht die im obigen Beispieldialog genutzte Adresse
login.tu-chemnitz.de
zur Verfügung, wobei dieser ab dem 13.12.2023 nur noch via VPN möglich ist.
Die MD5-, SHA1- und SHA256-Fingerprints der SSH-Host-Schlüssel lauten:
Schlüsseltyp | Fingerprint des SSH-Host-Schlüssels | letzte Änderung am |
---|---|---|
RSA für SSH2 | 2048 MD5:e3:f7:a7:69:60:19:20:bb:11:0b:39:ca:9b:ee:05:65 2048 SHA1:f9:48:90:6e:d7:fd:31:54:91:81:5e:ba:2a:58:03:54:a3:47:11:3f 2048 SHA256:fbrSrqMSn/LYRJ8ZFcGtVIQT8NKZ/JbFeqZEq6S6NTQ |
14.11.2023 |
ECDSA für SSH2 | 256 MD5:b3:65:55:4d:e3:19:dd:b1:5b:38:29:a8:0f:a0:a6:fa 256 SHA1:cb:14:1b:9e:c2:3d:35:fb:29:48:a9:92:f7:a6:45:af:47:9a:05:bb 256 SHA256:+ptFqmyo76JnJ6ece5nKkHPB+Gb+RegVhzzAmChD2wg |
14.11.2023 |
ED25519 für SSH2 | 256 MD5:04:7e:e1:5a:c8:2c:78:92:29:00:25:05:16:3a:da:b4 256 SHA1:f4:7d:be:ce:ee:45:5e:b4:56:32:ea:2a:54:52:76:0a:44:62:5d:b7 256 SHA256:tbY+wsIbU3ohVDGe2WSRSe6bC8IG9WGEyQmJQ2990Q4 |
14.11.2023 |
Nachdem ein verschlüsselter und authentischer SSH-Kanal zum Server etabliert wurde, authentifiziert der Klient den Benutzer gegenüber dem Server. Dafür stehen verschiedene Verfahren zur Verfügung. Sofern der Benutzer bereits über ein Kerberos-TGT verfügt, wird dieses wie oben beschrieben standardmäßig verwendet. Alternativ kann auch der Benutzer eigene Schlüsselpaare erzeugen und verwenden oder sich mit seinem Passwort gegenüber dem Server authentifizieren.
Um dieses Kerberos-TGT-basierte Single-Sign-On-Verfahren anbieten zu können,
besitzt jeder Rechner des URZ eine entsprechende Kerberos-Identität. Der
Kerberos5-Host-Schlüssel jeder Maschine steht bei Linux in der Datei
/etc/krb5.keytab
in Einträgen für den Principal
host/fq.dn.tu-chemnitz.de@TU-CHEMNITZ.DE
. Er wird auf dem
SSH-Server benötigt, nicht auf dem Klienten. Ohne diesen Schlüssel kann der
Server die Kerberos-Tickets, die ihm der Klient vorweist, nicht verarbeiten,
weil diese mit dem Host-Schlüssel des SSH-Servers verschlüsselt sind.
Hinweise
-
Das Verfahren zum Verifizieren der Korrektheit der Host-Schlüssel wird durch
die folgende Option in den Konfigurationsdateien des SSH-Klienten (üblicherweise
$HOME/.ssh/config
,/etc/ssh/ssh_config
) gesteuert:StrictHostKeyChecking no|yes|ask
Beino
lernt der Klient automatisch neue Keys, indem er sie in die Schlüsselliste übernimmt. Das ist sehr bequem, aber auch sehr unsicher. Mityes
verhindert man sicher das automatische Lernen von Schlüsseln. Hier muss man den Schlüssel manuell in der Schlüsselliste ergänzen. Beim Standardwertask
entscheidet der Nutzer an Hand des Fingerprints über die Authentizität des Schlüssels. -
Auf den vom URZ verwalteten Maschinen findet man in den Dateien
/etc/ssh/ssh_known_hosts
und/etc/ssh/ssh_known_hosts2
eine Sammlung der Public-Host-Keys zahlreicher Maschinen aus dem Campusnetz bzw. den öffentlichen Schlüssel der SSH-CA. Der Inhalt dieser Dateien wird automatisch gepflegt und regelmäßig auf alle vom URZ verwalteten Maschinen verteilt. Wenn man diese Datei in das eigene System überträgt, übernimmt man diese Public Keys und kann damit das Verifizieren des Host-Fingerprints umgehen, ohne dabei den zugrunde liegenden Sicherheitsmechanismus des SSH-Protokolls auszuschalten.