FTP Server Verbindungen verschlüsseln mit FTPS
FTP open_in_new (File Transfer Protocol) dürfte fast jedem im Netz etwas sagen und viele werden auch schon einmal einen FTP Server genutzt haben. Denn dies ist wohl die bekannteste Methode um Daten auf einen Server bzw. eine Webseite zu laden. Ein Problem von FTP ist aber leider das die Nutz- und Steuerungsdaten gleichermaßen unverschlüsselt durch die weiten des Netzes geschmissen werden. Zumindest sofern man einen standardmäßig konfigurierten FTP nutzt. Da man aktuell an quasi jeder Ecke im IT News Bereich hört, dass es vermehrt Angriffe auf FTP Server gibt, habe auch ich nun endlich mal meinen Server umgestellt. Die Erkenntnisse die ich dabei erlangte möchte ich euch mitteilen und daraus ein kleines How To machen, welches für diverse Server funktionieren dürfte. Außerdem werde ich ein paar Begrifflichkeiten näher erläutern, denn wenn es um verschlüsselte FTP Verbindungen geht gibt es einige Missverständnisse.
Begrifflichkeiten
- FTPS / FTP-ES open_in_new Auf diese Verbindung aus FTP open_in_new und SSL/TLS open_in_new (Secure Sockets Layer / Transport Layer Security) werde ich im weiteren Verlauf dieses Artikels eingehen. Denn bei FTPS handelt es sich um FTP über SSL, also verschlüsseltes FTP. Die Abkürzung FTPS steht genau für den im vorherigen Satz dick geschriebenen Teil und das zusätzliche "E" in FTP-ES steht "Explicit" und beschreibt lediglich den Modus mit welchem SSL genutzt wird.
- SFTP open_in_new Immer wieder erwähnt in diesem Zusammenhang aber eigentlich fehl am Platze. Dies ist der Fall da SFTP nichts mit FTP zu tun hat, außer dem Namen. Denn hierbei handelt es sich um eine SSH open_in_new (Secure Shell) Verbindung die es dem Nutzer erlaubt Daten zu transferieren. Also quasi die selben Möglichkeiten aber auf einem völlig anderem Weg.
How To: Um FTPS zu aktivieren muss man ein paar Einstellungen vornehmen. Und um zu verstehen wo ich diese einfüge wäre noch wichtig zu wissen welchen FTP Server ich einsetze. Alle Beispiele die ich im folgenden erwähnen werde beziehen sich auf die aktuelle Ubuntu 12.04 open_in_new Version und ProFTPD open_in_new als FTP Server. Die ProFTPD Config Datei ist die proftpd.conf, welche bei mir unter /etc/proftpd.conf liegt. Dort habe ich die folgenden Änderungen innerhalb des Global Bereichs eingebunden.
<IfModule mod_tls.c>
TLSEngine on
TLSRequired on
TLSLog /path/to/log/ftp_tls.log
TLSRSACertificateFile /path/to/cert/httpsd.pem
TLSRSACertificateKeyFile /path/to/cert/httpsd.pem
# Authenticate clients that want to use FTP over TLS?
TLSVerifyClient off
# Allow SSL/TLS renegotiations when the client requests them
TLSRenegotiate required off
# Backward compatibility
TLSOptions NoSessionReuseRequired
</IfModule>
Zur Erklärung geben die beiden ersten Befehle an das die Verschlüsselung aktiviert werden soll und Pflicht ist. TLSLog gibt den Pfad zur Log Datei an und danach folgen zwei Angaben zu euren SSL Zertifikaten. Diese können auch selbst erstellt werden z.B. mit OpenSSL open_in_new oder über eure jeweilige Verwaltungsoberfläche wie z.B. Plesk. Die Pfade müsst ihr natürlich an euer System anpassen. Die folgenden 3 Werte habe ich gemäß Informationen aus dem Netz konfiguriert und weitere Informationen dazu gibt es am besten aus der offiziellen Dokumentation open_in_new. Mir ging es bei den gewählten Werten darum, dass der Client möglichst wenig ändern muss und es keine Probleme mit den diversen Client Software Lösungen geben kann. Zusätzlich habe ich noch auf der obersten Ebene, also auch noch außerhalb des Global Bereichs TLSProtocol SSLv3 TLSv1 eingefügt. Dadurch wird definiert welche Protokolle genutzt werden dürfen. Interessanterweise erklären diverse Tutorials im Netz, dass dieser Teil auch innerhalb des oben genannten Codes platziert werden muss, was aber nicht der Fall ist und einen Fehler verursacht (Quelle: www.proftpd.org open_in_new). Ich hoffe diese Erklärung hilft dem einen oder anderen und wenn ihr Fragen habt meldet euch einfach direkt in den Kommentaren.