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 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:
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:
# 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>
Alles anzeigen
Anschließend wird die Datei gespeichert und der ProFTPD Server neu gestartet:
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:
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:
<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
[...]
Alles anzeigen
Anonymous Zugang
Um einen anonymen Lesezugriff zu erlauben wird folgende Datei erstellt:
<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>
Alles anzeigen
Damit der Benutzer ftp auf den anonymen FTP-Bereich zugreifen darf, muss er der Gruppe ftpuser hinzugefügt werden: