Ein FTP-Server ermöglicht es Benutzern, Dateien auf einem Remote-Computer auszutauschen / zu senden / abzurufen.
Das bei diesen Vorgängen verwendete FTP-Protokoll (File Transfer Protocol) dient der Verwaltung von Dateiübertragungen.
Dank dieser Art von Server kann man beispielsweise seine Site auf den Webservern seines Hosts aktualisieren .
Wir werden hier sehen, wie man einen solchen Server konfiguriert.
Bevor Sie fortfahren, sollten Sie wissen, dass das FTP-Protokoll nicht sicher ist. Das heißt, alle Daten zwischen dem Benutzer und dem Server gehen „im Klartext“.
Sollte dies in den meisten Fällen kein Problem darstellen, greifen Sie bei Sicherheitsproblemen auf FTPs-Server oder besser: sFTP aus der OpenSSH-Suite zurück.
FTPs? sFTP?
Nein, kein Fehler! das „s“ davor oder danach.
FTPs ist das „sichere“ FTP-Protokoll, vereinfacht gesagt befindet sich über der FTP-Schicht ein SSL-Overlay. Wie für die Webseiten in https.
SFTP hat nichts mit FTP zu tun, da es das SSH-Protokoll ist, das die Dateiübertragung ermöglicht.
Von Ihnen zu mir werden wir sFTP bevorzugen. Aber lassen Sie uns damit aufhören, das ist nicht der Punkt.
Ein klassischer FTP-Server wird in den allermeisten Fällen auf jeden Fall mehr als ausreichend sein. Und das werden wir per vsFTPd-Software für „Very Secure FTP Daemon“ einrichten.
Damit keine Missverständnisse entstehen, ist vsFTPd nicht „sicher“ im „kryptografischen“ Sinne des Wortes. „Sehr sicher“… so heißt es!
Trotzdem ist VsFTPd bis heute der einzige FTP-Server, bei dem es noch nie zu größeren Sicherheitsverletzungen gekommen ist. Und das… Das sind schon gute Nachrichten.
Darüber hinaus ist es extrem einfach zu konfigurieren. Es braucht nicht mehr, um es zu platzieren.
Was machen wir mit unserem FTP-Server?
Erlauben Sie zunächst einfach Personen, die ein Konto auf dem Server haben, eine Verbindung zum Austausch von Dateien herzustellen.
Dann können wir ein wenig mehr pushen, um die Verbindung anonymer Benutzer für die öffentliche Dateifreigabe zu ermöglichen, ein spezielles Konto zum Aktualisieren der Website erstellen… etc…
VsFTPd installieren
Die Installation ist der schnellste Schritt.
aptitude install vsftpd
Und jetzt ist VsFTPd installiert …
Beachten Sie, dass der Server standardmäßig sofort gestartet wird. Da wir es konfigurieren werden, können wir es stoppen, während wir alles vorbereiten.
vsftpd-Stoppdienst
VsFTPd konfigurieren
Ich sagte oben, die Konfiguration von VsFTPd ist sehr einfach. Alles geschieht in einer einzigen Datei: /etc/vsftpd.conf
.
Als erstes sollten Sie immer eine Kopie der Originaldatei erstellen, um im Falle eines Konfigurationsproblems eine fehlerfreie conf zu erhalten.
cp /etc/vsftpd.conf /etc/vsftpd.conf.ori
Und jetzt können wir unsere Datei bearbeiten.
nano /etc/vsftpd.conf
Wir kommen jetzt zum Kern der Sache.
Wieder gute Nachrichten, die VsFTPd-Konfigurationsdatei ist gut kommentiert.
Ich begnüge mich daher mit der Darstellung der zu ändernden Optionen.
listen_ipv6 = JA
Wenn Sie IPv6 deaktiviert haben, können Sie diese Option auskommentiert lassen. Ansonsten dort unkommentiert.
anonym_enable = NEIN
Verbindungen ohne Identifizierung oder unbekannte Benutzer möchten wir derzeit nicht akzeptieren. Also übergeben wir die Option an „NEIN“.
local_enable = JA
Aktivieren Sie diese Option auf „JA“, damit Benutzer mit einem Konto auf dem Gerät eine FTP-Verbindung herstellen können
write_enable = JA
Mit dieser Option können angemeldete Benutzer Dateien schreiben. Wenn die Option „NEIN“ ist, können sie nur Dateien herunterladen, aber keine Dateien senden.
local_umask = 022
Ich schlage vor, dass Sie die UMASK standardmäßig an 022 statt an 077 übergeben.
Auf diese Weise werden die Dateien mit 644 statt 600 Berechtigungen erstellt.
Dies bleibt ziemlich sicher und ermöglicht mehr Flexibilität beim Verschieben von Dateien an andere Stellen im Baum.
xferlog_file = / var / log / vsftpd.log
Es wird empfohlen, Protokolle zu aktivieren, um herauszufinden, was vor sich geht. Wählen Sie den gewünschten Zielpfad, aber der Standardspeicherort ist in Ordnung.
Leerlauf_session_timeout = 600
Hier können Sie den Timeout bei Inaktivität festlegen.
Ich persönlich verbringe 10 Minuten.
Die Chroot der Benutzer auf VsFTPd
Die „Chroot“. Dies ist eine der interessantesten Optionen von FTP.
„Chrooting“ eines Benutzers bedeutet „das Sperren“ in seinem Stammordner. Ordner, den wir definieren können.
Dies bedeutet, dass der Benutzer niemals verlassen oder höher als seine ursprüngliche Datei zurückkehren kann.
Konkret, wenn wir einen klassischen Fall nehmen, wird sich ein „toto“-Benutzer standardmäßig in seinem Zuhause anmelden, das ist /home/toto
.
Ohne chroot kann der Benutzer den Baum nach oben gehen, um /home
dann auf /
. Und von dort in einen beliebigen Ordner auf dem Server wandern. Beachten Sie, dass „herumlaufen“ nicht bedeutet, in der Lage zu sein, Änderungen vorzunehmen, eh.
Mit der chroot hat der Benutzer diese Zeit nicht für “virtuelles” root, /home/toto
sondern /
symbolisiert /home/toto
. Ihr folgt ?
Es befindet sich also bereits an der Wurzel und bewegt sich nicht mehr über oder außerhalb dieses Punktes. Er ist sozusagen eingesperrt.
Konfigurieren Sie die VsFTPd-Chroot
Um die Chroot zu konfigurieren, aktivieren Sie die folgenden Optionen
chroot_local_user = JA chroot_list_enable = JA chroot_list_file = /etc / vsftpd.chroot_list
Diese drei Optionen bedeuten, dass 1 / wir alle Benutzer chrooten, 2 / wir eine Liste von Benutzern für die Verwaltung des Chroot erstellen und 3 / dass diese Liste an der und der Stelle in einer solchen Datei verfügbar ist .
VsFTPd hat eine spezielle Verwaltung seiner „chrootlist“.
Wenn wir chroot mit unserer ersten Option global aktivieren, listet die chrootlist Benutzer auf, die NICHT chrooted SOLLTEN.
Wenn ich 50 Benutzer habe, werden sie alle gechrootet. Aber wenn ich nicht möchte, dass der Benutzer „foo“ drin ist, dann gebe ich seinen Namen in der Datei an /etc/vsftpd.chroot_list
.
Umgekehrt, wenn ich den Chroot für meine 50 Benutzer nicht global aktiviere, sondern „toto“ gechrootet werden muss, werde ich seinen Namen in die Liste aufnehmen.
Und ja, dieses Mal, ja chroot_localuser=NO
, wird das Verhalten der Chrootliste umgekehrt und wir werden dann innerhalb der Benutzer angeben, dass gechrootet werden MUSS.
Zusammenfassend lässt sich sagen, dass die chrootlist Ausnahmen von globalen Einstellungen behandelt.
Wenn global JA -> chrootlist = NEIN
Wenn global NEIN -> chrootlist = JA.
Einschließlich ?
Der Fall von chroot und VsFTPd Version 2.3.5
In dieser Version 2.3.5 wenden wir das globale Chroot an, wie ich es gerade oben beschrieben habe, ein Benutzer verbindet sich und ein BAM-Fehler!
Server - 500 OOPS: Verzeichnis kann nicht geändert werden ...
Also Bug oder nicht Bug?
Auch wenn es so aussieht… Ist es nicht.
Tatsächlich weigert sich VsFTPd, einen Benutzer in einem Verzeichnis zu chrooten, für das er keine Schreibrechte hat (wir haben Ihnen gesagt, dass er „sehr sicher“ ist… :)).
Standardmäßig werden Benutzer in ihrer /home/<user>
.
Alle Verzeichnisse <user>
sind für sie gut beschreibbar… aber nicht /home
… also funktioniert es nicht…
Es gibt also zwei Möglichkeiten… Entweder wir verschieben alle in ein anderes Verzeichnis, für das wir die richtigen Rechte vergeben, oder wir warten auf den Fix/die Lösung.
Ich sage Ihnen klar, dass es bei hundert Benutzern nicht in Frage kommt, die gesamte conf zu ändern … Also entfernen wir im Moment die Chroot und warten auf die Version 3 von VsFTPd, die die Möglichkeit bietet allow_writeable_chroot=YES
, die Problem.
Starten Sie den VsFTPd-Server
Unsere Konfiguration ist nun abgeschlossen, wir müssen nur noch den Server starten.
Dienst vsftpd-Start
Wenn ein Konfigurationsproblem auftritt, startet VsFTPd nicht… und wird Ihnen nichts sagen… Dies ist ein Stil…
Also öffne deinen FTP-Client, gib die Adresse deines Servers, deinen Login, dein Passwort ein und verschwinde!
Wenn Sie dies eingeben, bedeutet dies, dass Ihre conf in Ordnung ist, ansonsten überprüfen Sie Ihre vsftpd.conf-Datei.
Testen Sie Ihren FTP, ob Sie über Berechtigungen verfügen und passen Sie die Einstellungen entsprechend an.
Der FTP-Client
Um eine FTP-Verbindung herzustellen, benötigt der Benutzer eine Software namens „FTP-Client“. Eines der bekanntesten und am häufigsten verwendeten ist Filezilla. Außerdem ist es Open Source, was nicht weh tut.