1897907

Sensible Daten über FTP senden? Aber sicher!

24.08.2014 | 10:16 Uhr |

Das Protokoll FTP ist zum Übertragen von Dateien unschlagbar schnell, dafür aber völlig unverschlüsselt. FTP plus SSL/TLS schafft als FTPS sichere Übertragungswege.

Was im eigenen lokalen Netzwerk oder im VPN über die Leitung geht, ist vor fremden Augen sicher. Eine Verschlüsselung von Anmeldedaten ist selten nötig, solange alle anderen Netzwerk-Clients vertrauenswürdig sind. Ganz anders sieht es aus, wenn die Daten über eine Internetverbindung oder zunächst über ein öffentliches LAN/WLAN gehen: Im öffentlichen Netzwerk kann jeder andere Teilnehmer unverschlüsselten Netzwerk-Traffic über Tools wie Wireshark mitschneiden und Anmeldedaten im Klartext lesen. Und auch die Vorstellung, dass Nachrichtendienste die Möglichkeit haben, Daten im großen Stil direkt an den Internet Exchange Points (IX) abzugreifen, ist keine angenehme Vorstellung – trotz aller Beteuerungen, dass diese Überwachung nur dem allgemeinen Wohl dient. Paranoia hat Hochkonjunktur, nur schien sie selten so angebracht zu sein wie jetzt. Sicher verschlüsselnde Protokolle sind eine Antwort auf die rhetorische Frage, wie sicher übertragene Daten im Internet und in öffentlichen Netzwerken sind.

Was FTPS anders macht

FTP hat sich seit der Dämmerung des Internets als einfaches Client-Server-Protokoll für Dateioperationen gehalten. Es erlaubt eine Benutzeranmeldung mit Namen und Passwort sowie eine anonyme Nutzung ohne eindeutiges Log-in. Eine weitere Besonderheit ist, dass es einen aktiven und passiven Modus unterstützt: Im aktiven Modus initiiert der Client über TCP zum Server eine Verbindung auf dem dortigen Port 21, die zur Übertragung der Kontrollbefehle dient. Zur eigentlichen Datenübertragung baut der Server zum Client einen Rückkanal auf. Da dies nicht immer funktioniert, weil der Client etwa hinter einer Firewall sitzt, gibt es auch passives FTP. Dazu laufen Kontroll- und Datenverbindungen auf einem einzigen Port zum Server, und der Client braucht keine eingehenden Verbindungen zu akzeptieren. FTPS behält dieses Konzept bei, nur mit dem Unterschied, dass die Kanäle wie bei HTTPS mit einem Public-Key-Verfahren über TLS (Transport Layer Security) oder dem älteren SSL (Secure Socket Layer) verschlüsselt werden.

Mit diesen Tools bleiben Sie anonym im Web

Zertifikat selbst gemacht: Für SSL/TLS brauchen Sie keine kostenpflichtige CA. Auf dem eigenen Server genügt ein selbst signiertes Zertifikat, das Sie sich auf diesem Weg ausstellen.
Vergrößern Zertifikat selbst gemacht: Für SSL/TLS brauchen Sie keine kostenpflichtige CA. Auf dem eigenen Server genügt ein selbst signiertes Zertifikat, das Sie sich auf diesem Weg ausstellen.

Vorbereitung: Die Zertifikate erstellen

Die Zertifikate für TSL/SSL sind die gleichen wie bei Webservern, und es gelten dieselben Anforderungen: Im Falle eines öffentlichen Hosts, der bereits über ein CT-Signiertes Zertifikat verfügt, kann das gleiche Zertifikat zum Einsatz kommen. Auch selbst signierte Zertifikate sind völlig in Ordnung – vorausgesetzt, es werden nur sichere Verschlüsselungsmethoden verwendet. Nicht alle Methoden gelten als sicher, so etwa RC4, RC2. Ein selbst signiertes Zertifikat kann auf dem FTP-Server mit Open SSL erstellt werden, das bei den meisten Distributionen vorinstalliert ist. In Debian und Ubuntu wird es, falls noch nicht vorhanden, als root oder mit vorangestelltem sudo mittels sudo apt-get install openssl installiert. Ein guter Speicherort für SSL-Zertifikate ist das Verzeichnis „/etc/ssl/certs/“, das auf vielen Distributionen bereits besteht.

Führen Sie folgenden Befehl

/usr/bin/openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/certs/ftps.pem -out /etc/ssl/certs/ftps.pem

mit root-Rechten beziehungsweise sudo aus: Damit erstellen Sie ein selbst signiertes Schlüsselpaar, bei dem das lokale System gleichzeitig als CA fungiert (Zertifizierungsstelle, Certification Authority). Die Rückfragen können Sie beliebig ausfüllen, nur den Host-Namen (FQDN) müssen Sie korrekt angeben. Bei Servern im Internet ist dies der Domain- Name, im LAN einfach der selbst vergebene Rechnername.

FTPS mit dem Server vsftpd

Nun fehlt noch ein FTP-Server, der Verschlüsselung nach SSL/TLS unterstützt. Ein empfehlenswerter und weit verbreiteter FTP-Server für Linux ist vsftpd. Dieser benötigt für FTPS nur eine kleine Anpassung der Konfiguration. Falls das Programm noch nicht installiert ist, finden Sie das Paket als „vsftpd“ in den Paketquellen aller wichtigen Linux-Distributionen. Nach der Installation bearbeiten Sie die Konfigurationsdatei „/etc/vsftpd.conf“ mit root-Rechten und schalten dort mit der Zeile

ssl_enable=YES

SSL/TLS ein. Ferner machen Sie mit

force_local_logins_ssl=YES force_local_data_ssl=YES

die Verschlüsselung für alle nicht-anonymen Anmeldungen und für die Datenübertragung verbindlich. Als Nächstes definieren Sie mit

ssl_sslv2=NO ssl_sslv3=NO ssl_tlsv1=YES ssl_ciphers=HIGH

die erlaubten SSL/TLS-Versionen, wobei in diesem Beispiel nur noch das neuere TLS 1.0 zum Einsatz kommt. Schließlich fehlt noch die Angabe des vorher mit Open SSL erzeugten Schlüssels:

rsa_cert_file=/etc/ssl/certs/ftps.pem

Damit die geänderte Konfiguration aktiv wird, starten Sie vsftpd anschließend neu. Unter Debian/Ubuntu verwenden Sie dafür als root oder mit sudo folgendes Kommando:

/etc/init.d/vsftpd restart

Um die FTPS-Verbindung zu testen, ist unter Linux, Windows und Mac-OS X das Open-Source-Programm Filezilla bestens geeignet.

Konfiguration für vsftpd: Diese Beispieleinstellungen in der Datei „/etc/vsftpd.conf“ bringen dem verbreiteten FTP-Server verschlüsseltes (explizites) FTPS bei, hier mit dem sicheren TLS 1.0.
Vergrößern Konfiguration für vsftpd: Diese Beispieleinstellungen in der Datei „/etc/vsftpd.conf“ bringen dem verbreiteten FTP-Server verschlüsseltes (explizites) FTPS bei, hier mit dem sicheren TLS 1.0.

Explizites und implizites FTPS

Aus historischen Gründen unterstützt FTPS zwei Varianten des Protokolls: explizites SSL/TLS und implizites SSL/TLS. In der ersten Variante muss der Client explizit vor der Übermittlung von Log-in-Daten eine Verschlüsselung verlangen. Dies ist der Standard bei der im Haupttext gezeigten Konfiguration von vsftp. Impliziertes SSL/TLS läuft üblicherweise auf Port 990 und geht davon aus, dass der Client SSL/TLS ohne weitere Absprache verlangt. Die implizierte Variante gilt als überholt und hat kaum noch Bedeutung.

Warum nicht gleich SSH und SFTP?

Bekannt ist SSH (Secure Shell) vor allem dafür, eine verschlüsselte Verbindung zwischen zu einem Unix-ähnlichen Server aufzubauen, um einen Benutzer auf der Shell anzumelden. Seit SSH Version 2 unterstützt das Protokoll zur Dateiübertragung aber auch SFTP (Secure File Transfer Protocol). Mit FTP und FTPS hat das gar nichts zu tun, sondern mit modernen SSH-Servern wie etwa Open SSH, die auf Linux-Systemen die SSHVerbindungen entgegennehmen. Wer auf Clients außerhalb der Linux/Unix-Welt keine Rücksicht nehmen muss, da sowieso überall Linux zum Einsatz kommt, fährt besser mit SFTP und SSH-Server. Bei Clients außerhalb der Linux/Unix-Welt ist hingegen FTPS weit verbreitet und etwa auch in Visual C++ und .NET integriert. Für solche Clients empfiehlt sich weiterhin FTPS.

0 Kommentare zu diesem Artikel
1897907