GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Webmin

ProFTPD-Server

Diese Seite erklärt das FTP-Protokoll und beschreibt dann, wie der ProFTPD-Server eingerichtet und für verschiedene Zwecke konfiguriert wird.

Hinweis: Da moderne FTP-Clients SSH unterstützen, erwägen Sie die Verwendung eines SSH-Servers anstelle eines FTP-Servers, für (viel) mehr Sicherheit, als jeder FTP-Server versprechen kann

Inhalt

Einführung in FTP und ProFTPD

FTP steht für File Transfer Protocol und ist neben Telnet und SMTP eines der ältesten noch gebräuchlichen Protokolle im Internet. FTP wurde entwickelt, um Client-Programmen das Lesen, Schreiben und Löschen von Dateien auf einem Remote-Server zu ermöglichen, unabhängig vom Betriebssystem, auf dem der Server ausgeführt wird. Im Wesentlichen handelt es sich um ein Dateifreigabeprotokoll, aber im Gegensatz zu den gebräuchlicheren NFS- und SMB-Protokollen ist es besser für die Verwendung über ein Netzwerk mit langsamer oder hoher Latenz geeignet.

Typischerweise wird FTP verwendet, um Dateien von einem System auf ein anderes zu übertragen. Manchmal sind diese Dateien Linux-Distributions-CD-Images oder RPM-Pakete, die von verschiedenen Client-Hosts im Internet von einem großen Serversystem heruntergeladen werden, das sie hostet, damit jeder darauf zugreifen kann. In anderen Fällen handelt es sich bei den Dateien um Seiten für eine Website, die von einem FTP-Client hochgeladen werden, der vom Eigentümer der Website auf ein System ausgeführt wird, auf dem sowohl der Webserver als auch ein FTP-Server ausgeführt werden.

Obwohl das FTP-Protokoll als Methode zum Herunterladen von Dateien größtenteils durch HTTP ersetzt wurde, hat es immer noch viele Vorteile. Die größte ist die Fähigkeit von Clients, Dateien auf den Server hochzuladen, vorausgesetzt, dass er so konfiguriert wurde, dass sie dies zulassen. Ein anderes ist ein Semi-Standard-Verzeichnislistenformat, das Clients verwenden können, um eine Liste von Dateien in einem Verzeichnis vom Server abzurufen.

Wenn ein FTP-Client eine Verbindung zu einem Server herstellt, muss er sich zuerst selbst authentifizieren, bevor Dateiübertragungen stattfinden können. Clients melden sich häufig als spezieller anonymer Benutzer an, der kein Kennwort erfordert und normalerweise so konfiguriert ist, dass er nur Dateien herunterladen kann. Auf Unix-Systemen erlauben die meisten FTP-Server jedem lokalen Benutzer, sich mit demselben Benutzernamen und Kennwort anzumelden, die er für Telnet oder SSH verwenden würde, und geben seinem Client Zugriff auf dieselben Dateien mit denselben Berechtigungen.

Ein weiteres einzigartiges Merkmal des FTP-Protokolls ist seine Unterstützung für die Übersetzung von Dateien zwischen dem auf dem Client verwendeten Datenformat und dem auf dem Server verwendeten. Die häufigste Verwendung davon ist die Konvertierung von Textdateien zwischen den Unix-, Windows- und MacOS-Formaten, die jeweils unterschiedliche Zeichen verwenden, um das Ende einer Zeile darzustellen. Diese Funktion kann für die Übertragung von Binärdateien wie Bildern, ausführbaren Dateien und ISOs deaktiviert werden, da sie Nicht-Textdaten beschädigt.

Es gibt viele verschiedene FTP-Client-Programme, vom einfachen Unix-FTP-Befehl bis hin zu Browsern wie IE und Mozilla. Jedes moderne Betriebssystem hat mindestens einen, und fast alle enthalten standardmäßig eine Art Client. FTP-Server gibt es ebenfalls in Hülle und Fülle, aber dieses Kapitel konzentriert sich nur auf einen - ProFTPD, der meiner Meinung nach der flexibelste Server für Unix-Betriebssysteme ist.

Obwohl alle Unix-Varianten standardmäßig mit einem FTP-Server ausgeliefert werden, ist der mitgelieferte Server normalerweise entweder sehr einfach und ohne Funktionen oder der leistungsfähigere WU-FTPd. Letzteres hat zwar viele konfigurierbare Optionen, ist aber nicht so leistungsfähig wie ProFTPD, wenn es um virtuelles Hosting, Verzeichnisbeschränkungen und das Sperren von Benutzern in ihren Home-Verzeichnissen geht.

ProFTPD verwendet im Allgemeinen eine einzige Konfigurationsdatei, die unter /etc/proftpd.conf zu finden ist. Diese Datei besteht aus Anweisungen, von denen jede normalerweise eine einzelne Zeile belegt und einen Namen und einen Wert hat. Jede Direktive legt eine einzelne konfigurierbare Option fest, z. B. den Namen einer versteckten Datei oder den Pfad zu einer Willkommensnachricht. Es gibt auch spezielle Container-Direktiven zum Gruppieren anderer Direktiven, die nur für einen einzelnen virtuellen Server oder ein einzelnes Verzeichnis gelten und sich über mehrere Zeilen erstrecken.

Das ProFTPD-Servermodul

Das Symbol des ProFTPD-Servermoduls finden Sie in Webmin unter der Registerkarte Server im Hauptmenü. Wenn Sie darauf klicken, erscheint die Hauptseite des Moduls, wie im Bild unten gezeigt, vorausgesetzt, Sie haben den Server tatsächlich installiert.


Das ProFTPD-Servermodul

Wenn die Hauptseite stattdessen eine Fehlermeldung wie *Der ProFTPD-Server /usr/sbin/proftpd konnte auf Ihrem System nicht gefunden werden* anzeigt, dann ist der Server wahrscheinlich nicht installiert und das Modul kann daher nicht verwendet werden. Die meisten Linux-Distributionen enthalten ein ProFTPD-Paket auf ihrer CD oder Website, verwenden Sie also das Modul Softwarepakete (das in Kapitel 12 behandelt wird), um es zu installieren. Wenn kein Paket vorhanden ist, laden Sie den Quellcode von www.proftpd.org herunter, kompilieren und installieren Sie ihn.

Wenn Sie bereits einen anderen FTP-Server installiert haben, sollte dieser zuerst entfernt werden, damit es nicht zu Konflikten kommt.

Ein weiterer Fehler, der möglicherweise auf der Hauptseite angezeigt wird, ist *Das Programm /usr/sbin/ftpd scheint nicht der ProFTPD-Server zu sein*. Dies tritt auf, wenn Webmin feststellt, dass stattdessen ein anderer FTP-Server installiert ist. Wenn dies der Fall ist, müssen Sie ihn entfernen und ProFTPD installieren.

ProFTPD kann in zwei verschiedenen Modi ausgeführt werden – entweder als eigenständiger Daemon-Prozess, der auf FTP-Verbindungen wartet, oder von einem Superserver wie inetd oder xinetd. Ersteres nimmt Verbindungen schneller an, allerdings auf Kosten eines ständig laufenden Prozesses, der mehr Speicher verbraucht. Letzteres ist besser für Systeme, die nicht viel FTP-Verkehr erwarten, da das ProFTPD-Programm nur ausgeführt wird, wenn es benötigt wird.

Da der Standalone-Modus einfacher einzurichten ist und auf den meisten Systemen reichlich Arbeitsspeicher vorhanden ist, wird in diesem Kapitel davon ausgegangen, dass Sie ihn in diesem Modus ausführen werden. Gehen Sie folgendermaßen vor, um den ProFTPD-Serverprozess zu starten:

  1. Stellen Sie im Modul Internetdienste und -protokolle (siehe Internetdienste) sicher, dass für jeden vorhandenen Dienst namens ftp das Programm deaktiviert ist oder Kein Programm zugewiesen ausgewählt. Dadurch wird sichergestellt, dass kein FTP-Dienst von inetd ausgeführt wird. Wenn Sie einen Dienst deaktivieren, stellen Sie sicher, dass Sie auf Änderungen übernehmen klicken Schaltfläche auf der Hauptseite dieses Moduls, um Ihre Änderungen zu aktivieren.
  2. Stellen Sie im Modul Erweiterte Internetdienste sicher, dass für alle Dienste mit ftp im Namen (wie wu-ftpd, proftpd oder vsftpd) der Dienst aktiviert? ist Feld auf Nein gesetzt . Auch hier müssen Sie auf die Module Apply Changes klicken um Änderungen zu aktivieren.
  3. Zurück im ProFTPD-Servermodul klicken Sie auf das Symbol Netzwerkoptionen.
  4. Wählen Sie Eigenständiger Daemon aus dem Servertyp Speisekarte.
  5. Klicken Sie auf Speichern Schaltfläche unten auf der Seite.
  6. Zurück auf der Hauptseite des Moduls, eine Schaltfläche mit der Bezeichnung Server starten sollte unten erscheinen. Klicken Sie darauf, um den ProFTPD-Daemon zu starten.
  7. Wenn Sie möchten, dass der Daemon beim Booten neu gestartet wird, verwenden Sie das Bootup and Shutdown-Modul, um eine Aktion namens proftpd zu erstellen, die den Befehl /usr/sbin/proftpd beim Booten ausführt. Der tatsächliche Pfad kann /usr/local/sbin/proftpd oder /usr/sbin/in.proftpd sein, je nachdem, welche Linux-Distribution Sie verwenden oder ob Sie das Programm selbst kompiliert und installiert haben, anstatt ein Paket zu verwenden. Außerdem enthalten einige ProFTPD-Pakete möglicherweise bereits ein solches Boot-Skript, das Sie möglicherweise nur aktivieren müssen.

Nachdem ProFTPD gestartet wurde, können Sie es testen, indem Sie den Befehlszeilen-Unix-FTP-Client verwenden, um sich mit Ihrem eigenen System zu verbinden. Führen Sie einfach ftp localhost aus und stellen Sie sicher, dass Sie sich als ein anderer Benutzer als root anmelden können. Sie können überprüfen, ob es sich bei dem Server wirklich um ProFTPD handelt, indem Sie die Version überprüfen, die vom Befehl ftp angezeigt wird, kurz bevor er zur Eingabe eines Benutzernamens auffordert, es sei denn, er wurde standardmäßig so konfiguriert, dass keine Versionsinformationen angezeigt werden.

ProFTPD von inetd oder xinetd ausführen

ProFTPD so einzurichten, dass es von einem Superserver läuft, ist auch nicht allzu schwer und kann eine gute Idee sein, wenn Ihr System wenig Speicher hat oder kaum FTP-Verbindungen empfängt. Bevor Sie dies tun können, müssen Sie alle vorhandenen proftpd-Serverprozesse beenden (einfach mit dem Modul Running Processes) und alle Aktionen deaktivieren oder löschen, die ihn beim Booten starten.

Wenn Ihr System den überlegenen xinetd verwendet, befolgen Sie diese Anweisungen, um den FTP-Dienst einzurichten. Da viele Pakete eine Konfigurationsdatei /etc/xinetd.d für den Server enthalten, sind einige der unten erläuterten Felder möglicherweise bereits korrekt ausgefüllt.

  1. Gehen Sie zur Netzwerkkategorie von Webmin und klicken Sie auf das Symbol *Extended Internet Services*. Wenn es nicht vorhanden ist, ist xinetd nicht installiert und Sie müssen den Server stattdessen mit inetd einrichten.
  2. Suchen Sie auf der Hauptseite des Moduls nach einem bestehenden Dienst namens ftp oder proftp. Falls vorhanden, klicken Sie darauf - andernfalls folgen Sie den Anweisungen unter Neuen Internetdienst erstellen Link über oder unter der Tabelle.
  3. Im Dienstnamen geben Sie ftp ein (es sei denn, es ist bereits ausgefüllt).
  4. Stellen Sie sicher, dass Sie Ja wählen Option im Feld Dienst aktiviert? ausgewählt ist Feld.
  5. Belassen Sie die An Adresse binden Feld auf Alle gesetzt , und die *Portnummer* auf Standard oder 21 .
  6. Wählen Sie Streamen vom Socket-Typ Menü und Standard oder TCP aus dem Protokoll aufführen.
  7. Im Dienst verwaltet von wählen Sie das Server-Programm aus Option und geben Sie den Pfad zur ausführbaren proftpd-Datei ein (z. B. /usr/sbin/proftpd ) in das nebenstehende Textfeld. Der Pfad hängt davon ab, ob Sie das Programm aus einem Paket installiert oder aus dem Quellcode kompiliert haben.
  8. Im Als Benutzer ausführen geben Sie root ein .
  9. Wählen Sie Nein für Warten bis fertig? Feld.
  10. Belassen Sie alle anderen Felder auf ihren Standardwerten und klicken Sie auf Speichern oder Erstellen Schaltfläche am unteren Rand des Formulars.
  11. Klicken Sie auf der Hauptseite des Moduls auf Änderungen übernehmen Schaltfläche unter der Liste der Dienste.

Alternativ können Sie zum Einrichten eines inetd-Dienstes für ProFTPD mithilfe des Moduls Internetdienste und -protokolle die folgenden Schritte ausführen:

  1. Gehen Sie zur Netzwerkkategorie von Webmin und klicken Sie auf das Symbol *Internetdienste und -protokolle*. Wenn es nicht vorhanden ist, verwendet Ihr System wahrscheinlich stattdessen xinetd - siehe die Schritte im vorherigen Absatz für Anweisungen zur Konfiguration.
  2. Klicken Sie auf der Hauptseite des Moduls auf ftp in der Tabelle *Internetdienste*. Wenn es nicht sichtbar ist, geben Sie ftp in das Feld *Service bearbeiten* ein und klicken Sie auf die Schaltfläche. In beiden Fällen wird dieselbe Seite zum Bearbeiten des FTP-Protokolldienstes angezeigt.
  3. Im Server-Programm Wählen Sie im Abschnitt Programm aktiviert .
  4. Im Programmfeld , wählen Sie den Befehl Option und geben Sie den vollständigen Pfad zur ausführbaren Datei des ProFTPD-Servers in das Feld daneben ein, z. B. /usr/sbin/proftpd . In den Argumenten Geben Sie einfach proftpd ein . Der Pfad hängt davon ab, ob Sie das Programm aus einem Paket installiert oder aus dem Quellcode kompiliert haben.
  5. Stellen Sie den Wartemodus ein zu Warten Sie nicht , und geben Sie root ein in Als Benutzer ausführen Feld. Alle anderen können unverändert bleiben.
  6. Klicken Sie auf Speichern Schaltfläche und klicken Sie dann zurück auf der Hauptseite des Moduls auf Änderungen übernehmen .

Nachdem ProFTPD für die Ausführung von inetd oder xinetd eingerichtet wurde, können Sie es testen, indem Sie den Befehlszeilen-Unix-FTP-Client verwenden, um eine Verbindung zu Ihrem eigenen System herzustellen. Führen Sie einfach ftp localhost aus und stellen Sie sicher, dass Sie sich als ein anderer Benutzer als root anmelden können. Wenn Ihre Testverbindung mit einem Fehler wie Dienst nicht verfügbar fehlschlägt , ist die wahrscheinlichste Ursache, dass ProFTPD so konfiguriert ist, dass es als eigenständiger Server ausgeführt wird. Dies lässt sich leicht beheben, indem Sie diesen Schritten folgen :

  1. Gehen Sie zum ProFTPD-Servermodul und klicken Sie auf der Hauptseite auf das Symbol *Netzwerkoptionen*.
  2. Vom Servertyp Wählen Sie im angezeigten Formular im Menü Von Inetd ausführen aus .
  3. Klicken Sie auf Speichern Schaltfläche unten auf der Seite.

Die Anweisungen im Rest dieses Kapitels funktionieren unabhängig davon, in welchem ​​Modus ProFTPD ausgeführt wird. Der einzige Unterschied besteht darin, dass Änderungen übernehmen Die Schaltfläche wird nicht auf der Hauptseite angezeigt, da ein Serverprozess nicht neu gestartet werden muss, damit Konfigurationsänderungen wirksam werden. Stattdessen gelten die Änderungen für die nächste gestartete FTP-Sitzung.

Verwendung des ProFTPD-Servermoduls

ProFTPD verwendet ein sehr ähnliches Konfigurationsdateiformat wie Apache, und daher ist die Benutzeroberfläche für dieses Modul in vielerlei Hinsicht dieselbe wie für das Apache-Konfigurationsmodul. Auf der obersten Ebene der Konfiguration befinden sich globale Einstellungen, die den gesamten Server betreffen. Darunter befinden sich virtuelle Server und dann anonyme FTP-Optionen, Optionen pro Verzeichnis und Optionen, die nur für bestimmte FTP-Befehle gelten.

Die Optionen, die für jede Verbindung oder jeden FTP-Befehl gelten, werden durch den verbundenen virtuellen Server, die Art der Anmeldung, das Verzeichnis, in dem sich die angeforderte Datei befindet, und den spezifischen verwendeten FTP-Befehl bestimmt. Optionen, die von Objekten niedriger in der Hierarchie gesetzt werden, überschreiben die auf höheren Ebenen, sodass Sie das Hochladen auf einen Server verhindern, es aber für ein Verzeichnis zulassen können. Ebenso überschreiben Optionen für ein spezifischeres Verzeichnis (wie /usr/local/upload) die für seine Eltern (wie /usr/local).

Ein Sonderfall ist der Standardserver, der Einstellungen für Clients definiert, die sich nicht mit einem bestimmten virtuellen Server verbinden. Im Gegensatz zu Apache wirken sich die auf dem Standardserver festgelegten Optionen nicht auf virtuelle Server aus. Wenn Sie stattdessen eine Einstellung angeben möchten, die sich auf alle auswirkt, muss dies im speziellen globalen Abschnitt der ProFTPD-Konfiguration erfolgen. Dies gilt auch für verzeichnis- und FTP-befehlsspezifische Optionen.

Das Modul hat eine Seite für Bearbeitungsoptionen für jedes Objekt in der Baumstruktur, die Symbole enthält, die auf Objekte weiter unten verlinken. Beispielsweise befinden sich auf der Optionsseite des virtuellen Servers Symbole für die verschiedenen Kategorien von Optionen, die für diesen Server gelten (z. B. Protokollierung und Benutzer und Gruppe), zusammen mit Symbolen für alle Verzeichnisse oder FTP-Befehle, die ihre eigenen Optionen innerhalb des virtuellen Servers haben Server. Es gibt auch ein Symbol für Optionen speziell für anonyme FTP-Verbindungen.

Auf jeder Seite in der Hierarchie befinden sich Formulare zum Hinzufügen von Objekten (z. B. ein Verzeichnis oder eine Gruppe von FTP-Befehlen) darunter und ein Konfigurieren Symbol zum Ändern oder Löschen des aktuellen Objekts. Jede Seite enthält auch eine Direktive bearbeiten Symbol, mit dem Sie die ProFTPD-Anweisungen für das Verzeichnis, den virtuellen Server oder was auch immer die Seite darstellt, anzeigen und manuell ändern können. Die Ausnahme ist die Standard-Serverseite, die keine solchen Symbole hat, weil sie nicht geändert oder gelöscht werden kann und weil ihre Anweisungen nicht vom Rest der Konfigurationsdatei getrennt werden können.

Auf den ersten Blick mögen einige der Formulare im Modul entmutigend erscheinen, da sie Felder für fast alle verfügbaren ProFTPD-Optionen in einer bestimmten Kategorie in Bezug auf ein Objekt anzeigen. Viele dieser Optionen sind jedoch extrem spezialisiert und können die meiste Zeit ignoriert werden. Die Schritte in den verschiedenen Abschnitten dieses Kapitels erläutern, welche Sie ändern müssen, um ein bestimmtes Ergebnis zu erzielen – die anderen können in Ruhe gelassen werden, da ihre Standardeinstellungen normalerweise angemessen sind.

Da jede neu veröffentlichte Version von ProFTPD neue Direktiven unterstützt, kann dieses Modul die von Ihnen ausgeführte Version erkennen und seine Benutzeroberfläche so anpassen, dass nur die Felder angezeigt werden, die für Ihre Version gültig sind. Dies bedeutet, dass die Formulare möglicherweise nicht auf allen Systemen genau gleich aussehen und dass einige Teile der Anweisungen in diesem Kapitel möglicherweise nicht für Ihren FTP-Server gültig sind, wenn Sie eine ältere Version verwenden.

Virtuelle Server erstellen

Die wahrscheinlich nützlichste Funktion von ProFTPD ist die Unterstützung virtueller FTP-Server. Auf diese Weise können Sie völlig andere Optionen definieren, die für Clients gelten, die sich mit einer bestimmten IP-Adresse verbinden. In den meisten Fällen ähneln sie den IP-basierten virtuellen Servern von Apache, mit denen die meisten Website-Administratoren vertraut sein sollten.

Virtuelle Server sind nur dann wirklich nützlich, wenn Ihr System mehrere IP-Adressen hat. In der Regel geschieht dies durch Hinzufügen zusätzlicher virtueller IP-Adressen zu Ihrer mit dem Internet verbundenen Netzwerkschnittstelle, wie auf der Seite „Netzwerkkonfiguration“ erläutert. Wie üblich müssen alle zusätzlichen IP-Adressen ordnungsgemäß an Ihr System weitergeleitet werden. Wenn Sie mit einem ISP verbunden sind und nur eine einzige statische Adresse zugewiesen bekommen, können Sie nicht einfach zusätzliche virtuelle Schnittstellen hinzufügen und erwarten, dass sie funktionieren. Im Gegensatz zu Apache unterstützt ProFTPD keine namensbasierten virtuellen Server, da das FTP-Protokoll dafür keine Vorkehrungen getroffen hat. Clients teilen dem Server niemals den Hostnamen mit, mit dem sie sich verbinden, sodass der FTP-Server nur die IP-Adresse verwenden kann, auf der eine Verbindung empfangen wurde, um zu bestimmen, welchen virtuellen Server der Client wünscht.

Wenn Ihr System eine FTP-Verbindung erhält, vergleicht ProFTPD die verbundene Adresse mit denen aller konfigurierten virtuellen Server. Der erste, der übereinstimmt, definiert die Optionen, die für die Verbindung gelten. Wenn keine Übereinstimmung gefunden wird, wird stattdessen der Standardserver verwendet.

Um Ihrem System einen neuen virtuellen FTP-Server hinzuzufügen, gehen Sie wie folgt vor:

  1. Fügen Sie im Netzwerkkonfigurationsmodul eine neue virtuelle IP-Adresse zur externen Netzwerkschnittstelle Ihres Systems hinzu. Stellen Sie sicher, dass es beim Booten aktiviert wird und jetzt aktiv ist.
  2. Zurück im ProFTPD-Servermodul, scrollen Sie nach unten zum Formular *Create virtual server* am Ende der Hauptseite.
  3. In der Adresse Geben Sie die soeben zugewiesene IP-Adresse ein. Es sollte von keinem anderen bereits definierten virtuellen Server verwendet werden.
  4. Verlassen Sie den Hafen Feld auf Standard gesetzt .
  5. Im Servernamen Wählen Sie das zweite Optionsfeld aus und geben Sie einen Namen für diesen Server ein, der den sich verbindenden Clients angezeigt wird. Sie könnten beispielsweise _FTP-Server des Beispielunternehmens_ eingeben. Wenn Standard ausgewählt ist, sehen Clients stattdessen eine Meldung wie ProFTPD 1.2.2rc2 Server.
  6. Klicken Sie auf Erstellen Schaltfläche, um den Server hinzuzufügen. Sobald es erstellt wurde, werden Sie zur Optionsseite des neuen Servers weitergeleitet.
  7. Kehren Sie zur Hauptseite des Moduls zurück und klicken Sie auf Änderungen übernehmen Schaltfläche, um es zu aktivieren.

Sobald ein virtueller Server erstellt wurde, können Sie Optionen festlegen, die für ihn gelten, indem Sie auf sein Symbol auf der Hauptseite und dann auf eines der Kategoriesymbole klicken. Einige davon werden später in diesem Kapitel näher erläutert. Es ist auch möglich, die Attribute eines virtuellen Servers zu ändern, indem Sie auf Virtuellen Server konfigurieren klicken Symbol, bearbeiten Sie die Felder im Formular (die dieselbe Bedeutung wie im Erstellungsformular haben) und klicken Sie auf Speichern . Oder Sie können ihn ganz entfernen, indem Sie auf Virtuellen Server löschen klicken Schaltfläche auf dem Konfigurationsformular.

Anonymes FTP einrichten

In seiner Standardkonfiguration erlaubt ProFTPD im Allgemeinen allen Unix-Benutzern, sich mit ihren normalen Passwörtern anzumelden und auf alle Dateien auf dem System mit denselben Berechtigungen zuzugreifen, die sie hätten, wenn sie sich über Telnet oder SSH anmelden würden. Bei einigen Paketen ist auch anonymes FTP für den Standardserver aktiviert, sodass sich jeder als anonymer Benutzer verbinden und Dateien in einem bestimmten Verzeichnis anzeigen kann. Führen Sie die folgenden Schritte aus, um anonymes FTP für einen neuen virtuellen Server einzurichten, zu konfigurieren, was Clients tun können und auf welche Verzeichnisse sie zugreifen können:

  1. Klicken Sie auf der Hauptseite des Moduls auf das Symbol für den Standard- oder virtuellen Server, für den Sie anonymes FTP konfigurieren möchten.
  2. Klicken Sie auf der Optionsseite des virtuellen Servers auf das Symbol *Anonymes FTP*. Wenn dies das erste Mal ist, dass es für diesen Server eingerichtet wird, erscheint ein kleines Formular zur Eingabe anonymer FTP-Einstellungen.
  3. Im Beschränken auf Verzeichnis Geben Sie im Feld das Verzeichnis ein, auf das anonyme Clients beschränkt werden sollen, z. B. /home/example.com/anonftp .
  4. Im Bereich Als Benutzer auf Dateien zugreifen Option, wählen Sie das zweite Optionsfeld und geben Sie den Namen eines nicht privilegierten Unix-Benutzers ein, z. B. ftp oder niemand . Clients sind nicht nur auf das ausgewählte Verzeichnis beschränkt, sondern können auch nur mit den Berechtigungen dieses Unix-Benutzers auf Dateien zugreifen. Natürlich sollten Sie sicherstellen, dass es die darin enthaltenen Verzeichnisse und Dateien tatsächlich lesen und auflisten kann. Dieser Benutzer darf nicht in der Denied-Liste von ProFTPD stehen oder eine ungültige Shell haben. Siehe Einschränken der Anmeldeberechtigung Abschnitt später in diesem Kapitel finden Sie weitere Informationen zum Bearbeiten dieser Liste und zum Zulassen von Benutzern mit jeder Shell.
  5. Wenn Sie damit einverstanden sind, dass Clients die Gruppenberechtigungen des im vorherigen Feld festgelegten Benutzers verwenden, lassen Sie das Feld *Auf Dateien als Gruppe zugreifen* auf Standard eingestellt . Wählen Sie andernfalls das zweite Optionsfeld aus und geben Sie einen Gruppennamen in sein Feld ein.
  6. Klicken Sie auf Erstellen Schaltfläche, um die anfängliche anonyme FTP-Konfiguration einzurichten. Unter der Annahme, dass dies erfolgreich ist, wird der Browser auf die Seite mit anonymen FTP-Optionen umgeleitet, auf der sich Symbole für die verschiedenen Kategorien konfigurierbarer Optionen befinden, die sich auf anonyme FTP-Verbindungen beziehen.
  7. Klicken Sie auf Authentifizierung und geben Sie in der Aliase-Tabelle für Benutzernamen anonymous ein unter Benutzername anmelden , und den Namen des Benutzers, den Sie in Schritt 4 unter Echter Benutzername ausgewählt haben . Dies teilt ProFTPD mit, dass Clients, die sich anonym anmelden, die Berechtigungen dieses Benutzers erhalten sollen.
  8. Klicken Sie auf Speichern Schaltfläche, um zur Seite mit den anonymen FTP-Optionen zurückzukehren.
  9. In den FTP-Befehlen geben Sie WRITE ein und klicken Sie auf Erstellen Schaltfläche, um den Vorgang zum Definieren von Optionen zu starten, die für FTP-Befehle gelten, die Daten auf dem Server ändern. Sie werden zur Seite mit den Optionen pro Befehl weitergeleitet.
  10. Klicken Sie auf die Zugriffskontrolle und wählen Sie Alle Clients ablehnen aus in der Zugriffskontrolle Politikbereich. Dies weist ProFTPD an, Versuche von anonymen Clients zu blockieren, Dateien hochzuladen, zu löschen oder umzubenennen.
  11. Klicken Sie auf Speichern Taste.
  12. Kehren Sie zur Hauptseite des Moduls zurück und klicken Sie auf Änderungen übernehmen . Um sicherzustellen, dass alles funktioniert, versuchen Sie, sich als anonymer Benutzer beim virtuellen Server anzumelden und einige Dateien herunterzuladen.

Wenn Sie Ihr System verwenden, um mehrere Web- und FTP-Sites für verschiedene Kunden zu hosten, kann jedem sein eigener virtueller anonymer Server zugewiesen werden, um Dateien für Personen über FTP verfügbar zu machen. Browser gehen davon aus, dass ftp://-URLs eine anonyme Anmeldung erfordern, und die meisten kommen nicht gut mit FTP-Servern zurecht, die eine Authentifizierung erfordern.

Einschränken von Benutzern auf ihre Home-Verzeichnisse

Standardmäßig können Clients, die sich als gültiger Unix-Benutzer (nicht anonym) bei ProFTPD anmelden, das gesamte Dateisystem Ihres Systems durchsuchen, so wie sie es könnten, wenn sich der Benutzer über SSH oder Telnet anmeldet. Dies ist jedoch auf einem System mit mehreren nicht vertrauenswürdigen Benutzern, die Sie verhindern möchten, dass die Dateien des anderen angezeigt werden, nicht immer wünschenswert. Obwohl Unix-Berechtigungen verwendet werden können, um Benutzer daran zu hindern, sich gegenseitig die Verzeichnisse aufzulisten, verursachen sie Probleme, wenn Sie auch einen Webserver betreiben und dessen httpd-Benutzer Zugriff auf die Dateien aller haben müssen.

Glücklicherweise macht es ProFTPD einfach, Benutzer auf ihre Home-Verzeichnisse oder auf ein anderes Verzeichnis zu beschränken. Da dies nur für FTP-Verbindungen gilt, ist es ziemlich nutzlos, wenn dieselben Benutzer sich per Telnet oder SSH anmelden können. Es ist jedoch einfach, einem Benutzer zu erlauben, sich nur über FTP zu verbinden, indem man ihm eine Shell wie /bin/false gibt. Auf einem virtuellen Hosting-Server müssen Benutzer eigentlich nur Dateien für ihre Websites hochladen und benötigen überhaupt keinen Zugriff auf die Unix-Shell. Stellen Sie einfach sicher, dass /bin/false oder eine andere nicht funktionierende Shell, die Sie auswählen, in der Datei /etc/shells enthalten ist, damit ProFTPD den Benutzern den Zugriff nicht verweigert.

Führen Sie die folgenden Schritte aus, um die Verzeichnisse einzuschränken, auf die FTP-Clients zugreifen können:

  1. Wenn Sie die Einschränkung auf nur einen einzigen virtuellen Server anwenden möchten, klicken Sie auf dessen Symbol auf der Hauptseite des Moduls und dann auf Dateien und Verzeichnisse Symbol auf der Optionsseite des virtuellen Servers. Dies ist jedoch nicht ratsam, da es Benutzern ermöglichen könnte, die Einschränkung zu umgehen, indem sie sich mit einem anderen virtuellen Server verbinden. Stattdessen sollten Sie einfach auf Dateien und Verzeichnisse klicken Symbol in der Globalen Konfiguration Abschnitt auf der Hauptseite - alle darin definierten Einschränkungen gelten für alle Server. In jedem Fall erscheint die Seite zum Konfigurieren, wie der Server Verzeichnisse auflistet und welche verfügbar sind (siehe Abbildung unten).
  2. Die Benutzer auf Verzeichnisse beschränken Das Feld ist eigentlich eine Tabelle, in der Sie jeweils nur eine Verzeichnisbeschränkung eingeben können. Es wird immer eine leere Zeile enthalten, und wenn dies die erste derartige Einschränkung ist, die Sie erstellt haben, ist dies alles, was sie enthält. Im Verzeichnis wählen Sie Basisverzeichnis aus an, wenn Sie möchten, dass Benutzer darauf beschränkt werden. Alternativ können Sie das dritte Optionsfeld auswählen und einen Pfad wie /home eingeben oder /var/www um Benutzer auf dieses Verzeichnis zu beschränken. Es ist auch möglich, einen Pfad relativ zu den Home-Verzeichnissen der Benutzer einzugeben, wie zum Beispiel ~/public_html . In den Unix-Gruppen Spalte entweder Jeder auswählen um die Einschränkung für alle Benutzer gelten zu lassen, oder wählen Sie das zweite Optionsfeld und geben Sie einen Gruppennamen ein, damit er nur für die Mitglieder dieser Gruppe gilt. Mehrere Gruppen können eingegeben werden, indem ihre Namen durch Kommas getrennt werden, wie Benutzer,Mitarbeiter .
  3. Klicken Sie auf Speichern Schaltfläche, um zur Optionsseite des virtuellen Servers zurückzukehren. Wenn Sie eine weitere Einschränkung hinzufügen möchten (z. B. für eine andere Gruppe und ein anderes Verzeichnis), klicken Sie auf Dateien und Verzeichnisse erneut und füllen Sie die neue leere Zeile in der Tabelle aus.
  4. Wenn Sie fertig sind, kehren Sie zur Hauptseite des Moduls zurück und klicken Sie auf die Schaltfläche *Änderungen anwenden*, um die Einschränkungen zu aktivieren.


Die Dateien und Verzeichnisse bilden

Von nun an können eingeschränkte Benutzer, wenn sie eine Verbindung herstellen, keine Dateien außerhalb des angegebenen Verzeichnisses sehen oder sogar herausfinden, auf welches Verzeichnis sie beschränkt wurden. Im Gegensatz zu einigen anderen FTP-Servern, die diese Art von Einschränkung unterstützen, müssen keine Dateien oder Bibliotheken wie /bin/ls in das Verzeichnis kopiert werden, da ProFTPD nicht von externen Programmen abhängig ist.

Einschränken, wer sich anmelden kann

ProFTPD erlaubt nicht jedem Unix-Benutzer sich anzumelden, selbst wenn sie gültige Benutzernamen und Passwörter haben. Die separate /etc/ftpusers-Datei listet Benutzer auf, die sich nicht authentifizieren dürfen, was normalerweise Systemkonten wie bin, daemon und uucp beinhaltet. Darüber hinaus gibt es eine separate Konfigurationsoption, die steuert, ob sich der Root-Benutzer anmelden darf oder nicht. Standardmäßig ist dies nicht der Fall, da vom FTP-Protokoll gesendete Passwörter nicht verschlüsselt sind und daher die Authentifizierung von root ein großes Sicherheitsrisiko darstellen könnte.

ProFTPD verhindert außerdem standardmäßig, dass sich Benutzer ohne gültige Shell anmelden. Eine gültige Shell ist eine, die in der Datei /etc/shells aufgeführt ist. Diese Funktion kann nützlich sein, um zu verhindern, dass sich eine große Gruppe von Benutzern anmeldet, z. B. diejenigen, die nur in der Lage sein sollen, sich mit einem POP3-Server zu verbinden, um ihre E-Mails herunterzuladen. Es kann jedoch bei Bedarf ausgeschaltet werden.

Gehen Sie folgendermaßen vor, um die Liste der abgelehnten Nutzer und andere Anmeldebeschränkungen zu bearbeiten :

  1. Klicken Sie auf der Hauptseite des Moduls auf Denied FTP Users Symbol. In dem erscheinenden Formular ist ein Textfeld, das alle blockierten Unix-Benutzer auflistet. Bearbeiten Sie es, um Einträge hinzuzufügen oder zu entfernen, die sich nicht anmelden dürfen oder dürfen, und klicken Sie auf Speichern Taste.
  2. Um dem Root-Benutzer die Verbindung zu erlauben, klicken Sie auf Authentifizierung und ändern Sie die Option Anmeldung durch Root zulassen? Feld auf Ja .
  3. Um Benutzern mit nicht aufgelisteten Shells die Anmeldung zu erlauben, ändern Sie das Feld *Anmeldung nur von Benutzern mit gültiger Shell zulassen?* auf Ja auch.
  4. Klicken Sie auf Speichern , um zur Hauptseite zurückzukehren, und klicken Sie dann auf Änderungen übernehmen um die neuen Beschränkungen aktiv zu machen.

Die Optionen, um dem Root-Benutzer und Benutzern mit ungültigen Shells die Anmeldung zu gestatten, können auch für jeden virtuellen Server unter Authentifizierung festgelegt werden Symbol auf der Optionsseite des virtuellen Servers. Aus Sicherheitsgründen ist es jedoch im Allgemeinen nicht sinnvoll, Clients von nur einem einzigen Server die Anmeldung zu ermöglichen, da Benutzer einen beliebigen Server auswählen können, mit dem sie sich verbinden möchten.

Festlegen von Verzeichnislistenoptionen

Wenn ein FTP-Client eine Verzeichnisliste anfordert, gibt ProFTPD normalerweise eine vollständige und genaue Liste in dem Format zurück, das durch den Befehl ls -l erzeugt wird. Manchmal werden dabei jedoch zu viele Informationen über Ihr System preisgegeben, wie z. B. die Namen von Benutzern und Gruppen oder symbolische Linkziele. Oft kann es sinnvoll sein, bestimmte Dateien, die für Clients nicht relevant sind, zu verbergen, indem sie aus anderen Gründen in einem FTP-zugänglichen Verzeichnis gehalten werden müssen. Diese Art des Verbergens von Informationen wird am besten bei anonymen FTP-Benutzern angewendet, da sie nichts über Ihr System entdecken können sollten, was sie nicht wissen müssen.

Gehen Sie folgendermaßen vor, um das Format von Verzeichnislisten zu ändern:

  1. Klicken Sie auf der Hauptseite des Moduls auf das Symbol für den Standard- oder virtuellen Server, für den Sie die Verzeichnislisten ändern möchten, um seine Optionsseite aufzurufen.
  2. Angenommen, Sie möchten nur die aufgelisteten Informationen für anonyme Clients ändern, klicken Sie auf Anonymes FTP Symbol, um zur Seite mit den anonymen FTP-Optionen zu gelangen. Andernfalls sind auch normale Unix-Benutzer betroffen.
  3. Klicken Sie auf Dateien und Verzeichnisse Symbol, um ein Formular ähnlich dem in Abbildung 40-3 aufzurufen, in dem Sie die verschiedenen Listenoptionen einstellen können.
  4. Um Dateien mit bestimmten Gruppeneigentümern auszublenden, geben Sie einen oder mehrere durch Leerzeichen getrennte Gruppennamen in das Feld *Dateien im Besitz von Gruppen ausblenden* ein. Beachten Sie, dass auf diese Weise verborgene Dateien weiterhin heruntergeladen, umbenannt oder gelöscht werden können, es sei denn, Unix-Berechtigungen oder die Konfiguration des Servers verhindern dies.
  5. Um Dateien mit bestimmten Eigentumsrechten von Benutzern auszublenden, füllen Sie auf ähnliche Weise das Feld Dateien im Besitz von Benutzern ausblenden aus Feld mit einer Liste von Unix-Benutzernamen.
  6. Um Dateien auszublenden, die der anonyme FTP-Benutzer nicht lesen kann, ändern Sie die Option Dateien ausblenden, auf die nicht zugegriffen werden kann? Feld auf Ja .
  7. Damit ProFTPD symbolische Links in Listen in ihre Zieldateiberechtigungen und -größe umwandelt, ändern Sie das Feld *Symbolische Links anzeigen?* auf Ja . Normalerweise werden sowohl der Link als auch der Zielname angezeigt, und die angezeigten Berechtigungen und Eigentumsrechte sind die des Links. Aber selbst wenn diese Funktion aktiviert ist, muss sich das Linkziel immer noch innerhalb des anonymen FTP-Verzeichnisses befinden.
  8. Normalerweise enthalten Verzeichnislisten die tatsächlichen Benutzer- und Gruppeneigentümer von Dateien. Um dies zu ändern, setzen Sie das Feld *Fake-Gruppe in Verzeichniseinträgen?* auf Ja, als Gruppe . Wählen Sie dann im Feld unten entweder ftp um zu erzwingen, dass der Gruppeneigentümer immer als ftp angezeigt wird, oder das dritte Optionsfeld, damit er als die Gruppe angezeigt wird, die Sie in das angrenzende Textfeld eingegeben haben. Die Option *Verbundene Gruppe* ist nur für nicht anonyme Clients wirklich sinnvoll, da sie den Anschein erweckt, dass Dateien der primären Gruppe des verbundenen Benutzers gehören.
  9. Auf ähnliche Weise können Sie den Unix-Benutzerbesitzer von Dateien mit Gefälschter Benutzer in Verzeichnislisten? ändern Feld. Wenn *Verbundener Benutzer* ausgewählt wird, scheinen die Dateien dem Benutzer zu gehören, der derzeit beim FTP-Server angemeldet ist.
  10. Standardmäßig zeigt ProFTPD echte Unix-Dateiberechtigungen in Listen an. Um stattdessen die Anzeige von Fälschungen zu erzwingen, wählen Sie die zweite Option in den Fake-Berechtigungen in Verzeichnislisten Feld und geben Sie eine Oktalzahl wie 0644 ein von der Art, die vom chmod-Befehl verwendet wird. Dies hat natürlich keinen Einfluss auf die tatsächlichen Berechtigungen, die gelten, wenn ein Client versucht, eine Datei herunter- oder hochzuladen.
  11. Um Punktdateien wie .login und .profile in Listen auszublenden (wie es normalerweise der Befehl ls tut), stellen Sie die Option *Dateien anzeigen, die mit . im Feld Listings?* auf Ja .
  12. Klicken Sie abschließend auf Speichern unten auf der Seite, um die ProFTPD-Konfigurationsdatei zu aktualisieren.
  13. Kehren Sie zur Hauptseite des Moduls zurück und klicken Sie auf Änderungen übernehmen button to make the settings active.

As well as hiding certain files (as explained in steps 4 and 5), you can also prevent clients from reading or writing those files altogether. This can be done using the Make hidden files inaccessible? field, explained in the Restricting access to FTP commands section later in the chapter.

Message and readme files

ProFTPD can be configured to display messages to clients when they login or enter certain directories. This can be useful for notifying users of possible mirror sites, the locations of various common files on the server, and the details of the contents of a directory.

To set the messages that are displayed to clients, follow these steps :

  1. If you want the messages to be used by all virtual servers, click on the Authentication icon on the module's main page. To set messages for a specific virtual server, click on its icon and then on Authentication on the server options page. Either way, the same form will be displayed. It is also possible to set most of the message file options below for only anonymous clients by clicking on the Anonymous FTP icon on the virtual server page and then on Authentication . Naturally, you cannot set the pre-login message because the server does not know if a client is anonymous or not at that stage.
  2. In the Pre-login message file field, enter the full path to a file whose contents should be sent to clients as soon as they connect. If you don't want any message file to be used at all, select None stattdessen.
  3. In the Post-login message file field, enter the path to a text file whose contents will be sent to clients after they have been properly authenticated. If the client is limited to a directory (because it logged in anonymously or has a home directory restriction in force), the file must be within and relative to that directory. If the filename is relative (like welcome.txt ), it will be searched for in the directory that the client is initially placed in.
  4. To set a message sent to clients when they request to disconnect, fill in the Logout message file Feld. Again, this must be relative to and under any directory that the client is restricted to.
  5. If you have a restriction on the maximum number of simultaneous logins in force, you can set the message sent to clients blocked by it by filling in the Too many connections message file Feld. You should enter a full path, which can be anywhere on your system. See the Limiting concurrent logins section for more details.# Hit the Save button at the bottom of the page to go back to the global, virtual server or anonymous FTP options page.
  6. Click on the Files and Directories icon on the same page.
  7. In the Directory README filename field, enter a relative name like readme.txt that will be searched for in each directory that a client enters. If this is the first time the client has entered the directory in this session (or if the file has changed since the last time), its contents will be sent to the FTP client.
  8. To have the server send a message to clients suggesting that a particular file should be read, fill in the *Notify user of readme files matching* field. If files in the directory matching the specified regular expression (like README.* ) exist, a short message containing their names and modification times will be sent.
  9. Klicken Sie auf Speichern button on this form, then return to the module's main page. Finally click the Apply Changes button to activate the new message file settings.

The files sent to the client by the options covered above can contain certain special cookies that start with a %, which are replaced by ProFTPD with text determined at the time of sending. According to the ProFTPD documentation, the currently supported cookies are :

Not all may make sense in all situations though - for example, %U will not be set in the pre-login message file.

Setting per-directory options

The ProFTPD module allows you to set options that apply only to a specific directory, rather than globally or to an entire virtual server. This allows you to do things like hide a directory from clients, allow uploads by anonymous clients in just one location, or set the user and group ownership of files added to a directory.

To create a new set of per-directory options, follow these steps:

  1. If you want the options to apply to all virtual servers, enter the directory into the Directory path field in the *Add per-directory options for* form on the module's main page and hit the Create Taste. Alternately, you can limit them to a particular virtual server by clicking on its icon and using the same form on the virtual server options page. Or you can define options that only apply to anonymous clients by hitting the Anonymous FTP icon for a virtual server and using its directory options creation form. In all cases, the directory should be entered as an absolute path like /usr/local . It is also possible to specify a path relative to the connecting user's home directory, like ~/public_html . You can even enter a path in a particular user's home directory, like ~jcameron/www . Normally, the options will apply to the directory and all its contents and subdirectories. To have them apply to only the contents and not the directory itself, add /* to the end of the path that you enter, like /usr/local/* .
  2. After hitting Create , you will be taken to a page of option category icons for the directory as shown in Figure 40-4. As usual, clicking on these icons will take you to forms for configuring various settings that apply only to requests for and listings of that directory.
  3. To totally deny access to clients, click on Access Control and change the Access control policy field to Deny all clients, then click Save .
  4. Normally, files uploaded by clients will end up owned by the Unix user that the client logged in as. To change this, click on the User and Group icon and enter a username for the *Owner of uploaded files* field. Uploaded files' group will be the primary group of the specified user, unless you fill in the Group owner of uploaded files field as well. Again, click Save after making any changes to return to the per-directory options page.
  5. To limit only the uploading or downloading of files in this directory, you will need to create a set of per-command options under it. The Restricting access to FTP commands section explains how.
  6. To activate your changes for this directory, return to the module's main page and hit the Apply Changes Taste.


The per-directory options page

You can also remove a directory options object from the ProFTPD configuration entirely by clicking on Configure Directory and then hitting the Delete directory config Taste. All settings and per-command options for the directory will be immediately and permanently deleted from the FTP server's configuration.

If you define options for both a directory and one of its children (such as /usr/local and /usr/local/bin ), ProFTPD will always give precedence to the most specific directory when deciding which options to apply to a particular client request. This means that a setting made for /usr/local will apply to a download of /usr/local/bin/foo, unless it is overridden by a setting for /usr/local/bin.

Restricting access to FTP commands

When a client wants to download or upload a file, list a directory or perform any other operation it sends a command to the server. ProFTPD can be configured to restrict which commands a client can use for a particular virtual server or directory, or when logged in anonymously. However, before you can do this you need to have a basic understanding of which FTP commands exist and what they do. The table below lists the ones that are relevant for access control purposes :

ProFTPD allows you to define options that only apply to particular client commands or groups of commands. Typically, this is used to deny access to certain operations, such as uploading by anonymous FTP users. It is also possible to allow or deny only certain Unix users, or only clients connecting from certain addresses.

To create a new set of per-command options, follow these steps:

  1. First decide if the options should apply to commands only in a particular directory, only to clients of a virtual server, only to anonymous clients or to all users of your FTP server. On the per-directory, virtual server, anonymous FTP and main pages is a form titled Add per-command options for . In the FTP commands field, enter one or more commands from the list above, separated by spaces. When you hit the Create button, your browser will be taken to the page shown in Figure 40-5.
  2. Click on the Access Control icon to bring up a form for restricting who can use these commands.
  3. To completely deny access to everyone, change the *Access control policy* field to Deny all clients . Conversely, to allow access select Allow all clients stattdessen. This is most useful if you are editing options for commands within a directory and there is a set of options for the same commands at a higher level (such as for the virtual server or anonymous FTP) that denies access. For example, typically anonymous clients cannot use the WRITE commands, but you may want to allow it for a particular directory.
  4. To only allow certain Unix users or members of certain group access to the commands, fill in the Only allow users and Only allow group Felder. Multiple user or group names must be entered separated by spaces.
  5. Similarly, to deny certain users and groups while allowing everyone else access to the FTP commands, fill in the *Deny users* and Deny groups Felder.
  6. The Restrict access table can be used to block clients from certain IP addresses by entering a series of rules. The three radio buttons at the top control the order in which entries in the table are evaluated. If Deny then allow is selected, any client that matches a Deny row or which does not match an Allow row will be blocked. Conversely, if Allow then deny is chosen only clients that match a Deny row and do not match an Allow will be prevented from using the commands. This mode is also the default. The table will always have one empty row for adding a new rule, and because this is a new set of per-commands options that is all it will contain. In the empty row select either Allow or Deny from the Action Speisekarte. Then from the Condition menu choose one of the following to determine which clients match and thus are allowed or denied. *All *All clients match, no matter where they are from. *None *No clients match the rule. *IP address *Only clients from the IP address entered in the adjacent text field match. *Network *Only clients from the IP network entered match. The network address must be a partial IP with a trailing dot, like 192.168.1. . *Hostname *Only clients whose IP address reverse-resolves to the entered name match. You can specify an entire domain by putting a dot at the front, like .example.com . If you want to add more than one rule, you will need to re-enter this page after saving so that a new blank row appears. To delete a rule, select the blank option from the Action Speisekarte.
  7. When you are done choosing who can use the FTP commands, hit the Save Taste. Then return to the module's main page and click Apply Changes to make the restrictions active.


The per-command options page

Configuring logging

By default, ProFTPD logs all transfers to the file /var/log/xferlog in the standard FTP logging format (unless a different path has been selected at compile time). However, you can configure the server to log transfers to and from each virtual server differently, and anonymous FTP traffic as well. This is most useful in a virtual hosting environment, in which your system hosts FTP sites for many different customers.

It is also possible to define additional log files that use different formats, and optionally include only a subset of FTP commands. This can be useful if you only care about uploads, and don't want your log files clogged up with useless information.

To configure where and how logs are written globally or for an individual virtual server, the steps to follow are :

  1. If you want to change the location of the global log file that is used for all transfers (unless overridden by a virtual server), click on the Logging icon on the main page. Alternately, if you want to configure a specific virtual server to use a different log file, click on its icon and then on Logging on the virtual server options page. To change the logging settings for anonymous clients only, click on a virtual server icon, then on Anonymous FTP and finally on the Logging icon on the anonymous FTP options page.
  2. On the resulting logging options form, the *FTP transfers logfile* field controls where logs are written to. To specify a file, select the last option and enter a full path like /var/log/example.com.xfers into the adjacent text field. To turn off logging altogether, select Logging disabled . To use the global default, select the Default option (if you are editing the global logging settings, ProFTPD will use the compiled-in default log file /var/log/xferlog).
  3. The Custom logfiles table can be used to define additional logs for specific commands and with arbitrary formats. As usual, it will always have one empty row for adding a new custom log file. To add one, fill in the fields under these headings :*Logfile *The full path to the log file, such as /home/example.com/ftplog . For FTP commands *If *All is selected, all FTP commands will be logged. However, if you choose the second option only those command classes in the adjacent text box will be included. Recognized classes are NONE (no commands), ALL (all commands), INFO (information requests), DIRS (directory navigation), READ (file download), WRITE (file upload and directory creation), SITE (non-standard commands like CHMOD) and MISC (other miscellaneous commands). Multiple classes must be separated by commas, like READ,WRITE . You cannot use the names documented in the Restricting access to FTP commands Sektion. *Log format If *Default is selected, the standard FTP log format will be used. But if the second option is chosen, you must enter a recognized log format name into the text box. The next paragraph explains how to set up named log formats. Because only one empty row appears in the table, you can only add one custom log at a time. To add more, click on the Logging icon again after saving and fill in the new blank row. To delete a custom log, just clear out its field in the Logfile Säule.
  4. Klicken Sie auf Speichern button to save the new settings, and then *Apply Changes* on the main page to activate them.

If you want to use your own custom formats for log files, they must first be defined globally. The steps to create a format are :

  1. On the module's main page, click on the Logging icon to bring up the global log file options page.
  2. The Custom log formats table is for defining your own formats. In the first blank field under Format name , enter a short name for your new format such as filesonly . In the field next to it under Format string , enter text containing the log codes recognized by ProFTPD, like Downloaded %f at %t . The special codes in the string starting with % are replaced by the server with information about the command, as explained in the table below. As usual, you can add more than one custom format by re-entering the page after saving so that a new blank row appears. A format can be deleted by just clearing out its Format name Feld.
  3. Klicken Sie auf Speichern button to return to the main page, and then click Apply Changes . The new format can now be used in custom log files.

Limiting concurrent logins

If your system is configured to allow anonymous FTP logins and you expect to receive a lot of traffic, it makes sense to limit the number of connections that can be open to the FTP server at any one time. This puts a ceiling on the network and CPU load that FTP transfers can generate, which is important if the system is being used for some other purpose (such as running a web server).

This limit can be set globally, on a per-virtual server basis or just for anonymous clients. This means that you can set a limit that applies to all servers, and then increase or decrease it for a particular virtual host. Or you can set a lower limit for anonymous clients versus those that have valid logins.

ProFTPD can also be configured to limit the number of concurrent connections that a single client host can have. This is useful if you want to stop people downloading more than one file at a time from your server, and thus taking more than their fair share of bandwidth.

To set a connection limit for your server, follow these steps:

  1. If you want to set a global limit, click on the *Networking Options* icon on the module's main page. To set a limit for a single virtual server, click on its icon and then on *Networking Options*. To define a limit that applies only to anonymous clients, click on the icon for a virtual server, then on *Anonymous FTP* and finally on the Networking Options icon on the anonymous FTP options page.
  2. On the form that appears, find the Maximum concurrent logins Feld. To set a limit, select the third radio button and enter a number in the text box next to it. Alternately, you can select Unlimited to turn off any restriction that applies to this virtual server that has been set globally.
  3. To define an error message sent to clients that try to connect when the limit has been reached, enter it into the *Login error message* box in the Maximum concurrent logins Feld. If the message contains the special code %m it will be replaced with the maximum allowed number.
  4. To set the per-client host limit, fill in the *Maximum concurrent logins per host* field in the same way. It also has a *Login error message* box that can be used to set a message sent to FTP clients that exceed the limit.
  5. If you are editing the global networking options, you can also set a limit on the total number of ProFTPD sub-processes that can be active at any one time. This is useful for protecting your system from denial-of-service using hundreds of useless connections. Just select the second option for the *Maximum concurrent sessions* field and enter a number into its adjacent text box. If Default is selected, no limit will be enforced. If you are running the server from a super-server like inetd or xinetd, this limit will have no effect. Fortunately, both those servers have configuration options that can be used to achieve the same result.
  6. When you are done editing client restrictions, hit the *Save *button at the bottom of the form to update the ProFTPD configuration, and then the Apply Changes button back on the main page.

Restricting clients by IP address

By default, ProFTPD will allow clients to connect from any IP address. However, like everything else this is configurable so that you can restrict access to systems on your own network, either globally or for particular virtual servers. This comes in handy if you are setting up an FTP server that is for internal use only, even though the system it is running on is accessible from the Internet.

To restrict clients by address, follow these steps:

  1. To create a global restriction that will apply to all virtual servers, enter LOGIN into the FTP commands field of the Add per-command options for form on the module's main page, then click Create . If you only want to limit who can connect to a particular virtual server, click on its icon before entering LOGIN into the same form on the virtual server options page.
  2. Regardless of what level the restriction is being defined at, you will be taken to the per-command options page shown above. Click on the Access Control icon to go to the aptly-named access control form.
  3. The Restrict access table can be used to block clients from certain IP addresses by entering a series of rules. The three radio buttons at the top control the order in which entries in the table are evaluated. If Deny then allow is selected, any client that matches a Deny row or which does not match an Allow row will be blocked. Conversely, if Allow then deny is chosen only clients that match a Deny row and do not match an Allow will be prevented from logging in. This mode is also the default. The table will always have one empty row for adding a new rule, and because this is a new set of per-commands options that is all it will initially contain. In the empty row select either Allow or Deny from the Action Speisekarte. Then from the Condition menu choose one of the following to determine which clients match and thus are allowed or denied.
  • All
    All clients match, no matter where they are from. *None *No clients match the rule.
    IP address
    Only clients from the IP address entered in the adjacent text field match.
    Network
    Only clients from the IP network entered match. The network address must be a partial IP with a trailing dot, like 192.168.1. .
    Hostname
    Only clients whose IP address reverse-resolves to the entered name match. You can specify an entire domain by putting a dot at the front, like .example.com . If you want to add more than one rule, you will need to re-enter this page after saving so that a new blank row appears. To delete a rule, select the blank option from the Action Speisekarte.
  1. When you are finished entering client restrictions, hit the Save Schaltfläche am unteren Rand des Formulars. Then return to the main page and click Save and Apply to activate them.

Commonly, you will want to give only clients on a single network access. To do this, select the Deny then allow option, choose Allow from the Action menu , Network from the Condition menu and enter the network address with a trailing dot (like 10.254.1.) into the condition text box.

Limiting uploads

If clients are allowed to upload files to your server, they will be able to choose any name that they wish for uploaded files. Sometimes this is not desirable though - you may want to allow the storing of only image files whose names end with .gif or .jpg, or prevent the uploading of Windows executables with filenames ending in .exe or .com. Fortunately, ProFTPD has configuration options that allow you to set this up.

There are also several other settings that apply to uploads, which control whether clients are allowed to overwrite files and if partially transferred files are visible. All can be set globally, for a single virtual server or for anonymous clients only. The steps to set these options are :

  1. If you want to the settings to be global, click on the *Files and Directories* icon on the module's main page. To have them apply to just a single virtual server, click on its icon and then on Files and Directories . Or to effect just clients that login anonymously, click on a virtual server icon, then on Anonymous FTP and finally on Files and Directories icon on the virtual server options page. No matter which configuration object you chose, the files and directories form that appears will be almost identical.
  2. To hide files that are in the process of being uploaded, change the Hide files during upload? Feld auf Ja . This tells ProFTPD to use a temporary file whose name starts with .in. for transferred data, which is only renamed to the real filename when the upload is complete. This prevents incomplete partial uploads, and stops files being downloaded or accessed while they are still being sent.
  3. To have ProFTPD delete uploaded files that are not fully transferred, select Yes for the Delete aborted uploads? Feld. Again, this prevents corrupt partially uploaded files from being created on your system.
  4. To allow users to only create files whose relative names match a certain pattern, fill in the *Allowed uploaded filename regex* field with a Perl regular expression. For example, to only allow GIF files you might enter ^.*\.gif$ . Because clients are normally allowed to rename files, this option alone is not enough to stop the creation of invalid filenames. You will also need to block access to the RNFR command, as explained in the Restricting access to FTP commands Sektion.
  5. Alternately, you can block the use of certain filenames by filling in the Denied uploaded filename regex field with a regular expression like ^.*\.exe$ . If both this and the previous field are set, only files that match the allow expression but not this deny expression will be permitted. Another common use of this option is blocking the upload of .ftpaccess or .htaccess files, which set per-directory ProFTPD and Apache options.
  6. Klicken Sie auf Speichern Schaltfläche unten auf der Seite.
  7. If you want to stop clients overwriting files with new uploads, click on the Access Control icon and change the *Allow overwriting of files?* field to No . This can be useful on an server that allows anonymous users to upload to a particular directory, perhaps for incoming files of some kind. Don't forget to click Save if you make this change.
  8. Return to the module's main page and hit the Apply Changes button to activate your new filename restrictions.

Manually editing directives

If you prefer to manually edit your ProFTPD configuration file in some cases or just want to see which directives an action in Webmin has set, you can do so using this module. Except for the default server, every object's options page (virtual server, per-directory and per-command) has an icon labeled Edit Directives . When clicked on it will take you to a form containing a large text box showing the lines from the configuration file in the section related to the object. You can edit them to your heart's content, then click the Save button to update the actual file. Be aware though that no validation of your input is done. Also, you will need to use the Apply Changes button on the module's main page to activate any changes, as usual.

To view and edit the entire ProFTPD configuration, use the *Edit Config Files* icon on the module's main page. This will bring up a similar form, but showing and allowing the editing of a complete configuration file at once. Because ProFTPD can read multiple configuration files (though the use of Include directives), at the top of the form is a button labeled Edit Directives in File with a menu of filenames next to it. To switch the view to a different file, just select the one you want and hit the button. Normally though only a single proftpd.conf file will be used.


Webmin
  1. WU-FTPD-Server

  2. So installieren Sie ProFTPD unter CentOS 7

  3. So installieren Sie ProFTPD unter Ubuntu 14.04

  4. So installieren Sie ProFTPD unter Ubuntu 15.04

  5. Wie verbinde ich mich mit einem lokalen Server?

Wie installiere ich einen FTP-Server?

Wie installiere ich einen FTP-Server auf Ubuntu?

So richten Sie einen FTP-Server mit ProFTPD in Ubuntu 18.04 ein

So installieren Sie den FTP-Server mit ProFTPD auf RockyLinux 8

Wie installiere ich FTP auf Ubuntu 18.04?

FTP auf Windows Server 2012 (R2) installieren