FTP-Server unter Debian einrichten

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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:

  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


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 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.

Icon-Twitter.png 

Das könnte Sie auch interessieren

Debian installieren
Debian Server mittels Munin überwachen
NIC Bonding unter Debian