ProFTPd installeren in Debian 12

ProFTPd is een FTP server die zeer praktisch is. Het laat toe om virtuele gebruikers aan te maken en meer. In deze post ga ik toelichten hoe ik ProFTPd configureer met Virtual user support en TLS.

ProFTPd installeren

we kunnen proFTPD installeren met het volgende commando

sudo apt install proftpd proftpd-mod-crypto -y

ProFTPd configureren

Eerst en vooral moeten we de certificaten genereren die we gaan gebruiken. In dit voorbeeld maak ik gebruik van self-signed certificaten, maar in productie zou je hier natuurlijk een Let’s Encrypt certificaat voor gebruiken.

openssl req -x509 -newkey rsa:4096 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365
chmod 0600 /etc/ssl/private/proftpd.key
chmod 0640 /etc/ssl/certs/proftpd.crt

Vervolgens moeten we “/etc/proftpd/modules.conf” bewerken, en alle regels die de mod_tls.c importeren uit commentaar halen.

# ... 
# Install proftpd-mod-crypto to use this module for TLS/SSL support.
LoadModule mod_tls.c
# ...

Vervolgens moeten we /etc/proftpd/tls.conf aanpassen. We kunnen de inhoud vervangen door het volgende:

<IfModule mod_tls.c>
        TLSEngine on
        TLSLog /var/log/proftpd/tls.log
        TLSProtocol TLSv1.2 TLSv1.3
        # set this to no, if you have legacy clients that can't speak TLS
        TLSRequired on
        TLSECCertificateFile /etc/ssl/certs/proftpd.crt
        TLSECCertificateKeyFile /etc/ssl/private/proftpd.key
        TLSVerifyClient off
        TLSRenegotiate none
</IfModule>

Vervolgens moeten we /etc/proftpd/tls.conf inladen, dit kan door de regel uit commentaar te halen in /etc/proftpd/proftpd.conf

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

Nu kunnen we proftpd herstarten

sudo proftpd --configtest
sudo systemctl restart proftpd

Vervolgens kunnen we de virtuele gebruikers configureren. Er zijn verschillende backends, maar ik ga hier voor een bestands backend gaan om de gebruikers in op te slaan.

Maak een nieuw bestand /etc/proftpd/conf.d/virtual-users.conf met de volgende inhoud:

DefaultRoot ~
CreateHome on
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
## only allow virtual users
AuthOrder mod_auth_file.c
## allow virtual users, and system users
# AuthOrder mod_auth_file.c mod_auth_pam.c

Nu kunnen we onze virtuele gebruikers aanmaken. Let op dat deze gebruikers ook een UID/GID nodig hebben. Je kan deze gebruikers bijvoorbeeld de UID/GID geven van de www-data gebruiker als ze websites moeten kunnen uploaden. Het UID/GID dat je gebruikt kan je bepalen door het volgende commando te draaien

id <user>

hiermee krijg je de UID en GID’s te zien van de gebruiker.

Nu kunnen we onze virtuele gebruikers aanmaken met het volgende commando:

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=test --uid=104 --gid=109 --home=/home/ftpusers/test --shell=/bin/false

Dit maakt een gebruiker “test”, met home directory in /home/ftpusers/test.