Installation von Pure-FTPd auf Ubuntu 22.04

Pure-FTPd ist ein kostenloser (BSD-Lizenz), sicherer, produktionsreifer und standardkonformer FTP-Server. Er bietet keinen unnötigen Schnickschnack, sondern konzentriert sich auf Effizienz und Benutzerfreundlichkeit. In dieser Anleitung wird Schritt für Schritt beschrieben, wie du Pure-FTPd unter Ubuntu installierst und konfigurierst.

Voraussetzungen für die Installation von Pure-FTPd

Bevor du mit der Installation fortfährst, solltest du sicherstellen, dass du Folgendes hast

  • Einen Ubuntu-Server einrichten
  • Zugriff auf ein Benutzerkonto mit sudo Rechten

Schritt-für-Schritt-Installation von Pure-FTPd

Aktualisieren der Systempakete

Aktualisiere zunächst die Paketliste deines Systems:

sudo apt update

Installation von Pure-FTPd

Als nächstes installierst du Pure-FTPd mit dem folgenden Befehl:

sudo apt install pure-ftpd

Konfigurieren von Pure-FTPd für erhöhte Sicherheit

Einrichten einer sicheren Umgebung

Erstelle eine eigene Gruppe für FTP-Benutzer:

sudo groupadd ftpgroup

Erstelle einen Benutzer für Pure-FTPd:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Verwalten des Benutzerzugriffs

So fügst du dem FTP-Server einen Benutzer hinzu:

sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]
sudo pure-pw mkdb

Ersetze [username] durch den gewünschten Benutzernamen.

TLS für die sichere Datenübertragung konfigurieren

Erstelle ein selbstsigniertes Zertifikat:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Ändere die Pure-FTPd-Konfiguration, um TLS zu aktivieren:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS
sudo service pure-ftpd restart

Erweiterte Konfigurationsoptionen

Hier ist eine Liste mit allgemeinen Einstellungen, die für Pure-FTPd konfiguriert werden können /etc/pure-ftpd/conf/ unter Ubuntu konfiguriert werden können. Der Name der Konfigurationsdatei ist fett gedruckt.

  • AltLog: Legt alternative Logging-Methoden fest. AltLog clf:/var/log/pureftpd.log zum Beispiel protokolliert Übertragungen im W3C-Format.
  • AnonymNur: Wenn diese Option aktiviert ist (indem eine Datei mit dem Namen AnonymousOnly erstellt wird), schränkt sie den Server so ein, dass nur anonyme Anmeldungen zugelassen werden.
  • AntiWarez: Wenn diese Datei vorhanden ist, ist es Benutzern verboten, Dateien hochzuladen, die bereits auf dem Server vorhanden sind.
  • AutoRename: Benennt hochgeladene Dateien automatisch um, wenn bereits eine Datei mit demselben Namen existiert.
  • Binden: Bindet den Server an eine bestimmte IP-Adresse und einen Port. Beispiel: Bind 21 bindet den Server an Port 21 auf allen verfügbaren Adressen.
  • BrokenClientsKompatibilität: Aktiviert die Kompatibilität mit FTP-Clients, die sich nicht streng an die FTP-Standards halten.
  • ChrootEveryone: Wenn diese Option aktiviert ist, werden alle Benutzer auf ihr Heimatverzeichnis beschränkt.
  • CreateHomeDir: Legt automatisch Home-Verzeichnisse an, wenn diese bei der Anmeldung eines Benutzers noch nicht existieren.
  • CustomerProof: Erhöht die Widerstandsfähigkeit gegen häufige Fehler bei Client-Konfigurationen und -Befehlen.
  • Daemonize: Wenn diese Datei vorhanden ist, wird Pure-FTPd als Daemon ausgeführt.
  • DisplayDotFiles: Legt fest, ob Punktdateien (versteckte Dateien) angezeigt werden oder nicht.
  • DontResolve: Verhindert die DNS-Auflösung für die Protokollierung und Bandbreitenkontrolle, was die Leistung verbessern kann.
  • ExtAuth: Legt ein externes Programm für die Benutzerauthentifizierung fest.
  • ForcePassiveIP: Zwingt den Server, den Clients im passiven Modus eine bestimmte IP-Adresse zu melden.
  • FSZeichensatz: Legt den Zeichensatz für das Dateisystem fest, nützlich für Nicht-ASCII-Dateinamen.
  • IPv4Nur oder IPv6Nur: Schränkt den Server so ein, dass er nur auf IPv4- oder IPv6-Adressen hört.
  • KeepAllFiles: Verhindert das Löschen von Dateien auf dem Server.
  • LDAPConfigFile: Gibt den Pfad zur LDAP-Konfigurationsdatei für die Authentifizierung an.
  • LimitRecursion: Begrenzt die Rekursionstiefe und die Anzahl der Dateien, die in den Verzeichnislisten angezeigt werden.
  • MaxClientsNumber: Begrenzt die maximale Anzahl von gleichzeitigen Clients.
  • MaxClientsPerIP: Begrenzt die Anzahl der gleichzeitigen Verbindungen von einer einzelnen IP-Adresse.
  • MaxDiskUsage: Begrenzt den Prozentsatz der Festplattennutzung.
  • MaxIdleTime: Legt die maximale Leerlaufzeit in Minuten fest, bevor die Verbindung eines Clients getrennt wird.
  • MaxLoad: Trennt Clients oder verweigert neue Verbindungen ab einer bestimmten Systemlast.
  • MinUID: Legt die Mindest-UID für die Anmeldung fest. Benutzer mit einer niedrigeren UID können sich nicht anmelden.
  • MySQLConfigFile: Legt den Pfad zur MySQL-Konfigurationsdatei für die datenbankbasierte Authentifizierung fest.
  • NoAnonymous: Deaktiviert anonyme Anmeldungen, wenn diese Datei existiert.
  • NoChmod: Deaktiviert den Befehl CHMOD auf dem Server.
  • NoRename: Verhindert, dass Benutzer Dateien umbenennen.
  • PassivePortRange: Legt einen Bereich von Ports für passive Verbindungen fest (z. B. 30000 35000).
  • PerUserLimits: Legt die Grenzen für jeden Benutzer fest.
  • PureDB: Gibt den Pfad zur PureDB-Benutzerdatenbankdatei an.
  • Quota: Legt die Benutzerkontingentgrenzen fest.
  • SyslogFacility: Legt die Syslog-Einrichtung für die Protokollierung fest.
  • TLSCipherSuite: Legt die zulässigen TLS-Chiffren für verschlüsselte Verbindungen fest.
  • TrustedGID: Legt eine Liste vertrauenswürdiger Gruppen-IDs für die Anmeldung fest.
  • UMask: Legt die Standardumask für die Dateierstellung fest.
  • UnixAuthentifizierung: Aktiviert die Authentifizierung gegen die UNIX-Passwortdatenbank.
  • UploadScript: Gibt ein Skript an, das nach einem erfolgreichen Upload ausgeführt wird.

Diese Liste enthält die am häufigsten verwendeten Konfigurationsoptionen, ist aber nicht vollständig. Ziehe immer die offizielle Pure-FTPd-Dokumentation zu Rate oder verwende den

pure-ftpd-wrapper --help

Befehl, um die genauesten und umfassendsten Informationen zu erhalten.

Beispiele

Hier ist eine Liste der Pure-FTPd-Einstellungen in /etc/pure-ftpd/conf/ mit Beispielen, um zu zeigen, welche Werte sie akzeptieren:

  • AltLog: AltLog clf:/var/log/pureftpd.log
    • Beispiel: clf:/var/log/pureftpd.log
  • AnonymousOnly: Aktivieren, indem du eine Datei namens AnonymousOnly erstellst.
    • Kein Wert erforderlich.
  • AntiWarez: Aktivieren, indem eine Datei mit dem Namen AntiWarez erstellt wird.
    • Kein Wert erforderlich.
  • AutoRename: Aktivieren, indem eine Datei mit dem Namen AutoRename erstellt wird.
    • Es wird kein Wert benötigt.
  • Binden: Bind 21
    • Beispiel: 192.168.0.1,21
  • BrokenClientsCompatibility: Aktivieren, indem du eine Datei namens BrokenClientsCompatibility erstellst.
    • Kein Wert erforderlich.
  • ChrootEveryone: Aktivieren, indem eine Datei namens ChrootEveryone erstellt wird.
    • Kein Wert erforderlich.
  • CreateHomeDir: Aktivieren, indem eine Datei mit dem Namen CreateHomeDir erstellt wird.
    • Es wird kein Wert benötigt.
  • CustomerProof: Aktivieren, indem du eine Datei namens CustomerProof erstellst.
    • Kein Wert erforderlich.
  • Daemonisieren: Aktivieren, indem eine Datei namens Daemonize erstellt wird.
    • Kein Wert erforderlich.
  • DisplayDotFiles: Aktivieren, indem eine Datei mit dem Namen DisplayDotFiles erstellt wird.
    • Kein Wert erforderlich.
  • DontResolve: Aktivieren, indem du eine Datei namens DontResolve erstellst.
    • Kein Wert erforderlich.
  • ExtAuth: ExtAuth /path/to/authenticator
    • Beispiel: /usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1
    • Beispiel: 192.168.0.1
  • FSCharset: FSCharset utf-8
    • Beispiel: utf-8
  • IPv4Nur oder IPv6Nur: Aktivieren, indem du eine Datei mit dem Namen IPv4Only oder IPv6Only erstellst.
    • Kein Wert erforderlich.
  • KeepAllFiles: Aktivieren, indem eine Datei namens KeepAllFiles erstellt wird.
    • Kein Wert erforderlich.
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf
    • Beispiel: /etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8
    • Beispiel: 10000 8 (10000 Dateien, 8 Ebenen tief)
  • MaxClientsNumber: MaxClientsNumber 50
    • Beispiel: 50
  • MaxClientsPerIP: MaxClientsPerIP 8
    • Beispiel: 8
  • MaxDiskUsage: MaxDiskUsage 95
    • Beispiel: 95 (95 Prozent)
  • MaxIdleTime: MaxIdleTime 15
    • Beispiel: 15 (15 Minuten)
  • MaxLoad: MaxLoad 4.0
    • Beispiel: 4.0
  • MinUID: MinUID 1000
    • Beispiel: 1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf
    • Beispiel: /etc/pure-ftpd/mysql.conf
  • NoAnonymous: Aktivieren, indem du eine Datei namens NoAnonymous erstellst.
    • Kein Wert erforderlich.
  • NoChmod: Aktivieren, indem du eine Datei namens NoChmod erstellst.
    • Kein Wert erforderlich.
  • NoRename: Aktivieren, indem eine Datei mit dem Namen NoRename erstellt wird.
    • Es wird kein Wert benötigt.
  • PassivePortRange: PassivePortRange 30000 35000
    • Beispiel: 30000 35000
  • PerUserLimits: PerUserLimits 8
    • Beispiel: 8 (8 gleichzeitige Verbindungen pro Benutzer)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb
    • Beispiel: /etc/pure-ftpd/pureftpd.pdb
  • Kontingent: Quota 1000M
    • Beispiel: 1000M (1000 Megabytes)
  • SyslogFacility: SyslogFacility ftp
    • Beispiel: ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
    • Beispiel: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000
    • Beispiel: 1000
  • UMask: UMask 133:022
    • Beispiel: 133:022 (Dateien: 133, Verzeichnisse: 022)
  • UnixAuthentifizierung: Aktivieren, indem du eine Datei mit dem Namen UnixAuthentication erstellst.
    • Kein Wert erforderlich.
  • UploadScript: UploadScript /path/to/script
    • Beispiel: /usr/local/bin/uploadscript

Diese Beispiele sollen verdeutlichen, wie du verschiedene Optionen in Pure-FTPd konfigurierst.

Überwachung und Wartung

Überprüfe regelmäßig die Logs in /var/log/pure-ftpd/ auf ungewöhnliche Aktivitäten oder Fehler.

Das könnte dich auch interessieren …