from: http://www.cert.dfn.de/infoserv/dib/dib-9601.html


SSH (Secure SHell)

Informationsbulletin DIB-96:01 vom 26. September 1996

(letzte Änderung: 29. November 1997)


Hintergrund

Die herkömmlichen, im Internet benutzten Protokolle weisen zwei schwerwiegende Sicherheitprobleme auf, die in letzter Zeit häufig von Angreifern ausgebeutet werden. Ein Problem ist die unverschlüsselte Übertragung der Daten, die es Angreifern erlaubt, fremde Kommunikation aufzuzeichnen. Dieses Problem nutzen Angreifer mit sogenannten Sniffern aus, die beim Login angegebene Benutzernamen und Passworte aufzeichnen. Das zweite Problem ist die fehlende Sicherung von Authentizität und Integrität der übertragenen Daten. Angreifer können dadurch Daten mit einer fremden Identität senden oder übertragene Daten manipulieren. Angreifbar sind inbesondere die Server, die eine Authentisierung anhand von IP-Adressen vornehmen. Zu den gefährdeten Protokollen zählen unter anderen Rlogin (Remote Login) und Rsh (Remote Shell). Angreifer schicken bei sogenannten "IP-Spoofing" Angriffen gefälschte IP-Pakete, die vorgeben von einem vertrauenswürdigen Rechner zu kommen. Unter vertrauenswürdigen Rechner werden im Zusammenhang mit rlogin und rsh alle Rechner verstanden, die in der /etc/hosts.equiv oder einer .rhosts-Datei aufgelistet sind.

Ziele des Programms

SSH ist ein Software-Paket bestehend aus einem Server und mehreren Klienten, das als vollwertiger Ersatz für rlogin, rcp und rsh einsetzbar ist. Im Gegensatz zu rlogin und rsh führt SSH jedoch keine Authentisierung anhand von IP-Adressen durch, sondern nutzt das RSA-Verfahren. Der Zugriff wird nur dem Rechner gewährt, der im Besitz des geheimen RSA-Schlüssels ist. Zusätzlich werden neben RSA-Keys für Rechner auch Schlüsselpaare für Benutzer unterstützt. Nach einer erfolgreichen Authentisierung werden alle Daten für die Übertragung verschlüsselt, ein Abhören ist somit ebenfalls nicht möglich. Verbindungen von X11-Programmen zum X11-Server über das Netzwerk werden über die sichere ssh Verbindung weitergeleitet. Das Abhören von MIT-MAGIC-COOKIES wird dadurch verhindert.

Installation der Programme

SSH steht für diverse Betriebssystem und Rechnerarchitekturen zur Verfügung. Die folgende Liste wurde aus der Dokumentation zu SSH V1.2.21 übernommen: Für weitere Betriebssysteme wie DOS/Windows, OS/2 und Macintosh werden zur Zeit Versionen entwickelt oder sind bereits verfügbar. Aktuelle Informationen zu diesen Versionen sind unter http://www.cs.hut.fi/ssh/ erhältlich. In dieser Anleitung wird die Installation der Freeware UNIX-Version von SSH beschrieben. Das Archiv ssh-1.2.21.tar.gz enthält die Quellen und Dokumentation zu SSH. Die Datei ssh-1.2.21.tar.gz.sig enthält eine PGP-Signatur für das Softwarepaket. Diese Signatur sollte vor der Installation von SSH überprüft werden, um sicherzustellen, daß die Datei ssh-1.2.21.tar.gz nicht von Dritten manipuliert wurde.

Überprüfung der Signatur (empfohlen)

Der zur Überprüfung benötigte PGP-Schlüssel ist auf jedem PGP-Keyserver erhältlich, per Mail an
pgp-public-keys@keys.pgp.net

Mit Subject:

get ylo@cs.hut.fi

Nach dem Einbinden des Schlüssels in den PGP public-Keyring, kann die Signatur überprüft werden:

% pgp ssh-1.2.21.tar.gz

File 'ssh-1.2.21.tar.gz.sig' has signature, but with no text.
Text is assumed to be in file 'ssh-1.2.21.tar.gz'.

Good signature from user "Ssh distribution key <ylo@cs.hut.fi>".
Signature made 1997/09/02 13:32 GMT
Informationen zur Installation und Anwendung von PGP sind im DFN-CERT Informationsbulletin DIB-94:05 zu finden.

Auspacken des Archivs

  gunzip ssh-1.2.21.tar.gz
  tar xvf ssh-1.2.21.tar

Kompilieren und Installieren der Programme

Die Erzeugung und Installation der Programme ist sehr einfach:
 
  cd ssh-1.2.21
  ./configure
  make
  make install
Über diverse Optionen zum configure-Script läßt sich die Installation von SSH leicht an spezielle Anforderungen anpassen. Empfehlenswerte Optionen zu configure sind: Die Erzeugung der Programme durch "make" erfordert keine weiteren Parameter. Nur der letzte Aufruf (make install) muß unter "root" erfolgen. Bei dieser Installation wird neben dem Kopieren der Programme auch bereits das RSA-Schlüsselpaar für den Rechner (Host-Key) erzeugt. Wenn die zu SSH gehörenden Programme über NFS zur Verfügung gestellt werden sollen, ist ein "make install" nur auf dem NFS-Server notwendig. Auf den NFS-Clienten ist nur die Erzeugung eines RSA-Schlüsselpaares notwendig, sowie die Installation der Konfigurationsdateien. Diese Installation auf den NFS-Clienten erfolgt über "make hostinstall".

Starten des SSH-Dämons (sshd)

Im Gegensatz zu den zu rlogin und rsh gehörigen Servern, die durch inetd gestartet werden, muß der SSH-Server (sshd) als Dämon beim Booten gestartet werden. Damit der SSH-Server beim Booten automatisch gestartet wird, muß folgender Eintrag in die Startup-Datei /etc/rc.local ergänzt werden:
if [ -x /usr/local/sbin/sshd -a -f /etc/ssh_host_key 
  -a -f /etc/sshd_config ]; then
        /usr/local/sbin/sshd
        echo -n " sshd"
fi
Die genannten Pfade können sich bei einigen UNIX-Varianten leicht unterscheiden. So sind die Startup-Dateien bei Sun Solaris 2.x im Verzeichnis /etc/init.d/ zu finden, und der SSH-Server sollte bei Solaris durch die Angabe von --prefix=/opt beim "configure" als /opt/sbin/sshd installiert sein. Die Pfade sind entsprechend anzupassen.

Installation der Host-Keys

Über das bei der Installation (make install) erzeugte Schlüsselpaar, dem Host-Key, werden sich später die Hosts authentisieren. Für eine erfolgreiche Authentisierung müssen beiden Hosts die öffentlichen Schlüssel des jeweiligen Kommunikationspartners vorliegen. Der öffentliche Schlüssel des Hosts wird bei der Installation in der Datei /etc/ssh_host_key.pub abgespeichert. Die Liste von Host-Keys anderer Rechner muß vom Administrator in der Datei /etc/ssh_known_hosts gepflegt werden. Da die manuelle Erzeugung der ssh_known-hosts Datei durch Zusammenfügen der ssh_host_key.pub Dateien mehrerer Rechner bei größeren Netzen sehr aufwendig werden kann, ist bei SSH ein Perl-Script enthalten, daß die öffentlichen Schlüssel aller Rechner einer (Sub-)Domain zusammensammelt. Die Datei ssh_known_hosts mit den Host-Keys aller Rechner der Domain "ihre.domain.de" kann durch folgenden Aufruf erzeugt werden:
  make-ssh-known-hosts ihre.domain.de > ssh_known_hosts
Die erzeugte Datei muß vom Administrator als /etc/ssh_known_hosts auf alle Rechner der Domain verteilt werden. Da diese Schritte noch ungeschützt durchgefürt werden müssen, stellt sich hier das Problem eines sicheren Bootstraps.

Entfernen der rlogin- und rsh-Server

Nach der erfolgreichen Installation sollten im letzten Schritt die rlogin- und rsh-Server aus der Konfigurationsdatei /etc/inetd.conf entfernt werden. Falls der Zugriff auf die beiden Server über den TCP-Wrapper auf wenige IP-Adressen eingeschränkt war, dann empfiehlt es sich, die selben Adressen auch in die Konfiguration von SSH zu übernehmen. Die Zeilen "AllowHosts" und "DenyHosts" haben die gleich Funktion wie eine Eintragung in
/etc/hosts.{allow|deny}
beim TCP-Wrapper.

Bekannte Probleme und deren Lösungen

Weitere Hinweise finden sich im SSH FAQ.

Benutzung der Programme

Die Programme verhalten sich wie normale rlogin-, rsh- und rcp-Klienten. Der Benutzer braucht keine neuen Kommandos zu lernen. Die zusätzlichen Optionen ermöglichen eine Reihe von weiteren Funktionen, brauchen im Normalfall aber nicht verwendet zu werden. SSH bietet eine große Vielfalt von Konfigurationsmöglichkeiten. Die detaillierte Darstellung würde den Rahmen dieses Bulletins überschreiten. Eine genaue Beschreibung findet sich in der Dokumentation zu SSH.

Programminformation

SSH (Secure Shell) Version 1.2: Tatu Ylonen

FTP-Server:


Disclaimer, Copyright © 1994 - 1997 by DFN-CERT / info@cert.dfn.de