Sichere Verbindungen mit ssh

Gliederung
1 Einleitung
2 Voraussetzungen
3 Das Grundprinzip
4 Die Einrichtung von ssh auf dem Linuxserver
5 Konfiguration eines Windows-Clients
6 Konfiguration eines Linux-Clients

1 Einleitung

Warum sichere Verbindungen?

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.

2 Voraussetzungen

Auf dem Linuxserver muß selbstverständlich das Netzwerk funktionieren und der Server muß von den anderen Rechnern aus erreichbar sein.

3 Das Grundprinzip

Die Sicherheit einer ssh-Verbindung basiert darauf, daß es sich um eine "authentifizierte" Verbindung handelt und daß die Datenübertragung verschlüsselt durchgeführt wird.

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.

4 Die Einrichtung von ssh auf dem Linuxserver

Für die Einrichtung auf dem Server müssen Sie als root eingelogt sein.
Es muß das Paket ssh (bei SuSE in der Gruppe Netzwerk enthalten) installiert werden. Bei SuSE-Systemen erledigen Sie das am besten mit YaST. Nach der Installation von ssh müssen Sie dafür sorgen, daß auf dem Server der ssh-Daemon läuft. Das ist das Programm, das darauf wartet, daß eine Anfrage zum Aufbau einer ssh-Verbindung eintrifft und dann den Authentifizierungsprozess abwickelt. Bei SuSE reicht es, wenn Sie in der Datei /etc/rc.config die Zeile suchen, die mit START_SSHD beginnt und diese auf START_SSHD=yes setzen. Danach starten Sie das System neu oder den Daemon von Hand starten (Befehl auf der Kommandaozeile: /sbin/init.d/sshd start).

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.

5 Konfiguration eines Windows-Clients

ssh-Client

Soweit ich weiß, gibt es für Windows einen kostenlosen ssh-Client und einen telnet-Client, der in der Lage ist, eine Verbindung über ssh aufzubauen.

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.

telnet-Client

Der Telnet-Client Tera Term Pro ist erhältlich auf der Webseite http://www.vector.co.jp/authors/VA002416/teraterm.html.
Sie müssen dort zusätzlich die "SSH Extension to Teraterm" TTSSH herunterladen. Bei einer Reihe von Distributionen (so z.B. SuSE)  wird Tera Term Pro auch auf den CDs der Distribution mitgeliefert. Nebenbei bemerkt empfiehlt sich die Installation von Tera Term Pro meiner Meinung nach sowieso, da es weitaus leistungsfähiger ist als z.B. das bei Windows mitgelieferte telnet.

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... .

4 Konfiguration eines Linux-Clients

Für die Einrichtung müssen Sie als root eingelogt sein.
Es muß das Paket ssh (bei SuSE in der Gruppe Netzwerk enthalten) installiert werden. Bei SuSE-Systemen erledigen Sie das am besten mit YaST.

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ß.



Zurück zur Hauptseite