Manchmal braucht man einen FTP Server

Nachrichten im File Transfer Protokoll

Nachrichten im File Transfer Protokoll

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:

Selbst signiertes Zertifikat
Selbst signiertes Zertifikat
Sie können die Meldung mit ok bestätigen und Ihr „sicherer“ FTP Server funktioniert nun.

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

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen