FTP

Als effizientes Protokoll zum Austausch von Binärdaten ist FTP noch immer die beste Lösung. Deshalb läuft auch auf dem Caipirinha-Server ein FTP-Server. Aus Sicherheitsgründen wird allerdings nur anonymous ftp angeboten, so dass kein Benutzer auf die Idee kommt, seinen Usernamen und sein Passwort über eine ungeschützte Internet-Verbindung zu schicken. Auf der anderen Seite muss natürlich auch vermieden werden, dass durch Unachtsamkeit ein für alle offener Dateiaustausch-Server entsteht, auf dem dann wildfremde Benutzer ihre Audio- und Videodateien verteilen.

Deshalb wird eine Dateistruktur erstellt, die folgende Vorgehensweisen erlaubt:

Um die Ordnerstruktur anzulegen, wird zunächst in /home ein Ordner ftp mit folgendem Eigentümer und Berechtigung angelegt:

drwxr-xr-x  root  root     ftp

Das Verzeichnis wird nämlich das Home-Verzeichnis des Benutzers ftp werden. Es soll dennoch nicht dem Benutzer ftp, sondern root gehören, weil sonst jeder, der sich mit dem FTP-Server verbindet, eine x-beliebige Datei in diesem Verzeichnis ablegen kann.

Danach wird in /home/ftp diese Struktur angelegt:

-rw-r--r--  root  root     .banner
d--xrwsrwx  ftp   users    download
-rw-r--r--  root  root     readme.txt
d-wxrwsr-x  ftp   users    upload

.banner ist dabei eine Textdatei, welche Informationen über den FTP-Server enthält, die dann angezeigt werden, wenn sich ein Benutzer über ein Shell-basiertes FTP-Programm am Server anmeldet. readme.txt wird angezeigt, falls der Benutzer sich über einen Browser mit ftp://caipirinha.homelinux.org/ verbindet. Im Prinzip sollten .banner und readme.txt den gleichen Inhalt haben und die Funktionsweise des FTP-Servers erläutern. Beide Dateien gehören dem Benutzer root, so dass sie nicht durch den FTP-Server selbst verändert werden können.

Der Ordner download ist für die Gruppe users und für others beschreibbar, so dass diese Gruppen dort Dateien ablegen können. Im Prinzip reicht es aus, wenn er für die Gruppe users zugänglich ist. Hier beim Caipirinha-Server wurde er nur deswegen noch für die Gruppe others zugänglich gemacht, damit PHP-Skripte Dateien erzeugen und über den FTP-Server zum Download anbieten können. Da aber im Allgemeinen PHP-Skripte von Apache ausgeführt werden, laufen diese unter der Kennung wwwrun:www, und deswegen muss der Ordner download für others zugänglich sein. Der Benutzer ftp darf lediglich in diesen Ordner verzweigen, nicht aber dessen Inhalt lesen. Damit erreicht man, dass der Dateinamen bekannt sein muss, damit die Datei herunter geladen werden kann. Bei ausreichend kryptischen Dateinamen stellt dies einen einfachen, wenn auch nicht sicheren Schutz vor einem unberechtigten Download dar.

Der Ordner upload ist sowohl für den Benutzer ftp als auch für die Grupper users beschreibbar, für others lediglich lesbar. Der Benutzer ftp kann lediglich in den Ordner schreiben, aber nicht daraus lesen, weil sonst jemand unzulässigerweise einen Dateiaustausch-Server aufsetzen könnte. Die Gruppe users hat Schreibrechte, so dass ein Benutzer eine hochgeladene Datei nach der Verarbeitung löschen kann. others haben Leserechte, so dass beispielsweise PHP-Skripte über FTP hochgeladene Dateien verarbeiten können.

Auf dem Caipirinha-Server wird der FTP-Server pure-ftp eingesetzt, weil dieser mit nur einer Konfigurationsdatei auskommt und wenige Sicherheitsprobleme bereitet. Zur Installation von pure-ftp wird so vorgegangen:

  • Das Paket pure-ftpd installieren.
  • Die Ordnerstruktur aufsetzen, so wie sie oben beschrieben worden ist.
  • Die Konfigurationsdatei /etc/pure-ftpd/pure-ftpd.conf anpassen, so wie es im unten stehenden Listing dargestellt ist.
  • Nun muss für den Benutzer ftp noch das Home-Verzeichnis auf /home/ftp umgestellt werden. Die Login-Shell sollte aus Sicherheitsgründen deaktiviert werden, so dass für den Systembenutzer ftp letztendlich gilt:
ftp:x:40:49:FTP account:/home/ftp:/bin/false
  • pure-ftp with /etc/init.d/pure-ftpd starten.

Im Vergleich zur Original-Konfigurationsdatei /etc/pure-ftpd/pure-ftpd.conf haben sich die folgenden, selbsterklärenden Parameter geändert:

MaxClientsNumber            10
MaxClientsPerIP             10
AllowDotFiles               no
DisplayDotFiles             no
AnonymousOnly               yes
NoAnonymous                 no
SyslogFacility              none
MaxIdleTime                 15
LimitRecursion              2000 8
AnonymousCanCreateDirs      no
MaxLoad                     10
AntiWarez                   yes
ProhibitDotFilesWrite       yes
ProhibitDotFilesRead        yes
AutoRename                  yes
AnonymousCantUpload         no
AltLog                      clf:/var/log/pureftpd.log
NoChmod                     yes
KeepAllFiles                yes
MaxDiskUsage                90
NoRename                    yes
Posted on: 2010-07-30Gabriel Rüeck