[[Vorlage(Getestet,focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:Dienste: Dienste starten und beenden] [:inetd: Den Internet-Superserver einrichten, optional] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/service.png, 48, align=left)]] [http://www.proftpd.org/ ProFTPD] {en} ist ein weit verbreiteter FTP-Server für UNIX-Plattformen, der die Standards FTP, SFTP, und FTPS unterstützt. Im Vergleich mit anderen Programmen zeichnet er sich insbesondere durch vielfältige Konfigurationsmöglichkeiten aus. Speziell bei Ubuntu muss man berücksichtigen, dass die Version aus den offiziellen Paketquellen der Sektion ''universe'' zugeordnet ist und damit – im Gegensatz zum [:vsftpd:] – keine Sicherheitsupdates erhält. Wer den ProFTPD trotzdem für einen aus dem Internet erreichbaren, öffentlichen FTP-Server nutzen möchte, sollte daher eine Kompilation aus dem Quelltext in Betracht ziehen. = Installation = Der ProFTPD ist in den offiziellen Paketquellen enthalten und kann daher einfach installiert [1] werden. Folgendes Paket ist erforderlich: {{{#!vorlage Paketinstallation proftpd-basic, universe }}} Ferner besteht die Möglichkeit, folgende Erweiterungen zu installieren: * '''openbsd-inetd''' - OpenBSD-internet-Superserver * '''inetutils-inetd''' - inetutils-Implementierung des Internet-Superserver * '''proftpd-doc''' - Dokumentation * '''proftpd-mod-ldap''' - Daemon-LDAP-Modul * '''proftpd-mod-mysql''' - Daemon-MySQL-Modul * '''proftpd-mod-odbc''' - Daemon-ODBCL-Modul * '''proftpd-mod-pgsql''' - Daemon-PostgesSQL-Modul * '''proftpd-mod-sqlite''' - Daemon-SQLite3-Modul = Konfiguration = Mit dem ProFTPD wird schon eine sehr gut kommentierte Konfigurationsdatei '''/etc/proftpd/proftpd.conf''' mitinstalliert, die man dann gegebenenfalls anpassen [2] muss. Standardmäßig läuft proFTPD standalone (also ohne inetd), nutzt IPv4 und IPv6 und erlaubt den Login für auf dem System vorhandene Benutzer, welche nicht gechrootet werden, sie können anhand der Dateisystemrechte alle Verzeichnisse erreichen, die sie auch sonst im System erreichen können. == Einrichtung inetd == Die Nutzung mit dem Internet-Superserver wird empfohlen, wenn der Dienst selten genutzt wird. So können Ressourcen eingespart werden, da der Dienst erst beim Zugriff gestartet wird. Bei stark ausgelasteten Servern ist der Internet-Superserver jedoch langsamer und es sollte der standalone-Betrieb genutzt werden. Möchte man ProFTPD mit inetd nutzen, so ist ein [:inetd:inetd-Server] zu installieren. Anschließend ist in der Datei '''/etc/proftpd/proftpd.conf''' die Zeile {{{ServerType standalone}}} in {{{ServerType inetd}}} zu ändern. Danach muss der Dienst neu gestartet werden. Er lauscht nun nicht mehr auf dem TCP-Port 21, da dies der inetd tun wird und die Datenpakete an den Prozess weitergibt. In der Datei '''/etc/inetd.conf''' müssen folgende Zeilen hinzugefügt werden. {{{ ftp stream tcp6 nowait root /usr/sbin/tcpd /usr/sbin/proftpd #für IPv6 bei openbsd-inetd und für IPv4 und IPv6 bei inetutils-inetd ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd #für IPv4 bei beidem, kann bei inetutils weggelassen werden, wenn tcp6 genutzt wird. }}} Hier wird zusätzlich tcpd als Zugriffskontrolle genutzt, hier können zusätzliche IP-basierte Zugriffsregeln definiert werden, welche in diesem Artikel nicht weiter behandelt werden. Danach muss der Internet-Superserver neugestartet werden. {{{#!vorlage Befehl sudo service inetd restart #für openbsd-inetd sudo service inetutils-inetd restart #für inetutils-inetd }}} == Einen Anonymous-FTP-Zugang einrichten == Oft möchte man einen FTP-Server als Download-Server für die Öffentlichkeit betreiben. Die Benutzer sollen in diesem Fall anonym zugreifen können. Dafür muss folgender Abschnitt am Ende der Konfigurationsdatei angehängt werden. Dabei haben alle Benutzer Leserechte für den Ordner '''/srv/ftp/''', jedoch keine Schreibrechte: {{{ User nobody Group nogroup UserAlias anonymous ftp DirFakeUser on ftp DirFakeGroup on ftp RequireValidShell off MaxClients 10 DisplayLogin welcome.msg DisplayChdir .message DenyAll }}} Dem Ordner '''/srv/ftp/''' müssen natürlich auch die benötigten Zugangsrechte gegeben werden [3]: {{{#!vorlage Befehl sudo chmod 755 -R /srv/ftp/ }}} == Virtuelle User verwenden == Wenn man den nicht-anonymen Benutzern nur den FTP-Zugang gestatten will, aber nicht die Nutzung anderer Dienste wie [:SSH:], ist es sinnvoll, die Benutzer über eine Textdatei zu verwalten, anstatt sie als Systemuser zu erstellen. Das nennt man virtuelle User, denn in Wirklichkeit existieren die Benutzer ja nicht. Dazu müssen in der Datei '''/etc/proftpd/proftpd.conf''' folgende Zeilen stehen: {{{ DefaultRoot ~ AuthOrder mod_auth_file.c mod_auth_unix.c AuthUserFile /etc/proftpd/ftpd.passwd AuthPAM off RequireValidShell off }}} Nun wechselt man in das Verzeichnis '''/etc/proftpd/''' und legt einen neuen Benutzer mittels {{{#!vorlage Befehl sudo ftpasswd --passwd --name benutzername --uid 1001 --home /pfad/zum/userdir --shell /bin/false }}} an. Als UID (UserID) muss man natürlich eine gültige, numerische Benutzer-ID verwenden, unter der der Benutzer auf dem System agieren soll. Man kann entweder für jeden dieser virtuellen Benutzer einen eigenen Linux-Benutzerzugang anlegen, oder mehrere virtuelle teilen sich einen. Die Direktive `DefaultRoot ~` verhindert auch in diesem Fall, dass die Benutzer auf die Homeverzeichnisse der anderen zugreifen können, sofern sie sich das nicht auch noch teilen sollen (sinnvoll bspw. bei Webmaster-Teams). Tipp: Im Falle einer Installation des [:Apache:]-Webservers wäre es sinnvoll, den erstellten Benutzern die UID des Benutzer `www-data` (Befehl: `id www-data`) zu geben, da die Nutzer dann Lese-, Schreib- und Ausführungsrechte im '''/var/www''' hätten, ohne dass man über andere umständliche und unsichere Wege zur Lösung kommen muss. Damit öffnet man aber eine potentielle Sicherheitslücke, da Apache selbst mit den Rechten der Gruppe www-data läuft! == ProFTPD neu starten == Nachdem nun alle gewünschten Änderungen vorgenommen sind, und die Datei gespeichert ist, muss der ProFTP-Daemon noch einmal neu gestartet werden. {{{#!vorlage Befehl sudo service proftpd restart }}} [[Bild(./gproftpd.png, 250, right)]] = Grafische Bedienoberfläche = Es gibt auch eine auf [:GTK:] basierende grafische Oberfläche, mit der man den Server konfigurieren kann. Diese lässt sich über die Paketverwaltung installieren: {{{#!vorlage Paketinstallation gadmin-proftpd, universe }}} So erhält man eine komplette grafische Oberfläche für ProFTPD, in der sich auch direkt Einträge in die '''ProFTPD.conf''' erstellen lassen. = Links = * [wikipedia:ProFTPD:] * [http://www.proftpd.org/ offizielle Homepage] {en} * [http://www.proftpd.org/docs/directives/linked/by-name.html Liste mit den verfügbaren Konfigurationsbefehlen] {en} * [:vsftpd:] - eine Alternative zu ProFTPD # tag: Netzwerk, Server