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.
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.
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.
|
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>
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:
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. |
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
![]() |