Verbindungen zwischen Rechnern im Internet und auch in Intranets werden immer stärker unter dem Aspekt Sicherheit diskutiert. Im heimischen privaten Netz spielt dies sicherlich eine wesentlich geringere Rolle als bei Rechnern, die in irgendeiner form öffentlich zugänglich sind.
Ein besonderes Einfalltor für Angriffe sind alle Verbindungen, bei denen im Verlauf des Verbindungsaufbaus oder während der Verbindung selbst Daten zwischen den beteiligten Rechnern unverschlüsselt übertragen werden. Von dieser Problematik sind vor allem telnet-Verbindungen betroffen aber auch die an anderer Stelle beschriebenen Zugriffe auf CVS-Server.
Eine Lösung dafür bietet die Nutzung der sicheren Verbindung ssh (secure shell), die eine verschlüsselte Verbindung zwischen Client uns Server bietet. Dies ist vor allem auch dann sinnvoll, wenn Sie beispielsweise Rechner fernwarten wollen.
Nachfolgend wird die Konfiguration eines Linux-Servers sowie von Linux- und Windows-Clients für ssh beschrieben. Das Ganze ist so einfach zu realisieren, daß eigentlich kein Grund existiert, unverschlüsselte Verbindungen überhaupt noch zuzulassen.
Ohne das hier im Detail zu erläutern, Authentifizierung heißt, daß sich die an der Verbindung beteiligten Partner mit Hilfe von Schlüsseln gegenseitig ausweisen müssen. Das verwendete Verfahren ist eines, bei dem auf jeder Seite ein öffentlicher und ein privater Schlüssel vorhanden sind. Der Partner bekommt jeweils den öffentlichen Schlüssel des anderen, aber dieser wird nur akzeptiert, wenn auf dem Rechner der passende private Schlüssel vorhanden ist. Vom Grundsatz her ist dies das selbe Prinzip, das PGP (pretty good privacy) für die Verschlüsselung von Mails verwendet.
Damit Verbindungen aufgebaut werden können, müssen nun die öffentlichen und privaten Schlüssel generiert werden. Geben Sie dazu als root auf der Kommandozeile den Befehl ein:
ssh-keygen -b 1024 -f /etc/ssh_host_key -N ''
Damit Benutzer von außen auf den Server zugreifen können, muß ein entsprechender Benutzer auf dem Server eingerichtet werden. Ich verwende im Folgenden den Benutzernamen ssh-nutzer. Richten Sie zuallererst ganz normal einen solchen Benutzer im System ein (Bei SuSE z.B. mittels YaST). Öffen Sie ein Terminal und loggen Sie sich als Benutzer ssh-nutzer ein und wechseln Sie in sein Heimatverzeichnis (cd /home/ssh-nutzer). Geben Sie dort den Befehl ssh-keygen ein und wenn Sie nach einer Passphrase und deren Bestätigung gefragt werden, drücken Sie jeweils die Enter-Taste.
Das war's auf dem Server.
Der Windows-ssh-Client ist erhältlich unter ftp://ftp.cs.hut.fi/pub/ssh/contrib. Laden Sie dort die Datei ssh-1.2.14-win32bin.zip herunter (oder ggf. die aktuelle Version). Entpacken Sie das Zip-Archiv in ein beliebiges Verzeichnis auf dem Windows-Rechner (im folgenden D:\Programme\ssh). Sie müssen nun den privaten und den öffentlichen Schlüssel für den Client erzeugen. Öffnen Sie ein DOS-Fenster im Ssh-Verzeichnis. Erstellen Sie dort ein Unterverzeichnis .ssh (Ja, wirklich: Punktssh), indem Sie md .ssh eingeben und geben Sie nachfolgend dort ein:
ssh-keygen -C Benutzer@Rechner -f ./.ssh/identity
Ersetzen Sie dabei Benutzer@Rechner durch Ihren Benutzernamen und den Rechnernamen. Im Grunde ist es egal, was Sie hier eingeben, aber der erzeugte Schlüssel entspricht so den eigentlichen (von Unix kommenden) Vorgaben. Wenn Sie nach einer Passphrase und deren Bestätigung gefragt werden, drücken Sie jeweils die Enter-Taste.
Jetzt muß der erzeugte öffentliche Schlüssel auf den Server kopiert werden. Dazu muß ein Benutzer auf dem Server existieren. Mit diesem Benutzernamen werden dann im Folgenden die Verbindungen aufgebaut. Ich verwende in diesem Beispiel den im Kapitel für die Serverkonfiguration bereits eingerichteten Benutzer ssh-nutzer. Sie müssen den Inhalt des öffentlichen Schlüssels (Datei: identity.pub) auf dem Server in die Datei authorized_keys kopieren, die sich im Unterverzeichnis .ssh im Benutzerverzeichnis (im Beispiel: /home/ssh-nutzer/.ssh/authorized_keys) befindet. Sie müssen also am besten diese Datei auf den Server kopieren (z.B. per ftp) und dann z.B. mit Hilfe eines Editors den Inhalt von identity.pub des Clients in in die Datei /home/ssh-nutzer/.ssh/authorized_keys kopieren. Wenn Sie ihren ersten Benutzer einrichten, können Sie die Datei identity.pub auch einfach entsprechnd umbenennen.
Damit Sie jetzt von überall aus eine ssh-Verbindung aufbauen können, sollten Sie auf der Windows-Maschine die Variable HOME auf das Verzeichnis setzen, in dem sich das ssh-Programm befindet. Zudem sollten Sie dieses Verzeichnis in die PATH-Anweisung aufnehmen. Unter Windows 95 und 98 nehmen Sie einfach eine Zeile
set HOME=D:\Programme\ssh
dort auf und ergänzen Sie die Zeile, die mit PATH= anfängt am Ende mit ;D:\Programme\ssh;
Unter Windows NT gehen Sie in die Systemsteuerung, wählen dort Systemund dort Umgebung. Fügen Sie dort eine entsprechende Variable HOME ein und ergänzen Sie die PATH-Anweisung wie erläutert. Damit diese Einstellungen systemweit gelten, müssen Sie als Administrator angemeldet sein!
Sie können jetzt testen, ob die Verbindung funktioniert. Geben Sie in einem DOS-Fenster den Befehl
ssh Rechnername
ein. Rechnername kann dabei die IP-Nummer des Servers sein, aber auch
dessen Name, wenn er in der Datei \Winnt\system32\drivers\etc\Hosts
aufgelistet ist.
Sie müßten jetzt eine Meldung in der Art: Host '192.168.1.1'
added to the list of known hosts. Und dannach den Prompt des Lunuxservers
sehen. Glückwunsch, das war die erste ssh-Verbindung.
Entpacken Sie die Archive in ein beliebiges Programmverzeichnis. Es
gibt zwei Möglichkeiten, Tera Term Pro mit ssh-Unterstützung
zu starten:
1. Sie starten das Programm ttssh.exe im Programmverzeichnis von Tera
Term Pro und wählen dann unter Service SSH. Oder Sie setzen wie weiter
oben beschrieben eine Umgebungsvariable namens TERMATERM_EXTENSIONS=1.
Dann können Sie die Datei ttermpro.exe direkt starten und gelangen
zum genannten Eröffnungsfenster. Wählen Sie nach der Wahl von
SSH OK, geben den Benutzernamen auf dem Server (im Beispiel: ssh-nutzer)
ein und wählen Sie "Use RSA key to log in". Dabei muß unter
"Private key file" der Name des privaten ssh-Schlüssels eingegeben
werden (im Beispiel: D:\Programme\ssh\.ssh\identity) ein.
Sie können den Verbindungsaufbau automatisieren, indem Sie einerseits eine Verknüpfung zu ttermpro.exe erstellen, in der unter Ziel als Parameter der Hostname und der Parameter ssh angegeben sind (im Beispiel Ziel: D:\Programme\TTerm\ttermpro.exe 192.168.1.1:22 -ssh). Andererseits gehen Sie im laufenden Programm im Menü zu den Punkten Setup->SSH Autentication... und tragen dort im Fenster wie oben erläutert den Benutzernamen, "Use RSA key to log in" und "Private key file" ein und wählen im Menü Setup->Save setup... .
Sie müssen nun den privaten und den öffentlichen Schlüssel für den Client erzeugen. Öffnen Sie ein Terminal-Fenster in Ihrem Heimat-Verzeichnis. Geben Sie dort ein:
ssh-keygen
Wenn Sie nach einer Passphrase und deren Bestätigung gefragt werden, drücken Sie jeweils die Enter-Taste.
Jetzt muß der erzeugte öffentliche Schlüssel auf den Server kopiert werden. Dazu muß ein Benutzer auf dem Server existieren. Mit diesem Benutzernamen werden dann im Folgenden die Verbindungen aufgebaut. Ich verwende in diesem Beispiel den im Kapitel für die Serverkonfiguration bereits eingerichteten Benutzer ssh-nutzer. Sie müssen den Inhalt des öffentlichen Schlüssels (Datei: identity.pub) auf dem Server in die Datei authorized_keys kopieren, die sich im Unterverzeichnis .ssh im Benutzerverzeichnis (im Beispiel: /home/ssh-nutzer/.ssh/authorized_keys) befindet. Sie müssen also am besten diese Datei auf den Server kopieren (z.B. per ftp) und dann z.B. mit Hilfe eines Editors den Inhalt von identity.pub des Clients in in die Datei /home/ssh-nutzer/.ssh/authorized_keys kopieren. Wenn Sie ihren ersten Benutzer einrichten, können Sie die Datei identity.pub auch einfach entsprechnd umbenennen.
Sie können jetzt testen, ob die Verbindung funktioniert. Geben Sie in einem Terminal-Fenster den Befehl
ssh Rechnername
ein. Rechnername kann dabei die IP-Nummer des Servers sein, aber auch dessen Name, wenn er in der Datei \etc\Hosts aufgelistet ist.
Viel Spaß.