Das File Transfer Protokoll (FTP) ist in diesem Jahr 30 Jahre alt geworden. Es ist nach wie vor ein gebräuchliches Protokoll um Dateien auf einen Server zu laden. Wenn Sie jemals ein Webhosting auf einem Server betrieben haben (oder auch heute noch betreiben), so sind Sie mit FTP schon mal in Kontakt gekommen. Sie erhalten vom Betreiber des FTP Services normalerweise einen Benutzernamen, ein Passwort und die IP-Adresse des Servers (oder einen Domainnamen wie ftp.ihredomain.ch). Damit haben Sie dann über einen Client wie FileZilla Zugriff auf die Festplatte des Servers.
Sie können eine FTP Verbindung auch als Erweiterung der Festplatte in Windows, Mac OS X und in Linux benutzen. Als Anbieter des Services können Sie per FTP Dateien zum Download anbieten. Selbst mit einem normalen Internetbrowser können Sie per FTP auf Verzeichnisse des Servers zugreifen.
Sie können auch einen FTP Server anbieten, mit dem sich anonyme Nutzer verbinden und Dateien speichern und laden können.
Die Daten werden beim herkömmlichen FTP unverschlüsselt übertragen!
In der Anfangszeit des Internet war FTP quasi das, was heute unter dem Begriff „Cloud“ läuft. Oftmals werden auch heute noch Backups per FTP auf entfernte Server übertragen.
Vor etwa 15 Jahre begann man sich aus Sicherheitsgründen Gedanken über eine Verschlüsselung des Protokolls zu machen und kombinierte das SSH Protokol mit dem FTP zu SFTP. Das SSH Protokoll nutzt die Public Key Verschlüsselung, d.h. der Anbieter des SFTP-Services muss sich einen öffentlichen Schlüssel erzeugen und dem Client bereitstellen.
Wenn Sie „nur“ Kunde eines solchen SFTP-Services sind, wie beispielsweise unsere Webhosting Kunden, können Sie die Verschlüsselung (SSH/TLS) erkennen, wenn Sie sich per FileZilla verbinden.
Status: Resolving address of ftp.seafolly.ch Status: Connecting to 194.150.248.132:21... Status: Connection established, waiting for welcome message... Status: Initializing TLS... Status: Verifying certificate... Status: TLS connection established. Status: Connected Status: Retrieving directory listing... Status: Directory listing of "/" successful
Wenn Sie einen Root-Server betreiben, so kommt es auf Ihre Konfiguration an, ob bereits ein FTP-Server vorhanden ist. Wenn Sie, so wie ich, eine Ubuntu-Server Distribution verwenden, dann ist dort kein FTP Server installiert. Oftmals benötigt man gar keinen FTP-Zugriff auf dem eigenen Server aber manchmal eben doch.
Um nun keine ganz groben Fehler bei der Installation zu machen, möchte Ich Ihnen heute die Installation und Konfiguration des vsftpd vorstellen. vsftpd steht für very secure file transfer protocoll daemon also so etwa genau das, was wir gerne hätten. Der Slogan des Projekt ist ganz bescheiden
Probably the most secure and fastest FTP server for UNIX-like systems.
Installation unter Ubuntu 14.04
Die grundsätzlich Installation geht leicht von der Hand
sudo apt-get install vsftpd
Der Server ist nun installiert, benutzt die Standardkonfiguration und „läuft“.
Alle im System User können sich nun anmelden und Dateien aus Ihrem /home Verzeichnis herunterladen. Sie dürfen aber keine Daten schreiben! Der Datenverkehr findet auch ganz klassisch unverschlüsselt statt und daher müssen Sie die Datei /etc/vsftpd.conf nach Ihren Befürfnissen konfigurieren. Mit dem Befehl
sudo nano /etc/vsftpd.conf
rufen Sie die Datei auf und nach dem Speichern müssen Sie mit dem Befehl
sudo restart vsftpd
den FTP-Server neu starten. Die Konfigurationsdatei ist sehr gut kommentiert, so dass die meisten Einstellungen selbsterklärend sind. Die meisten Befehle stehen auskommentiert mit einem Kommentar versuehen bereits in der Datei. Sie müssen nur noch das #-Zeichen davor entfernen. Die aus meiner Sicht wichtigsten Änderungen sind folgende:
Nutzer sollen auch schreiben können
write_enable=YES
Nutzer sollen ihr /home Verzeichnis nicht verlassen können
chroot_local_user=YES
Nicht alle Nutzer sollen FTP Zugriff erhalten.
Dazu schreiben wir die Namen der Nutzer, die Zugriff erhalten sollen, in die Datei /etc/vsftpd.chroot_list (pro Zeile ein User Name).
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Verschlüsselung
Die einfachste Art eine Verschlüsselung einzurichten besteht im FTPS Protokoll. Beim SFTP Protokoll muss eine eigene Datei mit FTP Usern gepflegt werden. Dabei können auch User sein, die über keinen System User Account verfügen und damit auch kein Home Verzeichnis haben. Ich gehe hier davon aus, dass jeder FTP User auch System User ist und das wir uns ein Zertifikat selbst erzeugen.
In der /etc/vsftpd.conf müssen Sie dann die folgenden Befehle auskommentieren bzw. eintragen
ssl_enable=Yes rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Die Zertifikate sind auf Ihrem System bereits installiert und sind selbstsigniert (daher der Name snakeoil). Es ist für die Nutzer nicht überprüfbar, ob das Zertifikat vertrauenswürdig ist, weil es selbst erstellt ist. Wenn Sie aber Ihre FTP User kennen und die Sie auch, dann spielt dieser Punkt keine Rolle, denn die Verschlüsselung funktioniert technisch genau wie bei einem „bestätigten“ Zertifikat.
Wenn Sie nun den FTP-Server neu starten und sich beispielsweise mit FileZilla verbinden, so erhalten Sie eine solche Nachricht:
Einen interessanten Artikel zum Thema AES finden Sie hier: AES – die Geschichte eines Standards
Links
https://help.ubuntu.com/lts/serverguide/ftp-server.html
https://security.appspot.com/vsftpd.html
tl;dr: Ein FTP Server ist manchmal praktisch und kann auch sicher sein
Schreibe einen Kommentar