Verwendet wird proftpd. Die Konfiguration liegt unter /etc/proftpd/proftpd.conf. Zunächst sollte der Name des Servers geändert und TSL aktiviert werden:
ServerName "Stefan Macke"
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/ssl/certs/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.key.pem
TLSVerifyClient off
TLSRequired off
</IfModule>
Dann können die Benutzer eingerichtet werden, die sich mit dem Server verbinden können sollen:
# chroot für alle User der Gruppe ftpusers DefaultRoot ~ ftpusers # Login nur von Mitgliedern der Gruppe ftpusers erlauben <Limit LOGIN> DenyGroup !ftpusers </Limit> # Root-Login verbieten und keine gültige Shell verlangen (in /etc/shells) <Global> RootLogin off RequireValidShell off </Global> # Speed erhoehen UseReverseDNS off IdentLookups off
Zuletzt kann noch das Logging aktiviert werden (hier ist schon eine Logdatei zur Auswertung mit awstats integriert):
# Logging Formate LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v [%P] %h %t \"%r\" %s" LogFormat write "%h %l %u %t \"%r\" %s %b" LogFormat awstats "%t %h %u %m %f %s %b" # Logging aktivieren # alle logins ExtendedLog /var/log/ftp_auth.log AUTH auth # file/dir Zugriff ExtendedLog /var/log/ftp_access.log WRITE,READ write # awstats log ExtendedLog /var/log/awstats_ftp READ,WRITE awstats
Wichtig ist jetzt noch das korrekte Einrichten der Benutzer. Grundsätzlich werden die Benutzer als Systembenutzer ohne Shell angelegt, deren Home-Verzeichnis unter /home/ftp liegt, und auf das nur sie selbst Zugriff haben (700). Das Verzeichnis /home/ftp benötigt jedoch 750, da die Benutzer sonst nicht in ihr Home-Verzeichnis wechseln können.
Die globale Umask sollte wie folgt gesetzt werden, damit neue Dateien und Verzeichnisse alleine dem entsprechenden Benutzer gehören. Auch dieser kann die Dateien jedoch niemals ausführen, da proftpd die Umask von 666 berechnet. Eine Berechtigung zum Ausführen muss explizit per chmod gesetzt werden.
Umask 077 077
Lädt ein Benutzer Webseiten hoch (Home unter /var/www), so benötigt der Webserver, der unter www-data.ftpusers läuft, hierauf Zugriff (Lesen und Ausführen). Dies wird durch eine Direktive für das entsprechende Verzeichnis gewährleistet:
<Directory /var/www/fussballtipp> Umask 027 027 </Directory>
Soll der Benutzer Dateien nicht als ausführbar kennzeichnen bzw. überhaupt keine Berechtigungen setzen können, ist noch folgender Befehl nötig (z.B. auf Directory-Ebene) um das Kommando chmod zu deaktivieren:
<Limit SITE_CHMOD> DenyAll </Limit>