Installation ProFTPD Server

[img_assist|nid=59|title=ProFTPD Logo|desc=|link=none|align=left|width=100|height=43]

Installation und Konfiguration:

Als erstes sollten, wie bei jeder Installation die apt-Quellen upgedatet werden. Das geschieht wie gehabt über den Befehl apt-get update. Danach wird der ProFTP-Server über den Befehl apt-get install proftpd installiert. Im Dialog nach der Frage der Startart des FTP-Server wähle ich inetd, da die Anwendung nur eine sporadische Nutzung vorsieht.

FTP-User sollen in der Regel keine normale Systemshell bekommen. Daher empfielt es sich eine pseudo-Shell namens /bin/ftp anzulegen. Dies geschieht mit folgenden Kommandos:


cp /bin/false /bin/ftp
echo "/bin/ftp" >> /etc/shells

Für die spätere Benutzung lege ich an dieser Stelle das Verzeichnis /home/ftphome, die Benutzergruppen ftpuser und ftpadmin, sowie den User ftpadmin an:


mkdir /home/ftphome
addgroup ftpuser
addgroup ftpadmin
useradd -d /home/ftphome/ftpadmin -G ftpadmin -s /bin/ftp ftpadmin

Die zentrale Konfigurationsdatei des ProFTP-Server heißt /etc/proftpd.conf. Ich möchte allerdings nur auf die Parameter eingehen, die ich gebraucht habe. Wer zusätzliche Informationen benötigt, dem sei die Homepage des Projektes www.proftpd.org ans Herz gelegt.

/etc/proftpd.conf

#beliebiger Name
ServerName "FTP-Server"

#Anmeldung nur für Gruppenmitglieder der aufg. Gruppen

DenyGroup !ftpuser, !ftpadmin

#Root-Login verbieten, User eine Shell auf dem Server haben

RootLogin off
RequireValidShell on

#Berechtigungen für Homeverzeichnisse setzen


DenyAll


Diese Einstellungen haben folgende Auswirkungen:

Jeder User, der den FTP-Server benutzen möchte, muss vorher auf dem System erstellt worden und Mitglied der Gruppe ftpuser sein. Bei einer Verbindung wird ihm automatisch sein persönliches Home-Verzeichnis auf dem Server angezeigt, aus dem er nicht wechseln kann. In diesem Verzeichnis darf er dann laut den Direktiven MKD, RMD und DELE Dateien und Verzeichnisse erstellen und löschen. Für weitere Direktiven möchte ich hier auf http://www.proftpd.de/Direktiven.54.0.html verweisen.

FTP-User anlegen:

An dieser Stelle kommt das Script addftpuser.sh ins Spiel. Es verpasst dem neuen Benutzer gleich ein entsprechendes Home-Verzeichnis unter /home/ftphome, fügt ihn der Gruppe ftpuser zu und weist ihm die Pseudoshell /bin/ftp zu.

Folgende Zeilen kopiere ich einfach in eine neue Datei namens addftpuser.sh und mache sie mit chmod 700 addftpuser.sh für root ausführbar:


#!/bin/bash
echo -n "Bitte Benutzernamen eingeben: "
read username
echo "Erstelle Benutzer $username..."
useradd -d /home/ftphome/$username -G ftpuser -s /bin/ftp $username
echo "Erstelle Homeverzeichnis..."
mkdir /home/ftphome/$username
echo "Setze Benutzerberechtigungen..."
chown $username:ftpadmin /home/ftphome/$username
chmod 770 /home/ftphome/$username
echo "Setze Passwort fuer neuen Benutzer..."
passwd $username

Sämtliche neu erstellten Userverzeichnisse bekommen so als Gruppeneigentümer die Gruppe ftpadmin. Das hat den Vorteil, dass ich mich mit dem User ftpadmin am FTP-Server anmelden kann und munter zwischen den unterschiedlichen Verzeichnissen wechseln kann, um z.B. Dateien zum Download bereit zu stellen. Hierfür hat sich insbesondere das Programm Filezilla empfohlen.

Wartung:

Das zweite Script dient dem Löschen von Dateien, die älter als eine bestimmte Anzahl von Tagen ist. Bei einer überschaubaren Anzahl von Dateien ist das Script vielleicht hinfällig, allerdings ist dann ein manueller Eingriff von Nöten.


#!/bin/bash
find /home/ftphome -type f -mtime +14 -exec rm \{} \;

Diese Anweisung löscht alle Dateien unterhalb von /home/ftphome, die älter sind als 14 Tage. 14 ist hier natürlich nur ein Beispiel. Damit dieses Script auch automatisch ausgeführt wird, erstelle ich einen crontab Eintrag, der mein Script delftpfiles.sh jede Nacht um 0 Uhr ausführt.


0 * * * * /root/delftpfiles.sh

Zum Schluß noch mit einem /etc/init.d/proftpd restart den FTP-Server neu starten und schon kann es losgehen.

Diese Installation habe ich auf einem Debian-Server durchgeführt. Allerdings sollte sich das Vorgehen auch auf andere Distributionen anwenden lassen (insbesondere Distributionen, die Debian Paketmanager APT nutzen, z.B. Ubuntu).

Ubuntukernel optimieren

Bei der Standardinstallation wird bei Ubuntu der i386 Kernel installiert, der sicherlich auf den meisten System funktioniert, aber nicht das optimale an Leistung bringt.

Der Befehl uname -r auf der Konsole gibt den aktuell laufenden Kernel aus. Erscheint hier etwas wie 2.6.15-22-386, dann gibt es möglicherweise Verbesserungspotenzial.
Mit cat /proc/cpuinfo prüft man, welche CPU auf dem Mainboard steckt.

Die entsprechende Ausgabe liefert alle Informationen über den verbauten Prozessor. Im Wesentlichen interessieren hierbei die Werte vendor_id und model name.

Mit den obigen Informationen geht es jetzt weiter zum nächsten Schritt: die Installation des angepassten Kernel für den entsprechenden CPU-Typ. Folgende Befehle veranlassen den Paketmanager APT die passenden Kernel zu installieren:
Für einen AMD Athlon (K7):
sudo apt-get install linux-k7 linux-restricted-modules-k7

Für einen AMD Athlon 64:
sudo apt-get install linux-amd64-k8 linux-restricted-modules-amd64-k8

Für einen Intel P4 oder Pentium:
sudo apt-get install linux-686 linux-restricted-modules-686

Der Kernel wird automatisch beim nächsten Reboot vom Bootmanager GRUB geladen (ggfls. mit uname -r überprüfen).