Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
linux:ftp [2014-04-05 11:42] |
linux:ftp [2014-04-05 11:42] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Einrichten des FTP-Servers ====== | ||
+ | ===== Sichere Verbindung per TLS ===== | ||
+ | Verwendet wird //proftpd//. Die Konfiguration liegt unter ///etc/proftpd/proftpd.conf//. | ||
+ | Zunächst sollte der Name des Servers geändert und TSL aktiviert werden: | ||
+ | <code ini> | ||
+ | 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> | ||
+ | </code> | ||
+ | |||
+ | ===== FTP-Benutzer ===== | ||
+ | Dann können die Benutzer eingerichtet werden, die sich mit dem Server verbinden können sollen: | ||
+ | <code ini> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | ===== Logging ===== | ||
+ | Zuletzt kann noch das Logging aktiviert werden (hier ist schon eine Logdatei zur Auswertung mit //awstats// integriert): | ||
+ | <code ini> | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | ===== Berechtigungen ===== | ||
+ | Wichtig ist jetzt noch das korrekte Einrichten der Benutzer. Grundsätzlich werden die Benutzer als [[grundkonfiguration#benutzerverwaltung_und_dateirechte|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. | ||
+ | <code ini>Umask 077 077</code> | ||
+ | |||
+ | Lädt ein Benutzer Webseiten hoch (Home unter ///var/www//), so benötigt der [[apache2|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: | ||
+ | <code ini> | ||
+ | <Directory /var/www/fussballtipp> | ||
+ | Umask 027 027 | ||
+ | </Directory> | ||
+ | </code> | ||
+ | |||
+ | 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: | ||
+ | <code ini> | ||
+ | <Limit SITE_CHMOD> | ||
+ | DenyAll | ||
+ | </Limit> | ||
+ | </code> |