Installer Proftpd avec Tls avec un certificat Letsencrypt
Nous allons voir dans cet article comment installer le serveur de transfert de fichiers ProFTPD avec le TLS activé et comment utiliser un certificat Letsencrypt pour ce besoin.
L’installation est ici faite sur une distribution GNU/Linux Ubuntu 18.04 et ne devrait guère différer pour toutes les dérivées de Debian.
Commençons par installer ProFTPD avec la commande suivante :
sudo apt install proftpd-basic
Au cours de l’installation, dpkg va vous demander si vous souhaitez faire fonctionner proftpd avec inetd
ou en standalone
. Choisissez standalone
Ensuite, éditez le fichier de configuration principal /etc/proftpd/proftpd.conf
et décommentez la ligne suivante :
Include /etc/proftpd/tls.conf
Je ne détaille pas ici la configuration de proftpd, vous pouvez trouver la liste des directives de configuration dans la documentation de proftpd ou plus digeste des exemples et explications par exemple sur le wiki d’ubbuntu-fr
Maintenant, il faut éditer le fichier de configuration tls que l’on vient d’inclure /etc/proftpd/tls.conf
afin d’avoir les lignes suivantes :
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSRequired on
TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient off
Il va falloir ajouter à ce fichier les directives indiquant l’emplacement des fichiers de certificat et clé de letsencrypt.
Pour cela nous pouvons utiliser le certificat du domaine du site web hébergé sur le serveur, ou obtenir un certificat pour un sous domaine dédié au serveur ftp en utilisant une des méthodes décrites dans la documentation de certbot
Donc on rajoute, une fois le certificat obtenu, les lignes suivantes à /etc/proftpd/tls.conf
:
TLSRSACertificateFile /etc/letsencrypt/live/[your domain]/cert.pem
TLSRSACertificateKeyFile /etc/letsencrypt/live/[your domain]/privkey.pem
TLSCACertificateFile /etc/letsencrypt/live/[your domain]/chain.pem
En remplaçant [your domain]
par votre nom de domaine choisi
Il faut maintenant des utilisateurs pour ce serveur FTP. Il y a plusieurs méthodes : utilisateurs stockés en base de données, LDAP, utilisateurs unix (pour les quels on préférera avoir la directive DefaultRoot ~
activée pour chrooter les utilisateurs dans leurs home) ou stockage dans un fichier.
Je ne vais pas développer car ce n’est pas le sujet ici, j’utilise personnellement la dernière.
On veille à bien inclure ce fichier à la configuration dans /etc/proftpd/proftpd.conf
:
# auth file path
AuthUserFile /etc/proftpd.passwd
Puis on peut créer un utilisateur avec l’utilitaire ftpasswd
:
sudo ftpasswd --passwd --name=[username] --uid=33 --home=[/full_path/to/ftproot] --shell=/bin/false --file=/etc/proftpd.passwd
Remplacez [username] par le nom d’utilisateur choisi, et [/full_path/to/ftproot] par le chemin absolu vers le répertoire racine choisi pour cet utilisateur.
NB : J’utilise ici l’utilisateur et groupe d’id 33 qui correspond à www-data
car il s’agit d’un site web et que le serveur web à besoin d’avoir accès en écriture.
Plus d’infos dans la documentation de ftpasswd
Enfin, pour que toutes ces modifications soient prises en compte, il faut redémarrer proFTPD :
systemctl restart proftpd
Pour s’assurer de son démarrage au boot de la machine :
systemctl enable proftpd
Et pour vérifier son état :
systemctl status proftpd
On peut maintenant se connecter au serveur ProFTPD avec TLS à l’aide du client FTP Filezilla (sudo apt install filezilla -y
si vous ne l’avez pas déjà).
On ouvre ensuite les festionnaire de sites pour y ajouter notre site avec nos informations de connexion.
Et voilà, transférez bien et en toute sécurité 😉