Découvrons dans ce tutoriel comment installer et sécuriser son serveur FTP sous Debian 10. ProFTPd est un outil présent depuis de nombreuses années sur les systèmes Linux. Il permet simplement et efficacement d’avoir un serveur FTP.
Installation de ProFTPd
La première étape consiste à installer ProFTPd depuis les sources de Debian 10. Voici les dépôts que j’ai utilisés dans mon fichier « sources.list » :
deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free
deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-updates main contrib non-free
deb-src http://deb.debian.org/debian buster-updates main contrib non-free
On met à jour notre système :
apt-get update
apt-get upgrade
On installe ProFTPd :
apt-get -y install proftpd
Commençons par configurer notre serveur FTP en modifiant le fichier de configuration ProFTPd :
nano /etc/proftpd/proftpd.conf
Voici ce que j’ai configuré dans mon fichier, il faudra l’adapter à votre serveur :
# Inclure les modules
Include /etc/proftpd/modules.conf
# On désactive l'IPv6
UseIPv6 off
# On désactive l'identification RFC1413 (consommation élevée ressource PC)
IdentLookups off
# On donne le nom de domaine de notre serveur
ServerName "ftp.mondomaine.com"
# Configuration à laisser par défaut
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# On bloque les utilisateurs dans leur dossier
DefaultRoot ~
# Je modifie le port par défaut pour plus de sécurité
Port 21021
# A laissé activé si vous êtes derrière un firewall
PassivePorts 10000 10500
# Si NAT mettre votre IP publique
MasqueradeAddress X.X.X.X
# Pour éviter le DDOS on met un nombre de connexions maximum
MaxInstances 2
# On configure l'utilisateur exécutant le processus ProFTPd
User proftpd
Group nogroup
# Paramètre de sécurité
Umask 022 022
# On active la réécriture
AllowOverwrite on
# Localisation des log
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Quelques modules activés dans la configuration par défaut de ProFTPd
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
# Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# On active le SSL sur notre FTP
Include /etc/proftpd/tls.conf
# Résout un problème à la connexion au FTP
TLSOptions NoSessionReuseRequired
# On ne permet pas à l'utilisateur root de se connecter (sécurité)
RootLogin Off
# On autorise que les utilisateurs du groupe "userftp" à se connecter
<Limit LOGIN>
DenyGroup !userftp
</Limit>
On configure notre fichier pour le SSL et pour ajouter nos certificats :
nano /etc/proftpd/tls.conf
Le fichier n’est vraiment pas compliqué, il faut simplement le remplir comme ceci :
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1 TLSv1.1 TLSv1.2
# Lien vers votre certificat
TLSRSACertificateFile /etc/letsencrypt/live/ftp.mondomaine.com/fullchain.pem
# Lien vers clé privée
TLSRSACertificateKeyFile /etc/letsencrypt/live/ftp.mondomaine.com/privkey.pem
</IfModule>
On créer le groupe qui aura le droit de se connecter en FTP :
su -
addgroup userftp
On ajoute l’utilisateur ou les utilisateurs de notre choix dans le groupe pour leur permettre de se connecter en FTP en modifiant « NomUser » par le nom de votre utilisateur :
usermod -a -G userftp NomUser
Pour finir, on redémarre ProFTPd :
/etc/init.d/proftpd restart
Bravo, vous avez configuré votre serveur FTP avec ProFTPd en mettant en place le TLS pour la sécurité. Si vous avez un firewall pensez à autoriser les connexions pour le port FTP que vous avez changé, ici « 21021 » et pour les ports passifs « 10000 » jusque « 10500 » 😉
Pour votre firewall avec une IP publique, vous pouvez mettre en place un NAT et si vous ne connaissez pas le NAT je vous invite à aller voir mon article ici !
Si l’article vous a servi n’hésitez pas à partager votre expérience dans les commentaires ou sur ma page Facebook et Twitter !
J’ai passé des heures et des heures à mettre en place ce FTP (proFTPd), accessible par FileZilla client,
J’ai vu plusieurs procédures, toutes différentes à certaines étapes (bizarre).
Ici je trouve : une utilisation de TLS conf avec :
TLSRSACertificateFile /etc/letsencrypt/live/ftp.mondomaine.com/fullchain.pem
Alors ça sort de ou cela ?
Rien n’a été fait avec letsencrypt ???
Vous, vous vous comprenez , moi je ne comprend pas.
Merci, si vous pouvez m’aider.
(C’est vraiment désolant de passer tant de temps pour une connexion FTP.)
Cordialement, Pierre.