Pure-FTP Server auf Ubuntu Server installieren

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

Install Pure-FTPd Ubuntu – How we do it