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
- Beispiel:
- 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
- Beispiel:
- 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
- Beispiel:
- ForcePassiveIP:
ForcePassiveIP 192.168.0.1
- Beispiel:
192.168.0.1
- Beispiel:
- FSCharset:
FSCharset utf-8
- Beispiel:
utf-8
- Beispiel:
- IPv4Nur oder IPv6Nur: Aktivieren, indem du eine Datei mit dem Namen
IPv4Only
oderIPv6Only
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
- Beispiel:
- LimitRecursion:
LimitRecursion 10000 8
- Beispiel:
10000 8
(10000 Dateien, 8 Ebenen tief)
- Beispiel:
- MaxClientsNumber:
MaxClientsNumber 50
- Beispiel:
50
- Beispiel:
- MaxClientsPerIP:
MaxClientsPerIP 8
- Beispiel:
8
- Beispiel:
- MaxDiskUsage:
MaxDiskUsage 95
- Beispiel:
95
(95 Prozent)
- Beispiel:
- MaxIdleTime:
MaxIdleTime 15
- Beispiel:
15
(15 Minuten)
- Beispiel:
- MaxLoad:
MaxLoad 4.0
- Beispiel:
4.0
- Beispiel:
- MinUID:
MinUID 1000
- Beispiel:
1000
- Beispiel:
- MySQLConfigFile:
MySQLConfigFile /etc/pure-ftpd/mysql.conf
- Beispiel:
/etc/pure-ftpd/mysql.conf
- Beispiel:
- 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
- Beispiel:
- PerUserLimits:
PerUserLimits 8
- Beispiel:
8
(8 gleichzeitige Verbindungen pro Benutzer)
- Beispiel:
- PureDB:
PureDB /etc/pure-ftpd/pureftpd.pdb
- Beispiel:
/etc/pure-ftpd/pureftpd.pdb
- Beispiel:
- Kontingent:
Quota 1000M
- Beispiel:
1000M
(1000 Megabytes)
- Beispiel:
- SyslogFacility:
SyslogFacility ftp
- Beispiel:
ftp
- Beispiel:
- TLSCipherSuite:
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
- Beispiel:
HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
- Beispiel:
- TrustedGID:
TrustedGID 1000
- Beispiel:
1000
- Beispiel:
- UMask:
UMask 133:022
- Beispiel:
133:022
(Dateien: 133, Verzeichnisse: 022)
- Beispiel:
- UnixAuthentifizierung: Aktivieren, indem du eine Datei mit dem Namen
UnixAuthentication
erstellst.- Kein Wert erforderlich.
- UploadScript:
UploadScript /path/to/script
- Beispiel:
/usr/local/bin/uploadscript
- Beispiel:
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.