5 FTP - Server

FTP steht für File Transfer Protocol und dient zum Dateitransfer zwischen zwei Rechnern im Internet. Der Vorteil dieses Protokolls ist, daß es sowohl Server wie Clients für die verschiedensten Rechnerarchitekturen gibt und somit Dateien zwischen diesen ausgetauscht werden können.

Der frühere Standardserver unter Unix, der in.ftpd - Server, ist heute etwas veraltet und ist auch in der Distribution nicht mehr enthalten. Der Klassiker schlechthin unter den FTP - Servern ist [10] wuftpd "WASHINGTON UNIVERSITY FTP SERVER". Er ist wesentlich flexibler konfigurierbar als in.ftpd, allerdings auch komplizierter. Leider sieht es jedoch so aus, daß dieser Server nicht oder nur zaghaft weiterentwickelt wird und schon seit geraumer Zeit die aktuellste Version 2.4.2 als Beta 18 ist.

Als Alternative wird seit einiger Zeit ein Server proftpd [11] angeboten, der einige Sicherheitslücken von wuftpd behebt und eine übersichtlichere Konfiguration ermöglicht. Die Installation und Konfiguration werden im folgenden beschrieben.

 

5.1 Installation

Da der proftpd - Server in der SuSE - Distribution enthalten ist, kann er komfortabel mit YaST installiert werden. Das Paket proftpd befindet sich in der Serie n. Zusätzlich sollte noch das Paket ftpdir, eine vorbereitete Verzeichnisstruktur für den FTP - Server, installiert werden.
Aus Sicherheitsgründen (siehe Kapitel 9) wird der Server nicht als Dämon sondern vom inetd (Internet Super Server) gestartet. Diesem muß mitgeteilt werden über welche Server er die Kontrolle übernimmt, indem in der Konfigurationsdatei /etc/inetd.conf einige Änderungen vorgenommen werden. Die Datei kann mit einem beliebigen Editor verändert werden, z.B. joe. In der Datei sind folgende Zeilen eingetragen:


# These are standard services.
#
ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -a
# ftp stream tcp nowait root /usr/sbin/tcpd proftpd
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd

Standardmäßig ist bereits der wuftpd FTP - Server aktiviert. Diese Zeile ist auszukommentieren durch Voranstellen des Zeichens "#" und die folgende Zeile ist durch Löschen des Zeichens "#" zu aktivieren. Dadurch wird jetzt jede Anfrage an die eigene Adresse über den Port 21, dem Standardport des FTP - Protokolls, vom Internet Superdämon angenommen, der dann die Anfrage intern an den proftpd - Dämon weiterleitet. Der Internet Super Server muß jetzt neu gestartet werden, oder es muß ihm mitgeteilt werden die geänderte Konfigurationsdatei neu einzulesen mit:

/sbin/init.d/inetd restart
oder /sbin/init.d/inetd reload

Jetzt ist der FTP - Server betriebsbereit und wartet die erste Verbindung ab. Es handelt sich um eine Minimalkonfiguration die es den Benutzern des Systems erlaubt auf das Dateisystem des Servers zuzugreifen. Der Superuser root ist aus Sicherheitsgründen deaktiviert und kann nicht per FTP - Protokoll auf den Rechner zugreifen. Ebenso ist im Moment noch kein Zugang als Gast ("anonymous" - Zugang) möglich.

Lokal auf dem Rechner kann die korrekte Installation des Servers überprüft werden:

beethoven:~ # ftp localhost
Connected to localhost.
220 ProFTPD 1.2.0pre1 Server (powered by S.u.S.E. Linux) [beethoven.ltc.lu]
Name (localhost:root):

Der Server antwortet, indem er eine Benutzerabfrage startet. Durch Einloggen eines bereits bestehenden Benutzers, außer root (siehe oben), wird eine Verbindung zum Heimatverzeichnis hergestellt.
Mit ls kann der Verzeichnisinhalt angezeigt werden. Alle weiteren verfügbaren Befehle werden durch Eingabe von help dargestellt und mit help <Befehl> wird eine kurze Beschreibung für den entsprechen Befehl angezeigt.
Falls der Rechner bereits an einem Netzwerk angeschlossen ist kann auch eine Verbindung von einem anderen Rechner hergestellt werden. Bei Windows 95 ist ein ähnlicher FTP - Client enthalten, wie unter Linux, der mit ftp im DOS - Fenster gestartet wird. Jedoch gibt es wesentlich komfortablere FTP - Programme wie z.B.: WS FTP Light [12], eine Shareware - Version die für Schulzwecke frei genutzt werden kann. Dieses Programm kann man beziehen von ftp.ipswitch.com, vom FTP - Server von RESTENA oder auch vom LTC - Server ftp.ltc.lu.

 

5.2 Konfiguration

Die Konfigurationsdatei vom Server ist, wie alle Konfigurationsdateien, im Verzeichnis /etc abgelegt und heißt proftpd.conf.

Falls bereits ein Apache - Server (siehe Kapitel 4) installiert wurde, kommt einem diese Datei relativ bekannt vor. Sie ist ähnlich aufgebaut und es sind sogar viele identische Anweisungen enthalten. Wie bereits erwähnt, handelt es sich hier um eine Basiskonfiguration. Eine Beschreibung aller zur Verfügung stehenden Parameter kann unter www.proftpd.org/reference.html [13] nachgelesen werden, wovon allerdings auch eine Kopie auf der lokalen Festplatte unter /usr/doc/packages/proftpd/html zu finden ist.

Anmerkung: Auf einem bereits installierten Apache - Webserver kann durch Hinzufügen eines Alias die ganze Homepage des FTP - Servers auf dem eigenen Webserver eingebunden werden.
Alias /proftpd /usr/doc/packages/proftpd/html
Anschließend darf das Neueinlesen der Konfigurationsdatei nicht vergessen werden: /sbin/init.d/apache reload

 

 

5.2.1 Anonymous - Server

Sehr oft werden FTP - Server dazu eingesetzt Dateien öffentlich zum Download anzubieten. Damit nicht für jeden Besucher ein Account eingerichtet werden muß, wird ein allgemeingültiger Benutzer eingerichtet der den Zugriff auf den Server ermöglicht: anonymous und ftp werden normalerweise als login benutzt und als Paßwort wird dann die eMail - Adresse erwartet. In der Konfigurationsdatei ist bereits ein solcher Server vorbereitet und durch Entfernen der Kommentare wird dieser aktiviert. Ein Neustart ist in unserem Falle nicht nötig da bei jedem Zugriff der inetd - Dämon einen neuen Prozeß startet und somit die aktuelle Konfigurationsdatei einliest. Jetzt ist auch ein Zugriff auf den Server mit einem Browser möglich über ftp://host.somewhere.tld



Bild 5.1 Anonymous FTP - Server

 

 

Der anonymous FTP - Server wird innerhalb der Anweisung

<Anonymous Verzeichnis>
:
</Anonymous>

konfiguriert. Alle möglichen Anweisungen können hier wiederum eingesetzt werden. Die Verzeichnisangabe gibt das Startverzeichnis des Besuchers an, er kann allerdings nicht wie ein regulärer Benutzer in andere übergeordnete Verzeichnisse wechseln. Im angegebenen Verzeichnis /usr/local/ftp ist die zuvor angelegte Dateistruktur des Paketes ftpdir eingerichtet worden und dies sind die Daten die in Bild 5.1 angezeigt werden.
Da der Benutzer anonymous nicht im System existiert wird er auf einen realen Benutzer ftp umgelenkt mit

UserAlias anonymous ftp

Je nach Rechnerleistung kann die Anzahl der anonymen Zugänge beschränkt werden:

MaxClients 10

Dem Besucher wird eine Datei angezeigt wo ihm zusätzliche Informationen über den Server geliefert werden können:

DisplayLogin msgs/welcome.msg

Auf dem Server sollen die Daten nur abrufbar sein und somit werden die Schreibrechte für alle Verzeichnisse gesperrt.

<Directory *>

<Limit WRITE>

DenyAll

</Limit>

</Directory>

Falls das Hochladen (upload) von Daten auf dem Server erwünscht ist, so ist besondere Vorsicht geboten. Für diesen Zweck wird ein Verzeichnis incoming angelegt, dem besondere Zugriffsrechte zuzuordnen sind.

Für Daten die gespeichert werden, wird der Zugriff gesperrt (777 - 017 = 760). Lese- und Schreibrechte sind nicht gestattet, dadurch wird das Überschreiben einer bereits vorhandenen Datei und das Anzeigen des Verzeichnisinhaltes vermieden. Anschließend wird das Recht erteilt eine Datei zu erstellen, was nicht mit dem Schreibrecht gleich zu setzen ist. Solche strenge Zugriffsbeschränkungen sind nicht zu unterschätzen. Allein durch das Leserecht könnte der Server massiv mißbraucht werden: ein Besucher könnte z.B. eine Raubkopie im Verzeichnis incoming ablegen und diese könnte dann weltweit von jedem heruntergeladen werden.

<Directory incoming>

Umask 017
<Limit READ WRITE>

DenyAll

</Limit>
<Limit STOR>

AllowAll

</Limit>

</Directory>

 

5.2.2 Virtuelle Server

Wie der Apache kann auch der proftpd mehrere Server verwalten. Allerdings können hier keine namensbasierten Server angeboten werden. Falls der Server im standalone Modus läuft, können mehrere Server auf einer einzigen IP - Adresse laufen, allerdings mit unterschiedlichen Ports. Da dies vom Superdämon inetd nicht unterstützt wird, muß hier für jeden Server eine eigene IP - Adresse vorhanden sein. Der virtuelle Server wird innerhalb einer eigenen Anweisung definiert, ähnlich wie beim anonymen Server.

<VirtualHost IP - Adresse>
DefaultRoot /usr/local/ftp2
..
</VirtualHost>

Es muß allerdings zusätzlich angegeben werden auf welche Dateien zugegriffen werden kann. Die DefaultRoot Anweisung ist sehr flexibel, es können auch Platzhalter eingebunden werden.

Beispiel:

DefaultRoot ~ !root

Für jeden Benutzer wird als Stammverzeichnis sein Heimatverzeichnis benutzt, d.h. keiner kann in ein übergeordnetes Verzeichnis wechseln außer der Superuser root, denn das Ausrufezeichen steht für logisches NOT.


5.3 Einsatz in der Schule

Da dem Server in der Regel der Benutzer bekannt ist, können sehr differenzierte Konfigurationen erstellt werden.
Den Schülern kann ganz gezielt Software zur Verfügung gestellt werden, die entweder nur innerhalb der Schule eingesehen werden kann, oder außerhalb der Schule nur in Verbindung mit einem gültigen Benutzeraccount.

<Directory /home/ftp/restricted_ltc>

<Limit ALL>

Order allow,deny
Allow from .ltc.lu
AllowGroup !public
DenyAll

</Limit>

</Directory>

Hier wird der Zugriff erlaubt von einem Rechner innerhalb der Domäne ltc.lu oder falls der Benutzer nicht der Gruppe public angehört, unter welcher der anonyme Zugriff läuft.
So können Verzeichnisse eingerichtet werden, welche nur von Lehrern einsehbar sind, oder für die einzelnen Fachbereiche kann eine Sammelstelle angelegt werden wo, z.B. Kurse und Prüfungen abgelegt werden können.

<Directory /home/ftp/elektro>

Umask 022
<Limit ALL>

AllowGroup electro
DenyAll

</Limit>

</Directory>

 

Weitere Konfigurationsbeispiele sind unter:

http://www.proftpd.org/configuration.html
/usr/doc/packages/proftpd/ sample-configurations
(lokal)

zu finden.

 

Home
1999 Claude Leniger claude.leniger@ltc.lu