Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« r-Kommandos TCP/IP-Dienste NFS - Network File »

Unterabschnitte
  • ssh als telnet-Ersatz
  • RSA-Authentifizierung
  • Tunnelbau: Andere Protokolle sichern

Wenn Sicherheit vorgeht: die ssh und scp

Es gibt boshafte Menschen, die Leitungen abhören. Dabei fällt ihnen bei telnet, ftp und anderen Protokollen das eine oder andere Passwort in die Hände. Und anstatt sich eine eigenen Linuxrechner zu kaufen, brechen sie in Ihre Systeme ein, nur um endlich einmal mit UNIX arbeiten zu dürfen. Damit diese Menschen zur Ehrlichkeit gezwungen werden, wurde mit SSH (Secure Shell) die Möglichkeit geschaffen, den Datenverkehr übers Netz zu verschlüsseln.

SSH hat als freie Software begonnen. Inzwischen hat der Autor Tatu Ylonen eine kommerzielle Version herausgegeben und pflegt die freie Version nicht mehr. Dies hat eine Gruppe von Programmierern übernommen, so dass es eine aktuelle, freie Version gibt, die OpenSSH heißt. SSH basiert auf Verschlüsselungsalgorithmen, die an dieser Stelle nicht behandelt werden. Der Fokus des weiteren Abschnitts wendet sich auf die Konfiguration einer solchen Umgebung.

Als Client gibt es ssh, das einem rlogin oder telnet entspricht, also die Möglichkeit bietet, eine Sitzung auf einer fernen Maschine abzuhalten. Als zweiten Client gibt es scp, der im Syntax vollständig dem rcp entspricht. Die Clients werden in der Datei ssh_config konfiguriert, die sich im Verzeichnis /etc oder in /etc/ssh befindet.

Der Server heißt sshd. Seine Konfigurationsdatei heißt sshd_config und befindet sich ebenfalls im Verzeichnis /etc oder /etc/ssh.

Es gibt verschiedene Arten, ssh zu betreiben. Sie können ssh als telnet-Ersatz verwenden. Dazu muss an der Standardkonfiguration nichts geändert werden. Der Vorteil liegt einfach darin, dass man den Datenverkehr nicht abhören kann, da er verschlüsselt ist. Wenn Sie verhindern möchten, dass man sich von einer beliebigen Maschine einloggen kann, können Sie diese Art des Zugriffs in der Konfigurationsdatei sperren und somit nur den Zugriff von explizit genannten Systemen oder Netzen erlauben.

Die zweite Variante arbeitet über die gleiche Methode wie die r-Tools, also die Dateien .rhosts oder hosts.equiv. Der Sicherheitsgewinn liegt darin, dass die Datenübertragung nun verschlüsselt ist. Wollen Sie, wie bei den r-Tools den Aufruf ohne die Bestätigung durch die Eingabe von Passwörtern realisieren, verwenden Sie eine Art von Fingerabdruck, den Sie zwischen den Maschinen austauschen. Zu guter Letzt gibt es noch eine Konfiguration, die eine Mischform aus der Authentifizierung per rhosts-Datei und Fingerabdruck darstellt.

Im Folgenden wird eine Konfiguration als telnet-Ersatz und dann per RSA-Authentifizierung vorgestellt werden.

ssh als telnet-Ersatz

Die einfachste Verwendung des ssh ist sein Einsatz als telnet-Ersatz. Dazu muss lediglich gewährleistet sein, dass in der Datei sshd_config der Wert der Variablen PasswordAuthentication nicht auf no steht. Wird dieses Schlüsselwort gar nicht erwähnt, ist das in Ordnung. Standardmäßig steht dieser Wert auf yes. Melden Sie sich von einer fremden Maschine über einen ssh-Client an, wird es wie beim telnet eine Aufforderung zum Einloggen mit Benutzernamen und Passwort geben. Allerdings wird von Anfang an verschlüsselt gearbeitet. Der Eintrag in der /etc/sshd_config lautet:

PasswordAuthentication yes

Das Abschalten der Option PasswordAuthentication ist möglich und sinnvoll, wenn beispielsweise ein Webserver, der im Zugriff des Internets steht, nicht von außen per ssh ansprechbar sein soll. Er kann so konfiguriert werden, dass er nur von internen Rechnern der Firma administriert wird.

Für MS Windows gibt es das freie Programm PUTTY, das einen ssh-Client und einen scp beinhaltet. Quelle:

http://www.chiark.greenend.org.uk/~sgtatham/putty

RSA-Authentifizierung

RSA ist ein asymmetrisches Kryptoverfahren, das der Schlüsselverwaltung von SSH zugrunde liegt und ist nach den Entwicklern Rivest, Shamir und Adleman benannt.Rivest, Shamir, Adleman: A Method for Optaining Digital Signatures and Public Key Cryptosystems. Communication of the ACM, Feb. 1978.

Soll von einer Maschine eine SSH-Verbindung aufgebaut werden können, muss sie vom Server eindeutig identifizierbar sein. Da eine IP-Nummer leicht zu ändern ist, reicht diese Art der Identifikation nicht aus. Man generiert mit dem Programm ssh-keygen zwei Schlüssel für eine Maschine. Der eine Schlüssel ist privat und der zweite ist öffentlich. Der öffentliche Schlüssel wird auf dem Server hinterlegt.

Im Beispiel soll der Rechner gaston per ssh oder scp auf den Rechner silver zugreifen können. Bisher sind beide Rechner per rsh und rcp erreichbar. Das soll aber nach der Installation von ssh aufgelöst werden. Mit dem Kommando ssh-keygen wird auf gaston ein Schlüssel erzeugt.

gaston> ssh-keygen
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/arnold/.ssh/identity)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/arnold/.ssh/identity
Your public key has been saved in /home/arnold/.ssh/identity.pub
The key fingerprint is:
3b:a2:62:ed:02:ef:30:79:a1:4b:0b:b6:35:21:d8:f1 arnold@gaston
gaston>

Wie aus den Meldungen zu entnehmen ist, befinden sich die Dateien mit den Informationen im Unterverzeichnis .ssh des Heimatverzeichnisses. Die Datei identity.pub enthält eine Zeile mit dem öffentlichen Schlüssel. In dieser Datei befindet sich nur die eine Zeile, die auf arnold@gaston endet. Diese Zeile wird auf dem Zielrechner an die Datei .ssh/authorized_keys angehängt.

silver> cd
silver> rcp gaston:.ssh/identity.pub .
silver> cat identity.pub » .ssh/authorized_keys
silver> rm identity.pub

Wenn die Konfigurationsdateien der ssh-Komponenten nicht verändert wurden, kann sich nun der Benutzer arnold von gaston aus auf dem Rechner silver anmelden, ohne ein Passwort einzugeben.

gaston> ssh silver
Last login: Mon Feb 25 00:04:06 2002 from mail.willemer.edu
Have a lot of fun...
silver>

Das Kopieren erfolgt ähnlich wie beim rcp, allerdings ist scp von Haus aus etwas geschwätziger. Das Programm zeigt einen Verlaufsbalken beim Kopieren an. Dieses unterhaltsame Feature können Sie allerdings auch mit der Option -q abschalten. Mit -B können Sie verhindern, dass scp plötzlich in einem im Hintergrund laufenden Prozess nach dem Kennwort fragt.

gaston> scp silver:/etc/passwd .
passwd     100% |*****************************|  2071     00:00
gaston>

Nach einer Standardinstallation von ssh finden Sie eine fast vollständig auskommentierte Datei ssh_config. Dabei sind die Defaultwerte hinter den Variablen angegeben. Ihr Inhalt sieht folgendermaßen aus:

Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsAuthentication no
#   RhostsRSAAuthentication yes
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   FallBackToRsh no
#   UseRsh no
#   BatchMode no
#   CheckHostIP yes
#   StrictHostKeyChecking yes
#   IdentityFile /.ssh/identity
#   IdentityFile /.ssh/id_dsa
#   IdentityFile /.ssh/id_rsa
#   Port 22
  Protocol 1,2
#   Cipher blowfish
#   EscapeChar 

In der hier aufgestellten Umgebung würde man RhostsRSAAuthentication auf no stellen. Die Werte hinter Host bezeichnen die vom Client ansprechbaren SSH-Server. In diesem Fall sind das alle. Die Werte hinter Protocol bezeichnen, welche SSH Protokollversionen in welcher Reihenfolge unterstützt werden sollen.

Die Konfiguration für den Server sshd ist deutlich umfangreicher, so dass hier nur ein Ausschnitt aus der sshd_config betrachtet werden soll.

IgnoreRhosts yes
RhostsAuthentication no 
RhostsRSAAuthentication no 
RSAAuthentication yes 
PasswordAuthentication yes

Mit diesen Werten ist das Einloggen ohne Passwort nur erlaubt, wenn eine Schlüsselübergabe stattgefunden hat. Alle rhosts-Varianten der Authentifizierung sind ausgeschlossen. Ein direktes Einloggen mit der Eingabe eines Passwortes ist aber erlaubt.

Tunnelbau: Andere Protokolle sichern

Mit ssh können Sie Netzverbindungen anderer TCP/IP-Dienste sichern. Die Basis ist eine gewöhnliche Sitzung mit ssh, der man allerdings die Ports zuordnet. Dazu gibt es die Option -L. Als weitere Parameter wird ein Tripel aus eigener Portnummer, dem Benutzer auf dem Zielrechner und dem Zielport angefügt. Als Beispiel wird eine Sitzung aufgesetzt, die vom Rechner silver zu gaston führt. Der Zielport ist 110, der für POP3 verwendet wird.

silver>  ssh gaston  -L 2002:gaston:110
Last login: Sun Jul  7 11:32:27 2002 from silver.willemer.edu
Have a lot of fun...
gaston>

Sobald diese Sitzung angemeldet ist, kann auf dem Rechner silver ein Mailclient aufgerufen werden. In der Konfiguration des Mailprogramms wird als Server localhost, also silver angegeben. Der Port wird von 110 auf 2002 umgestellt. Sobald Sie nun Ihre Mail abrufen, wird der Mailclient lokal auf silver den Port 2002 anfragen. Der ist aber durch die ssh-Sitzung über eine gesicherte Verbindung mit dem Port 110 von gaston verbunden. Dieser Tunnel bleibt so lange bestehen, wie die ssh-Sitzung besteht. Mit dem Ausloggen ist auch der Tunnel nicht mehr zugreifbar.

Da die Verbindung durch SSH getunnelt wird, kann sie überall da aufgebaut werden, wo eine solche Verbindung erlaubt ist. Damit hat die Freigabe des SSH zur Konsequenz, dass die Berechtigten auch beinahe jede andere Verbindung zwischen den Rechnern aufbauen können, für die SSH gestattet ist. Eine Firewall wie auch ein Proxy können die Verbindung zwar als SSH identifizieren. Es bleibt ihnen aber unsichtbar, welcher Protokolltyp darin getunnelt wird.



« r-Kommandos | TCP/IP-Dienste | NFS - Network File »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de