FTP-Server unter Debian einrichten

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

ProFTPD ist ein weit verbreiteter, gut konfigurierbarer FTP Server für UNIX-basierte Betriebssysteme. Dieser Artikel zeigt die Installation und Konfiguration von ProFTPD 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 Wheezy 7.7 verwendet.

Installation

ProFTPD Konfiguration: ProFTPD kann entweder per inetd oder standalone gestartet werden.
ProFTPD ist bereits in den Debian Wheezy Paketquellen enthalten und wird somit bequem mit folgendem Kommando installiert:
sudo apt-get install proftpd-basic

Bei der Installation wird abgefragt ob der FTP-Server als Dienst von inet.d oder eigenständig (standalone) gestartet werden soll. In diesem Beispiel wird die Option standalone gewählt.

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 service proftpd restart

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/2.4.3

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-get 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 997 Oct 30 08:25 /etc/ssl/certs/ssl-cert-snakeoil.pem
$ sudo ls -la /etc/ssl/private/ssl-cert-snakeoil.key
-rw-r----- 1 root ssl-cert 1704 Oct 30 08:25 /etc/ssl/private/ssl-cert-snakeoil.key

TLS konfigurieren

Das aktuelle ProFTPD Debian Paket in der Version 1.3.4a-5+deb unterstützt nur TLSv1, jedoch kein v1.1 oder v1.2. Dies ist erst ab der Version 1.3.5 möglich.[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
        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:

  1. ProFTPD Dienst läuft: $ sudo service proftpd status
  2. ProFTPD lauscht auf Port 21: $ sudo netstat -tlp|grep proftp
  3. Fehlermeldungen im ProFTPD Log: $ sudo tail -20 /var/log/proftpd/proftpd.log
  4. Fehlermeldungen im ProFTPD TLS Log: $ sudo tail -20 /var/log/proftpd/tls.log
  5. Verbindungstest auf Port 21 mit telnet: $ telnet 192.0.2.10 21
  6. 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

Einzelnachweise

  1. ProFTPD 1.3.5 Release Notes (www.proftpd.org)
  2. #707680 proftpd-basic: mod_tls_memcache/0.1 unable to register 'memcache' SSL session cache (Debian Bug Report)


Foto Georg Schönberger.jpg

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.


Foto Thomas Niedermeier.jpg

Autor: Thomas Niedermeier

Thomas Niedermeier, Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn, absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich hier vor allem um das TKwiki. Er ist ein begeisterungsfähiger, technisch interessierter Linux und Mac Nutzer und fährt im Winter gerne Ski.


Das könnte Sie auch interessieren

Festplatte formatieren / partitionieren und mounten unter Debian Linux
HTTP und HTTPS Proxy mit Pound, Varnish und Apache unter Debian
Installation von VMware Server 2 unter Debian Lenny