Ubuntu-FTP-Server: So funktioniert die Einrichtung
Um Dateien auf einem Server ablegen und von dort auch wieder abrufen zu können, wurde 1985 das auf TCP/IP aufbauende Übertragungsprotokoll FTP (File Transfer Protocol) im RFC 959 spezifiziert. Das auf der Anwendungsschicht angesiedelte Protokoll ermöglicht es zum einen, Daten über die Ports 20 (Client) und 21 (Server) zu transportieren, zum anderen, Verzeichnisse anzulegen, zu bearbeiten und auszulesen. Zur Nutzung einer solchen Client-Server-Struktur brauchen sich Anwender lediglich mithilfe eines FTP-Clients und einem speziellen Benutzerkonto auf dem Server einzuloggen.
Insbesondere beim Webhosting erfreut sich (gesichertes) FTP daher großer Beliebtheit: Mithilfe des Transportprotokolls und der passenden Client-Software sind die Inhalte des eigenen Projekts problemlos im Webspace hochgeladen und Verzeichnisstrukturen angelegt. Hosten Sie Ihre Website bei einem Anbieter, stellt dieser für gewöhnlich eine entsprechende Serveranwendung inklusive der benötigten Zugangsdaten zur Verfügung. Liegen Webhosting und Dateientransfer in Ihrer Verantwortung, gilt es, selbst für die passenden Hardware- und Software-Strukturen zu sorgen. In diesem Ratgeber erfahren Sie daher, wie Sie Ihren eigenen Ubuntu-FTP-Server einrichten und was Sie dabei unbedingt beachten sollten.
Sie möchten Daten speichern oder transferieren? Dann jetzt Secure FTP Server mieten bei IONOS. Sichere Übertragung dank SSH und SSL/TLS, sowie tägliche Back-ups inklusive.
Installation eines Ubuntu-FTP-Servers
Bevor Sie mit der Einrichtung Ihres eigenen FTP-Servers beginnen können, gilt es zunächst, die passende Software zu finden. Ubuntu-Systeme haben zu diesem Zweck mit vsftpd bereits eine eigene Lösung in der Paketverwaltung parat, die Sie lediglich installieren müssen. Die Open-Source-Anwendung für unixoide Systeme baut auf Modulen und Komponenten auf, die sich durch eine besonders kompakte Programmierung auszeichnen. Auf diese Weise gewährleisten vsftpd-Server selbst bei einer hohen Anzahl an Client-Zugriffen einen exzellenten Sicherheitsstandard und eine stabile Leistungsfähigkeit. Um die Anwendung zu installieren, rufen Sie einfach das Terminal auf und geben dort den folgenden Befehl ein:
sudo apt-get install vsftpd
Ubuntu-FTP-Server-Tutorial: Konfiguration
Im Anschluss an den kurzen Installationsprozess können Sie das Terminal wieder schließen und mit der Konfiguration des Ubuntu-FTP-Servers beginnen. Hierfür öffnen Sie die Konfigurationsdatei vsftpd.conf, die sich standardmäßig im Ordner „etc“ befindet.
Um die Konfigurationsdatei des FTP-Servers öffnen und bearbeiten zu können, benötigen Sie einen einfachen Texteditor. Ubuntu hat für solche Zwecke das Programm gedit (GNOME-Editor) bereits ab Werk installiert, sodass Sie sich nicht unbedingt nach einer eigenen Lösung umschauen müssen. Der Textinhalt lässt sich in zwei Bereiche einteilen: Zeilen, die mit dem Rautezeichen (#) beginnen, sind auskommentiert und werden daher von dem vsftpd-Server ignoriert. Einerseits handelt es sich bei diesen Zeilen um Kommentare zu den verschiedenen Einstellungsmöglichkeiten, andererseits um deaktivierte Funktionen. Zeilen, die nicht mit dem Rautezeichen beginnen, enthalten hingegen diejenigen Informationen, die später vom Server interpretiert werden.
Für die weitere Einrichtung des FTP-Servers gibt es keine allgemeine Vorgabe, denn beim Set-up kommt es darauf an, welche Ansprüche Sie als Nutzer an den FTP-Server stellen. Hierzu ist es wichtig, dass Sie sich zunächst mit den verschiedenen Optionen befassen. In den folgenden Abschnitten dieser Ubuntu-FTP-Server-Anleitung finden Sie daher Informationen über die verschiedenen Einstellungsmöglichkeiten und deren Funktion.
Um Änderungen an der vsftpd.conf zu speichern, benötigen Sie Root-Rechte. Andernfalls können Sie die Konfigurationsdatei lediglich lesen.
Anonymen Zugriff erlauben
Per Standardeinstellung ist vsftpd derart konfiguriert, dass Nutzer sich nur mit einem spezifischen Konto auf dem FTP-Server anmelden können. Das File Transfer Protocol erlaubt jedoch auch eine Log-in-Prozedur, bei der User sich anonym einloggen, ohne persönliche Daten angeben zu müssen. Um diese unspezifische Zugriffsart zu aktivieren, suchen Sie den Eintrag „anonymous_enable=NO“ und ersetzen den Parameter „NO“ durch „YES“:
anonymous_enable=YES
Rechte anonymer Nutzer erweitern
Standardmäßig sind die Rechte stark eingeschränkt, wenn Nutzer sich anonym auf einem Ubuntu-FTP-Server anmelden. So ist es beispielsweise nur möglich, Dateien herunterzuladen, die für alle User lesbar sind (anon_world_readable_only=YES). Verneinen Sie diese Anweisung, ist auch der Download anderer Dateien erlaubt. Ferner sind folgende Optionen verfügbar:
- anon_mkdir_write_enable: Anonyme Nutzer können neue Verzeichnisse anlegen, wenn Sie hier den Wert „YES“ eintragen. Zusätzliche Voraussetzung ist, dass write_enable aktiviert ist (s. u. den Absatz „Änderungen am Dateisystem zulassen“). Standardwert: „NO“ bzw. deaktiviertes (#) „YES“
- anon_other_write_enable: Wenn diese Zeile aktiviert ist, können Dateien und Verzeichnisse auf dem FTP-Server auch bei einem unpersönlichen Zugriff umbenannt und gelöscht werden. Standardwert: „NO“ bzw. deaktiviertes (#) „YES“
- anon_upload_enable: Mit dieser Textzeile wird der anonyme Upload von Dateien aktiviert. Voraussetzungen dafür sind, dass Sie write_enable aktivieren und ein separates Upload-Verzeichnis erstellen, da anonyme User nicht direkt in das Home-Verzeichnis schreiben können. Standardwert: „NO“ bzw. deaktiviertes (#) „YES“
Ist der FTP-Server mit dem Internet verbunden, ist es im Übrigen nicht empfehlenswert, die Rechte anonymer Nutzer derart zu erweitern. Andernfalls riskieren Sie, dass Ihr Server von Drittpersonen zweckentfremdet wird.
Zugriff lokaler Benutzer einschränken
Wenn Sie lokalen Usern einzig den Zugang zum eigenen Homeverzeichnis /home/username gewähren wollen, können Sie dies ebenfalls in der vsftpd.conf festlegen. Der hierfür zuständige Auszeichnungsparameter ist „chroot_local_user“, dem standardmäßig der Wert „NO“ zugeordnet ist. Ändern Sie den Eintrag folgendermaßen
chroot_local_user=YES
bleiben den lokalen Nutzern alle anderen Verzeichnisse verschlossen.
Log-in lokaler Benutzer deaktivieren
Um lokalen Benutzern den Zugang zum FTP-Server zu gewähren, muss der Eintrag „local-enable=YES“ gesetzt sein, was per Standardeinstellung der Fall ist. Wollen Sie lokalen Benutzern den Zugriff auf Ihren Ubuntu-FTP-Server verweigern, müssen Sie lediglich die entsprechende Zeile auskommentieren, indem Sie ihr das Rautezeichen voranstellen:
#local_enable=YES
Änderungen am Dateisystem zulassen
In der Standardkonfiguration ist definiert, dass weder lokale noch anonyme Benutzer FTP-Befehle nutzen können. Die entsprechende Zeile für das globale Schreiben „#write_enable=YES“ ist nämlich deaktiviert. Soll den eingeloggten Nutzern die Möglichkeit eingeräumt werden, das Dateisystem des vsftpd-Servers anzupassen, ist es folglich notwendig, die Anweisung auszukommentieren:
write_enable=YES
FTP-Zugriff auf bestimmte Nutzer beschränken
In bestimmten Situationen kann es sinnvoll sein, bestimmten Nutzern den Zugang zum FTP-Server zu verwehren oder klar zu definieren, welche User sich anmelden können. Für erstere Lösung gilt es, am Ende der Konfigurationsdatei folgende Zeilen einzufügen:
userlist_deny=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
Diese Parameter weisen den vsftpd-Server an, allen Nutzern den Zugang zu verweigern, die in der externen Datei vsftpd.user_list eingetragen sind. Alle anderen User können sich in diesem Fall wie gewohnt anmelden.
Für das zweite Szenario, in dem sich ausschließlich die in vsftpd.user_list eingetragenen Benutzer anmelden können, muss der Parameter „userlist_deny“ verneint werden:
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
In beiden Fällen ist es nötig, die externe Textdatei zu erstellen und die betreffenden Nutzer manuell einzutragen.
Weitere Optionen in der tabellarischen Übersicht
Option | Standardwert | Beschreibung |
download_enable | YES | gibt an, ob Downloads von dem Ubuntu-FTP-Server möglich sind |
ssl_enable | NO | bietet die Möglichkeit, SSL-Verschlüsselung für den FTP-Zugriff freizuschalten |
anon_max_rate | 0 | legt die maximale Übertragungsgeschwindigkeit (in Byte pro Sekunde) für anonyme User fest; 0 steht für eine unlimitierte Rate |
local_max_rate | 0 | legt die maximale Übertragungsgeschwindigkeit (in Byte pro Sekunde) für lokale User fest; 0 steht für eine unlimitierte Rate |
max_clients | 0 | Maximalwert für die Anzahl an Clients, die zur gleichen Zeit auf dem FTP-Server angemeldet sind; 0 bedeutet, dass keinerlei Beschränkung besteht |
anon_root | /home/ftp | Verzeichnis, in das anonyme Benutzer automatisch verwiesen werden |
log_ftp_protocol | NO | protokolliert alle FTP-Anfragen und -Antworten |
connect_timeout | 60 | definiert die Zeitspanne in Sekunden, nach der die Verbindung zwischen Server und Client bei ausbleibender Kommunikation unterbrochen wird |
ftpd_banner | Begrüßungstext | |
guest_enable | NO | ermöglicht die Freischaltung des anonymen Zugangsprofils, das in guest_username definiert ist |
guest_username | ftp | Benutzername für den anonymen Log-in |
Eine vollständige Liste aller Optionen können Sie im Übrigen mithilfe des folgenden Befehls über das Terminal abrufen:
man vsftpd.conf
So nutzen Sie den FTP-Server unter Ubuntu
Nachdem Sie die Konfigurationsdatei nach Ihren Wünschen gestaltet haben, dürfen Sie nicht vergessen, diese zu speichern. Damit die Serveranwendung alle Änderungen auch übernimmt, ist zudem auch ein Neustart erforderlich, den Sie mit dem folgenden Befehl in die Wege leiten:
sudo etc/init.d/vsftpd restart
Haben Sie den FTP-Server bisher noch nicht gestartet, gelingt dies mit diesem Terminal-Kommando:
sudo etc/init.d/vsftpd start
Wollen Sie den Ubuntu-FTP-Server wieder beenden, ersetzen Sie in dem vorangegangenen Befehl einfach den Parameter „start“ durch „stop“.
Nachdem Sie nun Ihren Ubuntu-FTP-Server eingerichtet und gestartet haben, benötigen Sie ein Benutzerkonto, um sich auf diesem anmelden zu können. Beispielhaft erstellen wir an dieser Stelle den Benutzer mit dem Namen „user“ und dem Passwort „passwort“.
sudo useradd -m user -s/usr/sbin/nologin
sudo passwd user
Anschließend erlauben Sie den Anmeldezugriff für die nologin-Shell, indem Sie an das Ende der Datei /etc/shells folgende Zeile einfügen:
/usr/sbin/nologin
Das erstellte Benutzerkonto können Sie nun verwenden, um mit einem FTP-Client die Verbindung zu dem vsftpd-Server aufzubauen. Eine beliebte Lösung, deren Pakete Ubuntu standardmäßig vorliegen hat, ist die plattformübergreifende Open-Source-Anwendung FileZilla. Die Installation funktioniert also auf dem altbewährten Wege via Terminal:
sudo apt-get install filezilla
Öffnen Sie FileZilla und fügen Sie eine neue Verbindung mit den passenden Daten hinzu: Unter Host geben Sie die IP-Adresse Ihres Ubuntu FTP-Servers an, der – insofern Sie dies nicht in den Einstellungen geändert haben – auf Port 21 auf Anfragen lauscht. Wählen Sie das File Transfer Protocol und wenn möglich SFTP (Secure FTP) oder FTP over TLS aus, da eine einfache FTP-Verbindung über Port 21 ein recht hohes Sicherheitsrisiko darstellt. Im Feld „Logon Type“ nehmen Sie die Auswahlmöglichkeit „Normal“. Für „User“ und „Password“ benötigen Sie die zuvor erzeugten Anmeldedaten des Beispielkontos. Mit einem Klick auf „Connect“ verbinden Sie sich mit dem Server.
500 OOPS: Sicherheitsfeature sorgt für Probleme
Wenn Sie einen Ubuntu-FTP-Server eingerichtet haben und bestimmte Einstellungen nicht funktionieren, kann das verschiedene Hintergründe haben: So ist denkbar, dass Sie vergessen haben, den FTP-Server neu zu starten oder die Konfigurationsdatei zu sichern. Ebenso schnell schleichen sich Syntaxfehler in der vsftpd.conf ein, wenn beispielsweise an falscher Stelle ein Leerzeichen gesetzt wird. Eine häufige Fehlermeldung, die eine gänzlich andere Ursache hat, ist die folgende:
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
Bei dieser Meldung, die während des Verbindungsaufbaus auftreten kann, handelt es sich jedoch genau genommen gar nicht um eine Fehlermeldung, sondern ein Sicherheitsfeature. Hintergrund ist eine mögliche Verwundbarkeit der glibc-Bibliothek (Ubuntu-Standard-Bibliothek der Programmiersprache C), die Nutzer mit Schreibrechten für ihr eigenes Root-Verzeichnis ausnutzen könnten. Um diese Sicherheitssperre zu umgehen, existieren zwei Lösungsansätze:
1. Schreibberechtigung im Root-Verzeichnis des Nutzers entfernen: Sie entziehen den lokalen Nutzern die Schreibrechte für das eigene Root-Verzeichnis, sodass diese nur noch in Unterverzeichnisse schreiben können. Diese Einschränkung löst das „500 OOPS“-Problem, erweist sich jedoch als unvorteilhaft, wenn Dateien gezwungenermaßen in das Root-Verzeichnis geschrieben werden müssen. Der Terminal-Befehl für diesen Lösungsweg sieht folgendermaßen aus:
chmod a-w /home/user
2. Schreibberechtigung für das Root-Verzeichnis in der vsftpd.conf erlauben: Wenn Sie keinerlei Sicherheitsbedenken bezüglich eines Missbrauchs der Schreibrechte haben, können Sie dem Ubuntu-FTP-Server auch mitteilen, dass diese Funktion explizit erwünscht ist. Zu diesem Zweck ist einzig ein weiterer Eintrag in der Konfigurationsdatei notwendig:
allow_writeable_chroot=YES
Lassen Sie sich von den Vorteilen überzeugen. Probieren Sie Ihren Virtual Server ganz in Ruhe 30 Tage lang aus!