PuTTY: Sichere Remote-Administration über SSH


    Tags: , ,

    Putty-LogoSecure Shell (SSH) beherrscht neben dem direkten Remote-Login auch sichere File-Trans­fers, 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 Authenti­fizierungs­prozess 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.

    Putty speichert die wichtigsten Session-Informationen und ist so bequemer zu nutzen als die Tools für die Kommandozeile.

    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.

    Keine Kommentare