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:
- Anonyme Benutzer können beliebige Dateien auf ftp://caipirinha.homelinux.org/upload/ hochladen, aber sie können dieses Verzeichnis weder ansehen noch Dateien von diesem Verzeichnis herunter laden.
- Anonyme Benutzer können eine dedizierte Datei mit dem Namen Datei von ftp://caipirinha.homelinux.org/download/Dateiname herunter laden. Sie können aber nicht den Inhalt des Verzeichnisses ftp://caipirinha.homelinux.org/download/ ansehen und auch nichts auf dieses Verzeichnis hochladen.
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 yesPosted on: 2010-07-30Gabriel Rüeck