FTP-Server unter Debian einrichten
ProFTPD ist ein weit verbreiteter, gut konfigurierbarer FTP Server für UNIX-basierte Betriebssysteme. Dieser Artikel zeigt die Installation und Konfiguration von ProFTPD in der Version 1.3.5b-4 unter Debian Linux. Im gezeigten Beispiel wird eine TLS Verschlüsselung am FTP Server konfiguriert, um die Kommunikation zwischen FTP Client (z.B. FileZilla) und dem FTP Server ProFTPD zu verschlüsseln. Als Testsystem wurde Debian Stretch 9 verwendet.
Installation
Die Installation von ProFTPD ist über die in Debian integrierte Paketverwaltung zügig erledigt.
sudo apt install proftpd-basic
Falls das Paket nicht gefunden werden kann, aktualisieren Sie die Paketquellen:
sudo apt update
Wenn das Paket danach immer noch nicht installiert werden kann, überprüfen Sie die Datei /etc/apt/sources.list, es könnte ein Problem mit dem konfigurierten Debian Mirror Server vorliegen.
Konfiguration
Im Folgenden wird die Konfiguration des ProFTPD Servers beschrieben. Das Verzeichnis /etc/proftpd/
enthält grundsätzlich die Konfigurationsdateien von ProFTPD.
Eigene Konfigurationsdateien werden aber am besten im Verzeichnis conf.d
abgelegt. Bei Paket-Aktualisierungen bleiben die Dateien in diesem Verzeichnis unberührt. Per include Direktive werden alle Dateien im conf.d
Verzeichnis in der proftpd.conf eingebunden.
In diesem Beispiel wird die Datei custom.conf
für die Anpassungen des ProFTPD Servers verwendet, damit die Konfiguration wirksam wird:
$ sudo vi /etc/proftpd/conf.d/custom.conf
# Ftp user doesn't need a valid shell <Global> RequireValidShell off </Global> # If desired turn off IPv6 UseIPv6 off # Default directory is ftpusers home DefaultRoot ~ ftpuser # Limit login to the ftpuser group <Limit LOGIN> DenyGroup !ftpuser </Limit>
Anschließend wird die Datei gespeichert und der ProFTPD Server neu gestartet:
$ sudo systemctl restart proftpd.service
SSL/TLS-verschlüsselte FTP-Verbindung mit mod_tls
Das TLS Modul ermöglicht eine verschlüsselte Verbindung über SSL/TLS zum ProFTPD Server.
Achtung: Ohne Verschlüsselung überträgt das FTP-Protokoll sowohl Login- als auch normale Daten im Klartext! Der Einsatz von SSL/TLS wird für Produktivumgebungen daher dringend empfohlen.
Standardmäßig unterstützt ProFTPD das TLS-Modul:
$ sudo proftpd -vv | grep tls mod_tls_memcache/0.1 mod_tls/2.6
Es ist in /etc/proftpd/modules.conf
bereits enthalten und automatisch aktiv.
Zertifikat erstellen
Das folgende Beispiel verwendet als Zertifikat das selbst-signierte Snakeoil Zertifikat des ssl-cert
Packages (siehe Ubuntu default snakeoil SSL-Zertifikat erneuern):
$ sudo apt install ssl-cert $ sudo make-ssl-cert generate-default-snakeoil --force-overwrite $ sudo ls -la /etc/ssl/certs/ssl-cert-snakeoil.pem -rw-r--r-- 1 root root 1021 Sep 29 12:16 /etc/ssl/certs/ssl-cert-snakeoil.pem $ sudo ls -la /etc/ssl/private/ssl-cert-snakeoil.key -rw-r----- 1 root ssl-cert 1704 Sep 29 12:16 /etc/ssl/private/ssl-cert-snakeoil.key
TLS konfigurieren
Das in den Paketquellen von Debian Stretch vorhandene ProFTPD Paket in der Version 1.3.5b-4 unterstützt auch TLSv1.2.[1]
Im conf.d
Verzeichnis wird wiederum eine eigene Konfigurationsdatei für SSL/TLS erstellt:
$ sudo vi /etc/proftpd/conf.d/tls.conf <IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1.2 TLSRSACertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem TLSRSACertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key TLSVerifyClient off TLSRequired on </IfModule>
Anschließend wird ProFTPD neu gestartet.
FTP Benutzer erstellen
Für den FTP Zugriff wird ein eigener Benutzer erstellt, ohne gültiger Login Shell und mit dem Homeverzeichnis /var/www/upload
:
$ sudo adduser ftpuser --shell /bin/false --home /var/www/upload Adding user `ftpuser' ... Adding new group `ftpuser' (1001) ... Adding new user `ftpuser' (1001) with group `ftpuser' ... Creating home directory `/var/www/upload' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully [...]
Anonymous Zugang
Um einen anonymen Lesezugriff zu erlauben wird folgende Datei erstellt:
$ sudo vi /etc/proftpd/conf.d/anon.conf <Anonymous ~ftpuser> User ftp Group ftp # Users can also login with ftp UserAlias anonymous ftp # All files belong to ftp DirFakeUser on ftp DirFakeGroup on ftp RequireValidShell off MaxClients 10 <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>
Damit der Benutzer ftp
auf den anonymen FTP-Bereich zugreifen darf, muss er der Gruppe ftpuser
hinzugefügt werden:
$ sudo adduser ftp ftpuser Adding user `ftp' to group `ftpuser' ... Adding user ftp to group ftpuser Done.
Analyse bei Verbindungsproblemen
Bei Problemen beim Aufbau der FTP Verbindungen können folgende Dinge überprüft werden:
- ProFTPD Dienst läuft:
$ sudo service proftpd status
- ProFTPD lauscht auf Port 21:
$ sudo netstat -tlp|grep proftp
- Fehlermeldungen im ProFTPD Log:
$ sudo tail -20 /var/log/proftpd/proftpd.log
- Fehlermeldungen im ProFTPD TLS Log:
$ sudo tail -20 /var/log/proftpd/tls.log
- Verbindungstest auf Port 21 mit telnet:
$ telnet 192.0.2.10 21
- Verbindungstest auf Port 21 mit TLS:
$ openssl s_client -connect 192.0.2.10:21 -starttls ftp
Meldung: memcache support not enabled
In manchen Fällen kann bei einem Neustart des ProFTPD Servers die folgende Meldung erscheinen:
$ sudo service proftpd restart [ ok ] Stopping ftp server: proftpd. [....] Starting ftp server: proftpddebian proftpd[4856]: mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL session cache: Memcache support not enabled . ok
Hier ist das Problem, dass das Debian Package nicht mit --enable-memcache
kompiliert ist.[2]
Das Modul kann daher auskommentiert werden - eine Raute wird vor der Zeile eingefügt:
$ sudo vi /etc/proftpd/modules.conf [...] # LoadModule mod_tls_memcache.c [...]
Ein anschließender Neustart erfolgt ohne der Memcache Meldung:
$ sudo service proftpd restart [ ok ] Stopping ftp server: proftpd. [ ok ] Starting ftp server: proftpd.
Weitere Informationen
- The ProFTPD Project (www.proftpd.org)
Einzelnachweise
- ↑ ProFTPD 1.3.5 Release Notes (www.proftpd.org)
- ↑ #707680 proftpd-basic: mod_tls_memcache/0.1 unable to register 'memcache' SSL session cache (Debian Bug Report)
Autor: Georg Schönberger Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.
|
Autor: Thomas Niedermeier Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates. |