17.6 FTP
Den FTP-Dienst haben wir unter den Aspekten »Funktionsweise«, »Protokoll« und »Client« bereits in vorhergehenden Kapiteln vorgestellt. Im Folgenden werden wir uns mit der Konfiguration eines FTP-Servers auseinandersetzen.
Welche Software?
Wir werden uns im Rahmen dieses Buches den Server ProFTPd ansehen – aber warum ausgerechnet diesen und nicht einen anderen? Prinzipiell steht es Ihnen natürlich frei, jeden Server Ihrer Wahl zu nutzen. ProFTPd ist aber ein einfacher, kleiner Server. Er wurde entwickelt, um sicherer und schneller als andere Programme zu sein. Inwieweit das Projekt nun im Einzelnen diese Ziele erreicht hat, sei einmal dahingestellt; für ein Heimnetzwerk ist ProFTPd aber sicher eine gute Wahl.
[»]Die meisten Systeme verfügen bereits über einen vorinstallierten FTP-Server, den man
nur noch in der Datei (x)inetd.conf freischalten muss. Oftmals steht alternativ auch ein Standalone-Dienst zur Verfügung.
So kann man unter OpenBSD den FTP-Server auch permanent als Dämonprozess laufen lassen,
indem man /usr/libexec/ftpd -D aufruft.
17.6.1 Konfigurationsdateien
Dämon vs. (x)inetd
Der Server ProFTPd wird hauptsächlich über die Datei /etc/proftpd.conf [Fn. Die Datei kann bei Ihrer Distribution natürlich auch an einem anderen Ort liegen.] gesteuert. Bevor man ans Konfigurieren geht, muss man sich aber entscheiden, ob man den Dienst standalone oder über den inetd starten will – in einem Heimnetzwerk ist meistens die inetd-Variante vorzuziehen.
Sollten Sie den ProFTPd über Ihren Paketmanager installiert haben, brauchen Sie also nur noch die Konfigurationsdatei zu suchen und zu editieren. Eventuelle Startskripts im init.d-Verzeichnis und die Einträge in der Datei /etc/inetd.conf sollten dann schon vorhanden sein.
Das folgende Listing zeigt eine Beispielkonfiguration für die Software. Beachten Sie bitte, dass für anonymes FTP ein Benutzer names ftp mit gültigem Homeverzeichnis auf Ihrem System vorhanden sein muss.
Listing 17.24 Beginn einer proftpd.conf
# Dies ist eine einfache Konfiguration für den
# ProFTPd. Sie realisiert einen einfachen, durch
# inetd gestarteten Server mit anonymous Login.
# Der Servername
ServerName "FTP Server"
# inetd oder standalone?
ServerType inetd
DeferWelcome off
Wenn wir uns für den Start über inetd entschieden haben, sollte erstens eine Zeile in der inetd.conf für unseren FTP-Server angelegt werden, und zweitens sollte der inetd auch laufen – sonst wird's nix mit FTP.
Listing 17.25 Fortsetzung von proftpd.conf
# Standardoptionen
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
# Verbindungstimeouts...
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
# Diese Dateien im Homeverzeichnis der User werden
# bei den entsprechenden Aktionen angezeigt:
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Langes Listing bei "ls"
ListOptions "-l"
# Hier kann man "böse" Befehle blockieren.
DenyFilter \*.*/
In diesem Abschnitt wurden nun einige Optionen zum Verhalten des Dienstes konfiguriert. Dazu gehören verschiedene Timeouts ebenso wie Banner, also Textdateien, die beim Eintritt in bestimmte Verzeichnisse ausgegeben werden.
Listing 17.26 Port und Rechte
# Port 21 ist der Standard-FTP-Port
Port 21
# Um Denial-of-Service-Attacken gegen den Server
# vorzubeugen, werden hier nicht mehr als 30
# Verbindungen zu einem bestimmten Zeitpunkt
# erlaubt. Das funktioniert allerdings nur bei
# "ServerType standalone", ansonsten muss dies über
# den inetd geregelt werden.
MaxInstances 30
# Benutzer- und Gruppenrechte für den Server setzen
User nobody
Group nogroup
Die Wahl des Ports spielt nur nur bei Standalone-Servern eine Rolle. Wird der Dienst durch den inetd gestartet, so legt man in der entsprechenden Zeile der Konfigurationsdatei den Port fest, zu dem der Client anschließend eine Verbindung aufbauen kann. Der FTP-Dienst selbst wird erst dann aufgerufen, wenn die Verbindung bereits besteht.
Listing 17.27 Die Freigaben
# Standardeinstellung für Benutzerverzeichnisse
<Directory /*>
# Die umask für Dateien und Verzeichnisse setzen
Umask 022 022
# Dateien sollen überschreibbar sein
AllowOverwrite on
</Directory>
# Eine einfache Konfiguration für anonymes FTP
<Anonymous \~{}ftp>
User ftp
Group nogroup
# Benutzer sollen sich sowohl mit "ftp" als auch
# mit "anonymous" einloggen können.
UserAlias anonymous ftp
# Benutzer "ftp" braucht keine Shell in der
# /etc/passwd
RequireValidShell off
# Maximale Anzahl von anonymen Logins
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message
# überall das Schreiben verbieten
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
# Für ein Upload-Verzeichnis sollten Sie die
# folgenden Zeilen entkommentieren.
# <Directory incoming>
# Umask 022 022
# # Lesen und ändern verboten...
# <Limit READ WRITE>
# DenyAll
# </Limit>
# # ...aber Hochladen erlaubt
# <Limit STOR>
# AllowAll
# </Limit>
# </Directory>
</Anonymous>
Durch diese Freigaben ist folgendes Szenario definiert: Alle lokal existierenden Benutzer können sich auch via FTP mit ihrer Benutzerkennung samt Passwort einloggen und erhalten so Zugriff auf ihr Home-Verzeichnis. Zusätzlich kann man sich anonym einloggen, hat dann aber nur lesenden Zugriff auf das Home-Verzeichnis des ftp-Users.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.