vsftpd + TLS unter Debian Squeeze aufsetzen

Version 1.0
Author: Falko Timme , Christian Schmalfeld <c [dot] schmalfeld [at] projektfarm [dot] de>
Follow me on Twitter

FTP ist ein sehr unsicheres Protokoll, bei dem alle Passwörter und andere Daten in Klartext übertragen werden. Durch Benutzung von TLS wird die gesamte Kommunikation verschlüsselt, wodurch FTP viel sicherer wird. Dieses Tutorial verrät Ihnen, wie Sie vsftpd mit TLS auf Ihrem Debian Squeeze Server aufsetzen.

Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie.

1 Vorbemerkung

In diesem Tutorial benutze ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen werden sich von Ihren unterscheiden, ersetzen Sie sie also an den entsprechenden Stellen.

2 Installation von vsftpd und OpenSSL

TLS benötigt OpenSSL; um vsftpd und OpenSSL zu installieren, führen Sie einfach folgendes aus:

apt-get install vsftpd openssl


3 Erstellen des SSL Zertifikates für TLS

Um TLS benutzen zu können müssen Sie zunächst ein SSL Zertifikat erstellen. Ich erstelle es im /etc/ssl/private Verzeichnis - wenn dieses noch nicht existiert, muss es vorher angelegt werden:

mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private

Im Anschluss generieren Sie wie folgt das SSL Zertifikat:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Country Name (2 letter code) [AU]: <-- Geben Sie hier Ihr Land an (z.B. "DE"). State or Province Name (full name) [Some-State]: <-- Geben Sie hier Ihr Bundesland an. Locality Name (eg, city) []: <-- Geben Sie hier Ihre Stadt an. Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Geben Sie hier den Namen Ihrer Firma an. Organizational Unit Name (eg, section) []: <-- Geben Sie hier Ihre Abteilungsbezeichnung ein (z.B. "IT Abteilung"). Common Name (eg, YOUR name) []: <-- Geben Sie den vollen Domainnamen Ihres Systems an (z.B. "server1.example.com"). Email Address []: <-- Geben Sie Ihre E-Mail Adresse an.

4 TLS in vsftpd aktivieren

Um TLS in vsftpd zu aktivieren, öffnen Sie /etc/vsftpd.conf...

vi /etc/vsftpd.conf

... und fügen Sie die folgenden Optionen hinzu (oder ändern diese, falls sie schon vorhanden waren):
[...]
# Turn on SSL ssl_enable=YES # Allow anonymous users to use secured SSL connections allow_anon_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to # send and receive data on data connections. force_local_data_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to send the password. force_local_logins_ssl=YES # Permit TLS v1 protocol connections. TLS v1 connections are preferred ssl_tlsv1=YES # Permit SSL v2 protocol connections. TLS v1 connections are preferred ssl_sslv2=NO # permit SSL v3 protocol connections. TLS v1 connections are preferred ssl_sslv3=NO # Disable SSL session reuse (required by WinSCP) require_ssl_reuse=NO # Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla) ssl_ciphers=HIGH # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/private/vsftpd.pem [...]
Wenn Sie force_local_logins_ssl=YES und force_local_data_ssl=YES verwenden werden nur TLS Verbindungen erlaubt (dies sperrt alle Benutzer alter FTP Clients aus, die keine TLS Unterstützung haben); bei Benutzung von force_local_logins_ssl=NO und force_local_data_ssl=NO werden sowohl TLS als auch nicht-TLS Verbindungen erlaubt, je nach dem was der FTP Client unterstützt.

Neben den TLS Optionen sollten Sie außerdem sicherstellen, dass Ihre vsftpd.conf folgende Einstellungen zur Erlaubnis von nicht-anonymen Logins beinhaltet:
[...]
# Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) local_umask=022 [...] # You may restrict local users to their home directories. See the FAQ for # the possible risks in this before using chroot_local_user or # chroot_list_enable below. chroot_local_user=YES [...]
Starten Sie vsftpd danach neu:

/etc/init.d/vsftpd restart

Das war es. Sie können sich nun mit Ihrem FTP Client verbinden, allerdings sollten Sie ihn so konfigurieren, dass er TLS benutzt (dies ist Pflicht, wenn Sie force_local_logins_ssl=YES und force_local_data_ssl=YES benutzen) - im nächsten Kapitel wird beschrieben, wie Sie dies in FileZilla tun.

5 Konfiguration von FileZilla für TLS

Um FTP mit TLS zu benutzen brauchen Sie einen FTP Client, der TLS unterstützt, wie zum Beispiel FileZilla.

Öffnen Sie in FileZilla den Servermanager:


Wählen Sie den Server aus, der vsftpd mit TLS benutzt; im Servertype Drop-down Menü wählen Sie FTPES anstatt von FTP:


Nun können Sie sich mit dem Server verbinden. Tun Sie dies zum ersten Mal, müssen Sie zunächst das neue SSL Zertifikat akzeptieren:


Läuft alles glatt, sollten Sie nun im Server angemeldet sein:

6 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte