previous next up contents index


Subsections


3.3 FTP-Server

 

3.3.1 Grundlagen

Ein weiterer zentraler Dienst in einem Intranet, der besonders dem Transport von Dateien auf andere Systeme dient, ist das File Transfer-Protokoll. Hierbei werden zwei Betriebsmodi unterschieden:

In beiden Fällen ist es möglich, Verzeichnisse einzusehen und sie zu wechseln, oder auch Dateien zu empfangen bzw. zu senden. Der Unterschied liegt in den Privilegien, die ein Benutzer besitzt. Während im ersten Fall der User eine Zugangsberechtigung zum System benötigt, so hat ein Gastzugang nur eine eingeschränkte Sicht auf den Datenbereich des Servers, was als einfacher Sicherheitsmechanismus anzusehen ist.

Die Vorteile von FTP liegen in den effizienten Verfahren zur Übertragung von Dateien beliebigen Formats und der Tatsache, daß der Zugriff von beliebigen Internet-Teilnehmern erfolgen kann. Auf der anderen Seite kann bei größeren Archiven schnell die Übersicht verloren gehen, wenn die Datenbestände nicht vernünftig sortiert sind, bei umfangreichen Dateibäumen ist hingegen die Navigation durch die Verzeichnisse eine zeitraubende Angelegenheit.

Gegenüber der Funktionalität von Standard-FTP-Daemonen, die normalerweise bei Unix-Systemen zum Lieferumfang gehört, bietet das Programmpaket aus dem Archiv der Washington University einige Erweiterungen, die gerade für den Einsatz im Intranet von Vorteil sein können. So unterstützt es die Definition von Benutzerklassen für Zugriffsbeschränkungen auf den Datenbestand. Weiterhin ist der Server zur Entlastung der Leitungen in der Lage, Dateien vor der Übertragung zu komprimieren. Zu den komfortablen Erweiterungen zählen der Logging-Mechanismus und das Benachrichtigen von Benutzern, sollte der Server einmal heruntergefahren werden.

3.3.2 Installation

Der FTP-Daemon der Washington University findet sich als Datei

wu-ftpd-2.4.tar.gz

im Internet in deren Archiv unter der URL



ftp://wuarchive.wustl.edu/packages/wuarchive-ftpd/



oder in einem der zahlreichen Mirrors, die diese Datei spiegeln. Das Entpacken in ein Unterverzeichnis erfolgt mit dem in Kapitel 3.2.1 bereits beschriebenen tar-Befehl.

Als Vorbereitung zur Installation müssen einige Verzeichnisangaben in der Datei src/pathnames.h an das System angepaßt werden. Tabelle 3.6 zeigt die verwendeten Einstellungen. Die einzelnen Pfadangaben haben hierbei folgende Bedeutung:

 
Tabelle 3.6:  Pfadangaben zur Installation des WU-FTP-Daemons
Variable: Eintrag:
_PATH_FTPUSERS /usr/local/etc/ftpusers
_PATH_FTPACCESS /usr/local/www/etc/ftpaccess
_PATH_EXECPATH /usr/local/etc
_PATH_PIDNAMES /usr/local/www/ftpd/ftp.pids-%s
_PATH_CVT /usr/local/www/etc/ftpconversions
_PATH_XFERLOG /usr/local/www/adm/xferlog
_PATH_PRIVATE /usr/local/etc/ftpgroups
_PATH_UTMP /var/adm/utmp
_PATH_WTMP /var/adm/wtmp
_PATH_LASTLOG /var/adm/lastlog
_PATH_BSHELL /bin/sh
_PATH_DEVNULL /dev/null
_PATH_FTPHOSTS /usr/local/etc/ftphosts


Der Installationsvorgang wird von einem Shellscript durchgeführt, das mit den Befehlen



build sol -prefix=/usr/local/www
build install



gestartet wird. Unter Umständen ist hierbei im Unixsystem die Datei



/usr/include/arpa/ftp.h



mit der Version support/ftp.h aus dem Paket zu ersetzen.

3.3.3 Konfiguration

Aktivierung des Daemons:

Im Gegensatz zum Webserver läuft ein FTP-Daemon nicht die ganze Zeit, sondern wird durch den inetd-Prozeß gestartet. Der inet-Daemon ist eine Art Superserver, der im Auftrag verschiedener Dienstprogramme auf einem Unix-System gleich mehrere Netzwerk-Ports abhört. Das heißt er überwacht das System bis ein Dienst angefordert wird (über den entsprechenden Port) und startet dann den zugehörigen Prozeß. FTP verwendet standardmäßig die Ports 21 (Kontrolleitung) und 20 (Datenleitung). Da in Unix ein FTP-Daemon standardmäßig enthalten ist, muß in der Konfigurationsdatei /etc/inetd.conf , der Eintrag für den Server nur abgeändert werden. Der richtige Eintrag lautet:



ftp stream tcp nowait root /usr/local/etc/ftpd -l -i -d



Die Parameter bestimmen, daß alle Kontakte mitprotokolliert werden und auch Debug-Information aufgezeichnet werden.

Anlegen des Anonymous-User ,,FTP``:

Um den FTP-Dienst auch für Leute zur Verfügung zu stellen, die keine Zugriffsberechtigung auf dem Server besitzen wird ein anonymer User mit dem Namen ftp eingerichtet. Er erhält ein eigenes Home-Verzeichnis, das beim Betrieb mit dem chroot()-Kommando zum Hauptverzeichnis dieses Benutzers wird. Er hat also nur eine eingeschränkte Sicht auf das System. Ein weiterer wichtiger Punkt ist, daß es nicht möglich sein darf, sich als Anonymous an einen anderen Unix-Dienst anzumelden, oder sogar mit einer Shell Befehle abzusetzen. Dies wäre eine grobe Verletzung der Systemsicherheit. Der Eintrag zum Anlegen dieses Benutzers in der Datei /etc/passwd lautet:



ftp:*:39027:2:Anonymous FTP user:/usr/local/www/ftp.home:
/bin/false



Die einzelnen Felder sind mit einem ': ' getrennt und haben folgende Bedeutung:

Verzeichnisstruktur:

Nachdem der Benutzer eingetragen wurde, muß in seinem Home-Bereich eine bestimmte Verzeichnisstruktur erstellt werden. Durch die Einschränkung der Sicht auf den Dateibaum darf aber nicht die Fuktionalität des FTP-Prozesses behindert werden, besonders nicht durch fehlende Bibliotheken oder Hilfsprogramme. Zu diesem Zweck wird zunächst das Home-Verzeichnis angelegt:



/usr/local/www/ftp.home



In diesem Verzeichnis müssen nun diejenigen Subdirectories angelegt werden, die das System nach dem Change Root noch erwartet oder die FTP benötigt. Dies sind:

Darüber hinaus ist es möglich, daß bestimmte Betriebssysteme noch weitere Verzeichnisse brauchen.

Anonymous-Systemprogramme:

Nachdem nun die Verzeichnisstruktur erzeugt ist, müssen noch einige Dateien angelegt werden, die Unix zum Betrieb benötigt. Im bin/- Verzeichnis müssen sich von den ausführbaren Programmen nur der ls -Befehl (Anzeigen eines Verzeichnisses) befinden. Im etc/ -Verzeichnis befindet sich zum einen die Paßwortdatei. Die Dokumentation weist ausdrücklich darauf hin, daß nicht einfach die Systemdatei kopiert werden soll, sondern daß nur diejenigen Einträge erscheinen sollen, die für Anonymous-Betrieb sinnvoll sind. Für den installierten Daemon sind dies folgende Einträge:

ftp:*:527:1:Anonymous FTP user:/usr/local/www/ftp.home:

/bin/false

bin:*:2:2::/:/bin/false

root:*:0:3::/:/bin/false

Eine weitere Systemdatei, etc/groups mit den Gruppeneinträgen ist zu erstellen (Auch hier nicht eine Kopie des Originals !!):

user:*:1:

bin:*:2:

other:*:3:

Abschließend sind für den gesamten Verzeichnisbaum noch geeignete Zugriffsrechte und Eigentümer zu setzen. Die Dokumentation schlägt hier Vorgabewerte vor, die in Tabelle 3.7 aufgelistet sind.

 
Tabelle 3.7:  Zugriffsrechte und Eigentmer des FTP-Verzeichnisbaumes
Verzeichnis/Datei: Eigentümer: Rechte:
/usr/local/www/ftp.home root:root Mode 555
     bin/ root:other Mode 111
     etc/ root:other Mode 111
     pub/ root:other Mode 555
     bin/ls root:other Mode 111
     etc/group root:other Mode 444
     etc/passwd root:other Mode 444


Zum Schluß ist noch die Datei /usr/local/www/etc/ftpaccess zu erstellen, bzw. aus dem Sourceverzeichnis zu kopieren. In ihr sind die Regeln enthalten, nach denen der Daemon vor bzw. nach der Übertragung eine Kompression (Dekompression) durchführt.

Spezielle Einstellungen bei SUN:

  Für den Einsatz auf Systemen unter den Betriebssystemen Solaris und SunOS sind noch weitere Aktionen durchzuführen, um die Besonderheiten dieser Systeme zu unterstützen. Zum einen sind dies die dynamischen Bibliotheken, die erst zur Laufzeit zum Programm hinzugelinkt werden, und auch für den eingeschränkten Anonymous-Dateibaum zur Verfügung gestellt werden müssen. Eine andere Besonderheit sind spezielle Gerätedateien /dev/zero , die ebenfalls für den reibungslosen Betrieb erforderlich sind. Folgende Befehle sind hierfür einzugeben:



cd /usr/local/www/ftp.home
mkdir usr/lib
cp /usr/lib/ld.so* usr/lib
cp /usr/lib/libc.so* usr/lib
chmod 555 usr
chmod 555 usr/lib
mkdir dev
cd dev
mknod zero c 13 12
mknod tcp c 11 42
mknod udp c 11 41
mknod ticotsord c 105 1
cd ..
chmod 555 dev



Die mitgelieferte Dokumention empfiehlt, noch weitere Bibliotheken in das Unterverzeichnis usr/lib/ zu kopieren. Insgesamt müssen folgende Dateien enthalten sein:



ld.so ld.so.1 libsocket.so libsocket.so.1
libc.so libc.so.1 nss_files.so nss_files.so.1
libdl.so libdl.so.1 nss_nisplus.so nss_nisplus.so.1
libintl.so libintl.so.1 nss_dns.so nss_dns.so.1
libnsl.so libnsl.so.1 nss_nis.so nss_nis.so.1
libw.so libw.so.1 straddr.so straddr.so.2



Zugangsbeschränkungen:

Die Konfiguration des FTP-Daemons ist gesamt in der Datei ftpconversions geregelt. Für das FH-Intranet sind dabei folgende Regeln festgehalten:

  • maximale Anzahl der Fehlversuche: loginfails 2
  • Benutzerklassen für den Zugriff auf das Archiv:

    • class local real *.fh-regensburg.de
    • class remote guest,anonymous  *.fh-regensburg.de
    • class authorized real,anonymous *.fh-regensburg.de
  • Mitteilung über die Aktualität von Readme-Dateien bei Login und Verzeichniswechsel:

    • readme README* login
    • readme README* cwd=*
  • Meldungen beim Login oder Wechsel in ein Verzeichnis:

    • message /etc/msgs/welcome.msg login
    • message .message cwd=*
  • Ausführung von automatischer Konvertierung:

    • compress yes local remote
    • tar yes local remote
  • Aktivierung der Befehle site group und site gpass : private yes
  • Paßwort-Check nach RFC 822 erzwingen (eMail-Adresse): passwd-check rfc822 enforce
  • Logging-Mechanismus:

    • log commands real
    • log transfers anonymous,real inbound,outbound
  • Shutdown-Meldung: shutdown /etc/shutmsg
  • Zugriffsrechte (für alle):

    • delete no guest,anonymous (Löschen)
    • overwrite no guest,anonymous (Überschreiben)
    • rename no guest,anonymous (Umbenennen)
    • chmod no anonymous (Dateimodus)
    • umask no anonymous (Standard-Dateimodus)

  • Regeln für Pfadangaben beim Upload:

    • path-filter anonymous /etc/pathmsg
      ^[-A-Za-z0-9_\.]*$ ^\. ^-
    • path-filter guest /etc/pathmsg
      ^[-A-Za-z0-9_\.]*$ ^\. ^-

previous next up contents index


10/6/1997