Tags: Sicherheit, SSH, FTP
Secure Shell (SSH) beherrscht neben dem direkten Remote-Login auch sichere File-Transfers, das Tunneln einzelner Ports und seit der Version 4.2 sogar Layer2/3-Firewalling mit Tun/Tap-Devices. Allein der sichere FTP-Ersatz macht SSH auch unter Windows interessant, etwa mit dem freien SSH-Client PuTTY.
Für Administratoren heterogener Netze gehört SSH zum Standard-Repertoire. Nahezu alle Linux-Distributionen haben die freie SSH-Implementation OpenSSH an Bord. Der SSH-Client ist immer installiert, beim SSH-Server ist es eine Frage der Sicherheits-Philosophie der jeweiligen Linux-Distribution, ob der SSH-Daemon sshd vorhanden und aktiviert ist. Bei Web-Hostern gehört SSH zu den Standardfunktionen für die Verwaltung eines vServer oder eines Root-Server.
PuTTY als SSH-Client für Windows
Für Administratoren, die von einer Windows-Maschine aus einen gehosteten Linux-Server oder VMware ESXi über SSH administrieren möchten, empfiehlt es sich daher, auf eine SSH-Implementierung wie PuTTY zurückzugreifen. Es handelt sich dabei um eine freie, vom Briten Simon Tatham entwickelte SSH-Software, die der MIT-Lizenz unterliegt und aktuell in der Version 0.62 vorliegt.
Alle SSH-Versionen sind weitgehend miteinander kompatibel. SSH steht zwar für Secure Shell, meint aber im Sprachgebrauch ein ganzes Bündel von Remote-Werkzeugen wie ssh, slogin, scp oder sftp, die unter Linux die klassischen Remote-Kommandos rsh, rlogin, rcp und telnet durch gleichwertige Varianten mit Verschlüsselung und Authentifizierung ersetzen.
Mehr als nur eine Shell
Konkret enthält die SSH-Suite die Tools ssh (ersetzt rsh, rlogin und telnet), scp (ersetzt rcp), sftp (ersetzt ftp), sshd (den SSH-Server-Daemon), sowie die Administrationswerkzeuge ssh-keygen (verwaltet asymmetrische Public-Keys zur Authentifizierung), ssh-keyscan (sucht nach vorhandenen SSH Public-Keys), ssh-agent (hält den privaten Schlüssel bis zum Logout des Nutzers im Arbeitsspeicher) und ssh-add (lädt einen privaten Schlüssel in den ssh-agent).
Die Vielfalt hat auch beim Windows-Tool PuTTY Ihre Entsprechung, daher empfiehlt es sich, entweder das komplette Zip-Archiv mit allen PuTTY-SSH-Tools oder den exe-Installer auszuführen. Bei PuTTY heißen die Tools teilweise etwas anders, z.B. puttygen oder psftp, erfüllen aber den gleichen Zweck.
Verschlüsselung aller Daten
SSH bietet unter Windows vor allem eine höhere Sicherheit, weil die Verbindung von vornherein verschlüsselt wird. Ferner gewährleistet SSH die Integrität per Default mit Host-Keys und unterstützt darüber hinaus optional eine auf asymmetrischen DSA- oder RSA-Schlüsseln basierende Authentifizierung. Letztere erhöht die Sicherheit noch einmal deutlich, weil sich Passwörter prinzipiell auch erraten lassen. Insgesamt bietet SSH in Bezug auf das Thema Sicherheit drei essentielle Eigenschaften:
- Verschlüsselung der Datenübertragung (auch Anmeldeinformationen)
- Datenintegrität, also Schutz vor Manipulation der Übertragung
- Authentifizierung der Gegenstelle
Verwendung von Host-Keys
Da jeder SSH-Client ein Benutzerkonto auf dem entfernten Host benötigt, führen alle SSH-Kommandos einen Authentifizierungsprozess durch. Standardmäßig arbeiten SSH und PuTTY mit Benutzernamen und Passwörtern, verschlüsseln allerdings die Verbindung.
Im einfachsten Fall lässt sich SSH für einen direkten Konsole-Login auf einem entfernten Host einsetzen. Dazu muss dort - egal ob es sich um eine Linux- oder Windows-Maschine handelt - ein SSH-Server laufen. Mit
ssh -l <entfernter nutzername> <IP-Adresse Remote-System>
kann man von der Kommandozeile unter Verwendung von Benutzernahmen und Passwort aufbauen eine Verbindung zum entfernten System aufbauen und findet sich nach erfolgreicher Authentifizierung in einer interaktiven Shell wieder.
Host-Key bei erster Verbindung unbekannt
Das ist bei PuTTY grundsätzlich nicht anders, nur dass der explizite ssh-Aufruf entfällt, weil er sich hinter der grafischen Oberfläche verbirgt. Hier genügt das Eintragen des Hostnamens (sofern die Namensauflösung im Netzwerkwerk eingerichtet ist) oder der IP-Adresse des entfernten SSH-Servers im Feld Hostname auf der Startseite Sessions. Der Connection type darunter steht per Default auf SSH, PuTTY beherrscht aber auch Telnet oder rlogin.
Da SSH zur Gewährleistung der Integrität standardmäßig mit Host-Keys arbeitet, ist dem Client der Host-Schlüssel beim ersten Zugriff auf einen neuen Server noch nicht bekannt. SSH weist beim ersten Verbindungsaufbau mit einem noch unbekannten Server auf das potenzielle Risiko einer gekaperten Verbindung hin. PuTTY zeigt den Dialog mit dem RSA-Fingerprint an und bietet an, den Host-Key im Windows-Registry-Format zu speichern, sofern man dem Server bzw. der Verbindung vertraut.
Verifizierung des Host-Keys
PuTTY hält den Host-Key aber auch gleichzeitig im Cache, damit der bei der nächsten Verbindung nicht erneut bestätigt werden muss. Die PuTTY-Entwickler legen übrigens das Skript kh2reg bei, mit dem sich bei Bedarf vorhandene Host-Keys aus dem known_hosts-Format unter Linux und Unix in ein Windows .REG -File konvertieren lassen. Auf dem (Linux-)Server ist der Host-Key im Verzeichnis /etc/ssh zu finden und heißt nach einer Standard-Installation des OpenSSH-Servers schlicht ssh_host_dsa_key.
Wer auf Nummer sicher gehen will, dass er mit dem richtigen Host verbunden ist, der kann auf dem Server mit dem Linux-SSH-Kommando
ssh-keygen -f /etc/ssh/ssh_host_rsa_key.pub -l
den Fingerprint des Host-Keys anzeigen und ihn mit jenem vergleichen, den man sich vorher vom Administrator des entfernten Rechners besorgt hat.
Täglich Know-how für IT-Pros mit unserem Newsletter
Seine Themenschwerpunkte sind Virtualisierung und Cloud Computing, speziell VMware, Amazon Web Services, Google Cloud und Microsoft Azure. Thomas ist zertifizierter VMware Professional, Advanced Professional und wurde von VMware in den Jahren 2016, 2017, 2018, 2019 und 2020 mit dem Blogger-Status vExpert ausgezeichnet.
Thomas ist außerdem zertifizierter AWS Solutions Architect, Sysops Engineer und Devops Engineer sowie Microsoft Certified Azure Administrator.
Thomas führt aktuell jeden zweiten Montag einen 4-tägigen Grundlagenkurs in Cloud Computing mit AWS via Zoom-Meeting durch. Weitere Informationen und Anmeldung über sein AWS-Blog.
Ähnliche Beiträge
Weitere Links