Anlegen des Anonymous-UsersUm den FTP-Dienst auch für Leute zur Verfügung zu stellen, die keineZugriffsberechtigung auf den Server besitzen, wird ein anonymer Usernamens ftp eingerichtet. Er erhält eineigenes Home-Verzeichnis, das beim Betrieb mit dem chroot()-Systemaufrufzum Hauptverzeichnis dieses Benutzers wird. Er hat also nur eine eingeschränkteSicht auf das System. Ein weiterer wichtiger Aspekt: Es darf nichtmöglich sein, sich als Anonymous an einen anderen Unix-Dienstanzumelden, oder sogar mit einer Shell Befehle abzusetzen. Dies wäreeine grobe Verletzung der Systemsicherheit. Der Eintrag zum Anlegendieses Benutzers in der Datei /etc/passwdlautet:ftp:*:40:2:Anonymous FTP user:/home/ftp:/bin/false Bitte darauf achten, daß /bin/falsein der Datei /etc/shells verzeichnet ist. Nachdem der Benutzer eingetragen wurde, muß in seinem Home-Bereicheine bestimmte Verzeichnisstruktur erstellt werden. Durch die Einschränkungder Sicht auf den Dateibaum darf aber nicht die Funktionalität desFTP-Prozesses behindert werden, besonders nicht durch fehlende Bibliothekenoder Hilfsprogramme. Zu diesem Zweck wird zunächst das Home-Verzeichnisangelegt: /home/ftp In diesem Verzeichnis müssen nun diejenigen Subdirectories angelegtwerden, die das System nach dem Change Root noch erwartet oder die
FTP benötigt. Dies sind:
- bin/ für ausführbare Dateien
- /usr/bin/ für ausführbare Dateien
- lib/ für dynamische Bibliotheken
- etc/ für Paßwort- und Gruppendatei
- pub/ für das eigentliche Archiv
- dev/ für Gerätedateien
- msgs/ für Meldungsdateien
Darüber hinaus ist es möglich, daß bestimmte Betriebssysteme noch
weitere Verzeichnisse benötigen. Unter Linux stellt sich der
Vezeichnisbaum folgendermaßen dar:
total 7
d--x--x--x 2 root root 1024 Jan 25 18:01 bin
dr-xr-xr-x 2 root root 1024 Jan 25 18:01 dev
d--x--x--x 2 root root 1024 Jan 25 18:01 etc
dr-xr-xr-x 2 root root 1024 Jan 25 18:01 lib
dr-xr-xr-x 2 root root 1024 Jan 25 18:01 msgs
dr-xr-xr-x 2 root root 1024 Feb 3 15:58 pub
d--x--x--x 3 root root 1024 Nov 11 1999 usr
bin:
total 1012
-r-xr-xr-x 1 root root 233736 Nov 11 1999 compress
-r-xr-xr-x 1 root root 366272 Nov 11 1999 ls
-r-xr-xr-x 1 root root 427792 Nov 11 1999 tar
dev:
total 0
crw-rw-rw- 1 root root 1, 3 Nov 11 1999 null
etc:
total 2
-r--r--r-- 1 root root 31 Apr 21 1996 group
-r--r--r-- 1 root root 38 Apr 21 1996 passwd
lib:
total 0
msgs:
total 2
-r--r--r-- 1 root root 61 Mai 7 1996 msg.dead
-r--r--r-- 1 root root 661 Feb 3 16:13 welcome.msg
pub:
total 0
usr:
total 1
d--x--x--x 2 root root 1024 Jan 25 18:01 bin
usr/bin:
total 722
-r-xr-xr-x 1 root root 365652 Nov 11 1999 gzip
-r-xr-xr-x 1 root root 366272 Nov 11 1999 ls
Gerade bei anonymem Zugriff spielen auch die Zugriffsrechte eine wichtige Rolle.
Keines der Verzeichnisse und keine der Dateien sollten dem User ftp
gehören. Auch Schreibrecht darf nirgendwo existieren.
Nachdem nun die Verzeichnisstruktur erzeugt ist, müssen noch einige
Dateien angelegt werden, die Unix zum Betrieb benötigt. Im Verzeichnis bin/ muß sich von den ausführbaren Programmen nur
der ls-Befehl befinden.
Im etc/ -Verzeichnis befinden sich die Paßwortdatei und die
Gruppendatei. Die Dateien passwd und group sind
"`Spieldateien"', in der lediglich die Eigentümer der Dateien im
FTP-Verzeichnis eingetragen sind, damit beim ls-Kommando
nicht nur numerische User- und Gruppen-IDs angezeigt werden.
In passwd sollen nur diejenigen Einträge erscheinen, die
für den Anonymous-Betrieb sinnvoll sind:
root:*:0:0::/:/bin/false
bin:*:2:2::/:/bin/false
ftp:*:40:100::/:/bin/false
ftpadm:*:99:100::/:/bin/false
Auch etc/group hat nur wenige Einträge:
users:x:100:root
bin:*:2:root
root:*:0:root
In das lib-Verzeichnis kommen alle benötigten Libraries - was bei manchen
Distributionen nicht immer vollständig geschieht. Sie können mit dem Kommando ldd <Programmname> feststellen, welche dynamische Bibliotheken
gebraucht werden. Diese kopieren Sie dann nach lib. Deutliches Zeichen,
daß noch etwas fehlt ist z.B. keine Dateianzeige bei ls.
Abschließend sind für den gesamten Verzeichnisbaum noch geeignete
Zugriffsrechte und Eigentümer zu setzen. Die Dokumentation schlägt
hier Vorgabewerte vor, die in der folgenden Tabelle aufgelistet sind und die man
auch am obigen Dateilisting sehen kann. Das Verzeichnis lib/ ist
normalerweise leer. Nur wenn dynamisch gelinkte Versionen von ls und
anderen Programmen verwendet werden, kommen hier die passenden Libraries hinein.
Mit dem Kommando ldd kann man herausbekommen, welche Libraries ein
Programm benötigt.
Verzeichnis/Datei | Eigentümer | Rechte |
/home/ftp | root:root | Mode 555 |
bin/ | root:root | Mode 111 |
etc/ | root:root | Mode 111 |
pub/ | root:root | Mode 555 |
bin/ls | root:root | Mode 111 |
etc/group | root:root | Mode 444 |
etc/passwd | root:root | Mode 444 |
Achten Sie auch darauf, daß alle Dateien, die der ftpd erreichen muß,
auch innerhalb des ftp-Verzeichnisses angeordnet sind. Beim anonymen Login wird ja
ein chroot() ausgeführt, so daß nur noch das ftp-Verzeichnis
sichtbar ist.
|