Pure-FTP ist ein einfach zu installierender und sicherer FTP-Server. Er lässt sich jedoch nicht wie sonst gewohnt über ein Konfig-File konfigurieren. Vielmehr wird der Server (pureftpd) über ein Wrapper-Script aufgerufen, welches dem Server die Konfigurations-Parameter direkt beim Aufruf des Prozesses mitreicht. Die Konfiguration kann aber trotzdem recht einfach durchgeführt werden. Im Verzeichnis
/etc/pure-ftpd/conf
können “One-Liner” Files erstellt werden, welche vom Wrapper-Script gelesen und als Parameter verwendet werden. Siehe dazu weiter unten die Konfiguration.
Das Wrapper-Script wird hier genauer beschreiben: https://manpages.debian.org/experimental/pure-ftpd-common/pure-ftpd-wrapper.8.en.html
Um zu überprüfen, welche Option aus dem Wrapper-Script gesetzt wurden:
pure-ftpd-wrapper --show-options
Installation
Während der Installation wird nebst dem installieren des Packete auch eine Gruppe “ftpgroup” und einen User “ftpuser” erstellt. Das Home-Verzeichnis von “ftpuser” wird das Root-Verzeichnis für alle virtuellen ftpuser sein. “ftpuser” dient zukünftig als Profil für alle virtuellen User (beim erstellen eines virutellen Users wird auf diesen ftpuser verwiesen).
sudo apt-get install pure-ftpd sudo groupadd ftpgroup sudo mkdir /home/ftpuser sudo useradd -g ftpgroup -d /dev/null -s /bin/false ftpuser => useradd: Warning: missing or non-executable shell '/etc': Warnung ist ok sudo chown -R ftpuser:ftpgroup /home/ftpuser
Die Grundinstallation ist damit abgeschlossen. Nun kann sicher jeder Linux-User bereits einloggen, wobei das entsprechende Home-Verzeichnis als FTP-Root Verzeichnis verwendet wird. Das ganze ist in diesem Zustand auch noch nicht sehr sicher, da sich die User im gesamten Tree des Servers bewegen dürfen (kein chroot, etc.).
Konfiguration
Jedes File in
/etc/pure-ftpd/conf/
entspricht einem Parameter, wobei das File dem Parameter und der Inhalt des Files dem Wert des Parameters entspricht. Verwendet wird die ausgeschriebene Variante der Parameter. Die möglichen Parameter können mit
pure-ftpd --help
aufgelistet werden.
Ich verwende folgende Konfiguration
sudo bash echo yes > /etc/pure-ftpd/conf/ChrootEveryone echo yes > /etc/pure-ftpd/conf/NoAnonymous echo no > /etc/pure-ftpd/conf/PAMAuthentication echo no > /etc/pure-ftpd/conf/UnixAuthentication echo yes > /etc/pure-ftpd/conf/IPV4Only echo /etc/pure-ftpd/pureftpd.pdb > /etc/pure-ftpd/conf/PureDB
Da wir als Authentifizierung die PureDB nutzen wollen muss noch ein symbolischer Link gesetzt werden:
cd /etc/pure-ftpd/auth sudo ln -s ../conf/PureDB 50pure
Weiter mögliche Konfigurations-Varianten:
echo yes > /etc/pure-ftpd/conf/ProhibitDotFilesWrite echo yes > /etc/pure-ftpd/conf/ProhibitDotFilesRead echo 50 > /etc/pure-ftpd/conf/MaxClientsNumber echo 10 > /etc/pure-ftpd/conf/MaxClientsPerIP echo no > /etc/pure-ftpd/conf/VerboseLog echo yes > /etc/pure-ftpd/conf/DisplayDotFiles echo no > /etc/pure-ftpd/conf/AnonymousOnly echo /etc/pure-ftpd/pureftpd.pdb > /etc/pure-ftpd/conf/PureDB echo yes > /etc/pure-ftpd/conf/NoChmod echo 15 > /etc/pure-ftpd/conf/MaxIdleTime echo 2000 8 > /etc/pure-ftpd/conf/LimitRecursion echo yes > /etc/pure-ftpd/conf/AntiWarez echo no > /etc/pure-ftpd/conf/AnonymousCanCreateDirs echo 4 > /etc/pure-ftpd/conf/MaxLoad echo no > /etc/pure-ftpd/conf/AllowUserFXP echo no > /etc/pure-ftpd/conf/AllowAnonymousFXP echo no > /etc/pure-ftpd/conf/AutoRename echo yes > /etc/pure-ftpd/conf/AnonymousCantUpload echo yes > /etc/pure-ftpd/conf/BrokenClientsCompatibility echo ,21 > /etc/pure-ftpd/conf/Bind echo yes > /etc/pure-ftpd/conf/Daemonize
Virtuelle User
- Erstelle einen User-Home-Verzeichnis (Für jeden Benutzer kann ein solches Verzeichnis erstellt werden)
sudo mkdir /home/ftpuser/<username>
- Auf dem FTP-Verzeichnis die Rechte setzen:
sudo chown -R ftpuser:ftpgroup /home/ftpuser
- Den Virtuellen User beim FTP-Server anlegen
sudo pure-pw useradd $USERNAME -u ftpuser -d /home/ftpuser/$USERNAME
- Damit Pure-FTP den neuen Benutzer mitbekommt, muss die Pure-FTP DB neu erstellen werden:
sudo pure-pw mkdb
Ich verwende auf meinem FTP Server softlinks zu weiteren Verzeichnissen/Datenablagen. Normalerweise verbietet PureFTPd die Weiterleitung an “symlinks”. Man kann dies aber auch explizit erlauben. Dies aber nicht wie (von mir) erwartet über ein Konfig-File “virtualchroot”. Dafür muss man folgende Anpassung machen:
sudo vi /etc/default/pure-ftpd-common => VIRTUALCHROOT=true
Anschliessend erlaubt PureFTPd das Weiterleiten an Symlinks.
TLS / SSL
- TLS/SSL-Support aktivieren und Zertifikat erstellen:
/etc/pure-ftpd/conf# apt-get install openssl
/etc/pure-ftpd/conf# echo 1 > TLS
/etc/pure-ftpd/conf# openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem Generating a 1024 bit RSA private key . . .
/etc/pure-ftpd/conf# chmod 600 /etc/ssl/private/pure-ftpd.pem
pureadmin
Fuer Pure-FTP existiert ein GUI fuer die Administration. Hierfuer einfach das Packet pureadmin installieren.
User-Administration über Konsole
Siehe dazu: https://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
Wichtig: nach allen User-Änderungen immer die DB neu generieren:
sudo pure-pw mkdb
Benutzer-Management
View a User
sudo pure-pw show $USERNAME
Change a User’s Password
sudo pure-pw passwd $USERNAME -m
Update an Existing User
sudo pure-pw usermod $USERNAME $OPTIONS -m
Deleting a User
sudo pure-pw userdel $USERNAME -m
Listing All Users
sudo pure-pw list
Update the User/Password Database Manually
sudo pure-pw mkdb
Managing the Pure-FTP Server
Start Pure-FTPd Server
sudo service pure-ftpd start
Stop Pure-FTPD
Note: This does not disconnect active users.
sudo service pure-ftpd stop
Disconnect All Active Users Immediately
sudo killall pure-ftpd
Pure-FTPd Status
sudo service pure-ftpd status
Restart Pure-FTPd
sudo service pure-ftpd restart
View Server Activity
sudo pure-ftpwho
Pure-FTPd deinstallieren
sudo service pure-ftpd stop sudo apt-get autoremove pure-ftpd sudo apt-get purge pure-ftpd sudo rm -r /etc/pure-ftpd sudo userdel ftpuser sudo groupdel ftpgroup
Links
https://linux.die.net/man/8/pure-ftpd
https://www.laub-home.de/wiki/Ubuntu_%26_Debian_Linux_-_Installation_Pure-FTP
https://help.ubuntu.com/community/PureFTP