6.3.2. Software und Beispiele

Nach so viel Theorie nun aber zu einem praktischen Beispiel. Als erstes wollen wir uns ansehen, wie der Protokoll-Interpreter die Nutzerkommandos in FTP-Kommandos (bzw. Kommandofolgen) umwandelt. Zu diesem Zweck starten wir den FTP-Klienten im Debug-Mode:
alwin% ftp -d ftp.tu-chemnitz.de
Der Protokoll-Interpreter druckt nun alle Kommandos aus, die über die Steuerverbindung gesendet werden (erkennbar an der vorangestellten Zeichenkette --->). Gleichzeitig sehen Sie die aus einem dreistelligen Code und einem optionalen Text bestehenden Replies.

Die in den folgenden Mitschnitten jeweils fett geschriebenen Zeilen stellen Nutzereingaben dar.

220 fripp FTP server (Version wu-2.4(8) Thu Nov 16 13:46:23 MET 1995) ready.
Name (ftp.tu-chemnitz.de:hgu): ftp
---> USER ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
---> PASS XXXX
230-
230-    ==== Willkommen auf dem FTP-Archiv der TU CHEMNITZ-ZWICKAU ====
230-  Erweiterte Moeglichkeiten via WWW: http://www.tu-chemnitz.de/ftp-home
230-  Kontakt:     Fischer@hrz.tu-chemnitz.de
230-
230-Please read the file LIESMICH
230-  it was last modified on Fri Feb  9 11:53:34 1996 - 278 days ago
230 Guest login ok, access restrictions apply.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub/linux
---> CWD pub/linux
250 CWD command successful.
ftp> ls
---> PORT 134,109,192,89,4,159
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for /bin/ls.
total 80
drwxr-xr-x   3 FtpAdm   Adm         2048 Oct 29 04:48 .
drwxr-xr-x   6 FtpAdm   Adm         2048 Nov 12 05:58 ..
drwxrwxrwx   3 Wizard   Adm         2048 Nov 13 02:01 COL
drwxrwxrwx   4 Wizard   Adm         2048 Nov 13 01:00 LST
drwxrwxrwx  22 Wizard   Adm         4096 Nov 13 04:49 debian
226 Transfer complete.
ftp>
Vielleicht versuchen Sie einmal, unterschiedliche Reply-Codes zu erzeugen, indem Sie mit den Nutzerkommandos herumexperimentieren. Eine Liste aller Nutzerkommandos erhalten Sie durch Eingabe von help (oder ?) am FTP-Prompt. Optional ist die Angabe des Kommandos, zu dem eine Hilfe gewünscht wird, möglich.

Da Sie nun Experten hinsichtlich FTP sind, können Sie sicherlich Ihrem Betreuer sagen, von welchem Rechner (IP-Adresse oder vielleicht sogar der Name?) aus der FTP-Klient in dem Beispiel gestartet wurde (also, der alwin ist es nicht :-) und wie die Portnummer der Datenverbindung (Klientenseite) lautet.

Als letztes wollen wir einen Verbindungsabbruch mit anschließender Fortsetzung der Übertragung an der alten Stelle simulieren. Zu diesem Zweck holen wir ein großes File vom FTP-Server der TU und geben während der Übertragung Control-C ein.

ftp> cd /
---> CWD /
250 CWD command successful.
ftp> get ls-lR.gz
local: ls-lR.gz remote: ls-lR.gz
---> TYPE I
200 Type set to I.
---> PORT 134,109,192,89,5,238
200 PORT command successful.
---> RETR ls-lR.gz
150 Opening BINARY mode data connection for ls-lR.gz (4348652 bytes).
^C
receive aborted
waiting for remote to finish abort
426 Transfer aborted. Data connection closed.
226 Abort successful
267700 bytes received in 1.3 seconds (2.1e+02 Kbytes/s)
ftp> reget ls-lR.gz
local: ls-lR.gz remote: ls-lR.gz
---> PORT 134,109,192,89,5,239
200 PORT command successful.
---> REST 270336
350 Restarting at 270336. Send STORE or RETRIEVE to initiate transfer.
---> RETR ls-lR.gz
150 Opening BINARY mode data connection for ls-lR.gz (4348652 bytes).
226 Transfer complete.
4078316 bytes received in 30 seconds (1.3e+02 Kbytes/s)
Neben der hier gerade verwendeten UNIX-Kommandozeilen-Variante ftp gibt es weitere FTP-Klienten: Auf der Serverseite ist vor allem die Frage des Schutzes vor unbefugten Zugriffen zu beachten. Sehr einfache FTP-Server (wie z.B. der in WinQVT enthaltene) sind für die ständige Benutzung kaum vertretbar.

Die wohl verbreitetste FTP-Server-Implementierung ist der wu-ftpd, entwickelt an der Washington University in Saint Louis. Für die folgenden Beispiele wurde die Version wu-ftpd-2.4-fixed.tar.gz für Linux verwendet, die allerdings heute schon nicht mehr ganz aktuell ist. Informationen zu den jeweils neusten Versionen finden Sie z.B. unter folgenden URLs:

Der FTP-Zugriff mit "normalen" Nutzerkennzeichen und Paßwörtern ist noch ein relativ einfacher Fall. Der FTP-Server nimmt die Identität des betreffenden Nutzers an und darf dann genau das, was der Nutzer auf dem Server auch direkt (z.B. über TELNET) tun dürfte. Probleme können sich ergeben, wenn beim normalen, d.h. interaktiven Login-Vorgang noch zusätzliche Aktionen ausgeführt werden (AFS-Token besorgen, /etc/shadow konsultieren, ...). In solchen Fällen braucht man einen an diese speziellen Vorkehrungen angepaßten FTP-Server.

Kritischer ist der anonyme Zugriff, der ja ohne Paßwort (bzw. mit einer Mailadresse an Stelle des Paßworts) erfolgt. Anonym verwendete FTP-Server verfügen intern über die Rechte des speziell für diesen Zweck geschaffenen Nutzers ftp. Man könnte auf den ersten Blick meinen, daß die normalen, auf der Identität dieses Nutzers basierenden Zugriffsschutzmechanismen des Betriebssystems ausreichen, d.h. keine zusätzlichen Beschränkungen notwendig sind, um alle Dateien adäquat schützen zu können.

Bei genauerer Betrachtung stellt sich allerdings heraus, daß dies so nicht zutrifft. Zumindest auf alle Teile des Dateisystems, die für die "Welt", d.h. jeden registrierten Nutzer erreichbar sind, könnte dann nämlich auch anonym zugegriffen werden. Somit wäre es möglich, in den Besitz der Paßwortdatei (/etc/passwd) eines fremden Systems zu gelangen, die darin verschlüsselt abgelegten Paßwörter ggf. off-line zu brechen und später durch einen regulären Login-Vorgang unter Angabe des ermittelten Paßworts widerrechtlich in den fremden Rechner einzudringen. Außerdem könnte jeder anonyme Anwender z.B. im Verzeichnis /tmp beliebige Dateien ablegen.

Die Lösung der genannten Probleme besteht darin, daß man im Falle eines anonymen Logins dem FTP-Server dasjenige Verzeichnis als Wurzel zuweist, bei dem der Teilbaum beginnt, der für anonyme Zugriffe vorgesehen ist. In der folgenden Abbildung gilt das für /home/ftp:

Die FTP-Server-Prozesse werden durch das Betriebssystem am Verlassen des zugewiesenen Teilbaums gehindert. Ein FTP-Server kann nicht erkennen, an welcher Stelle des gesamten Dateibaums seine Wurzel liegt. Das ist auch nicht nötig, da er sie immer unter dem Namen / (Slash) erreicht. Im oben dargestellten Fall sieht der anonyme Nutzer das Verzeichnis /home/ftp/pub/kap4 der Server-Maschine unter dem Namen /pub/kap4.

Wie bei vielen anonymen FTP-Archiven üblich, liegen auch in unserem Beispiel die eigentlichen Dokumente unterhalb von /pub. Die Verzeichnisse /bin, /etc und /lib enthalten Dateien, die für den Betrieb des FTP-Servers notwendig sind:

Das Verzeichnis /incoming dient als Ziel für sog. Uploads, d.h., der Klient darf an dieser Stelle Dateien auf dem Server hinterlegen.

Die Einstellung der wesentlichen Konfigurationsparameter des FTP-Servers erfolgt in einer Datei /etc/ftpaccess. Hier ein kommentiertes Beispiel:

loginfails 3
class   local   real,anonymous *.tu-chemnitz.de 
class   remote  real,anonymous *

limit   local   100  Any   /etc/msgs/msg.toomany
limit   remote  100 SaSu   /etc/msgs/msg.toomany
limit   remote  50   Any   /etc/msgs/msg.toomany
readme  README*    login
readme  README*    cwd=*
message /welcome.msg            login
message .message                cwd=*
compress        yes             local remote
tar             yes             local remote
passwd-check    rfc822  enforce
log commands real
log transfers anonymous,real inbound,outbound
delete          no      anonymous         # delete permission?
overwrite       no      anonymous         # overwrite permission?
rename          no      anonymous         # rename permission?
chmod           no      anonymous         # chmod permission?
umask           no      anonymous         # umask permission?
upload  /home/ftp  *             no
upload  /home/ftp  /incoming     yes     root    daemon  0600 nodirs
upload  /home/ftp  /bin          no
upload  /home/ftp  /etc          no
path-filter  anonymous  /etc/pathmsg  ^[-A-Za-z0-9_\.]*$  ^\.  ^-
email ftpadmin@ftp.tu-chemnitz.de
Ein kleines Beispiel soll noch eine interessante Eigenschaft zeigen:
ftp localhost
Connected to localhost.
220 rak FTP server (Version wu-2.4(7) Sun Feb 2 11:14:04 GMT+0100 1997) ready.
Name (localhost:uh): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 4
drwxr-xr-x   4 root     root        1024 Feb  2 10:46 .
drwxr-xr-x   8 root     root        1024 Nov 18  1995 ..
drwxr-xr-x   2 root     root        1024 Feb  2 10:46 kap3
drwxr-xr-x   2 root     root        1024 Feb  2 10:46 kap4
226 Transfer complete.
ftp> 
ftp> get kap3.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for /bin/tar.
226 Transfer complete.
135352 bytes received in 6.56 secs (20 Kbytes/sec)
Obwohl nur das Verzeichnis kap3 existiert, konnte der FTP-Server veranlaßt werden, das Verzeichnis rekursiv zusammenzupacken (.tar) und zu komprimieren (.gz). Natürlich müssen die dafür gebrauchten Programme tar und gzip dem FTP-Server zugänglich sein (siehe das obige Bild). Die möglichen Konvertierungen sind nicht fest vorgegeben, sondern in einer Datei /etc/ftpconversions konfigurierbar.


Diskussion 6.3.2.1:

Ermitteln Sie weitere (empfehlenswerte) FTP-Klienten und -Server!


Frage 6.3.2.2:

Firewalls schotten lokale Rechnernetze vom Internet ab (häufig bereits im Router realisiert). Die TCP-Pakete, die dem Verbindungsaufbau vom Internet in das lokale Netz dienen, werden einfach verworfen, was die Chance für einen erfolgreichen Einbruch erheblich verringert. Alle Pakete aus dem lokalen Netz in das Internet sollen den Firewall jedoch ungehindert passieren können.
Welche Folgen hat dieser Firewall, wenn ein Nutzer den FTP-Dienst eines Servers im Internet in Anspruch nehmen will, und welche prinzipiellen Lösungsmöglickeiten sehen Sie?

Hinweis:
Denken Sie insbesondere an den Aufbau der Datenverbindung. Eine Lösung des Problems würde in der geschickten Ausnutzung des "Third Party" Transfers liegen. Wie könnte solch eine Lösung aussehen?


Vertiefung - Literaturhinweis:

C. Liu, J. Peek, R. Jones, B. Buus and A. Nye: Managing INTERNET Information Services. O'Reilly, 1994


© Uwe Hübner, Heino Gutschmidt, 1.7.1998