ProFTPD : configurer un serveur FTP sur Debian 10

Avec VsFTPd et Pure-FTPd, ProFTPD fait aujourd'hui partie des serveurs FTP les plus populaires dans les environnements de type Fedora, Ubuntu et Unix. C'est un logiciel gratuit et open source, compatible avec les systèmes de type Unix. Il expose de nombreuses options de configuration aux utilisateurs par rapport à ses homologues.

Dans ce tutoriel, je vous guide pour configurer le serveur FTP en utilisant ProFTPD sur Debian 10.
A notez que cela doit aussi fonctionner sur la distribution Ubuntu.

ProFTPD : configurer un serveur FTP sur Debian 10

ProFTPD : configurer un serveur FTP sur Debian 10

Pour obtenir des infos sur le fonctionnement du protocole FTP :

Installer ProFTPD

On installe le paquet proftpd via APT.
Le paquet openssl est utile si vous désirez mettre en place la connexion chiffrée (TLS).

 apt-get install proftpd openssl

Créer le groupe et utilisateur FTP

Ensuite, il faut créer les utilisateurs FTP.
Par défaut, ProFTPD utilise pam.d, ainsi il faut créer un utilisateur UNIX.
On peut toutefois définir un shell qui prévient toute connexion SSH via /bin/false.

Pour commencer, on créé le groupe ftpgroup.

addgroup ftpgroup

Puis on ajoute l'utilisateur FTP kevin :

adduser kevin -shell /bin/false -home /ftpshare
  • -shell /bin/false ne donne pas accès au shell. Si l'utilisateur doit pouvoir se connecter en SSH alors n'utilisez pas le paramètre -shell
  • -home /ftpshare attribue le dossier FTP par défaut

Enfin on ajoute l'utilisateur le groupe ftpgroup :

adduser kevin ftpgroup
Créer le groupe et utilisateur FTP

Plus d'informations sur la création d'utilisateur Linux :

Enfin on applique les permissions sur le dossier /ftpshare :

chmod -R 1777 /ftpshare/

Configurer le serveur FTP ProFTPD

Le fichier de configuration ProFTPD est /etc/proftpd/proftpd.conf.
Toutefois sur Debian, vous pouvez placer un fichier de configuration personnalisée dans /etc/proftpd/conf.d/.
Ainsi lors d'une mise à jour de paquet via APT, votre configuration ne sera pas écrasée.

Créez le fichier suivant :

vim /etc/proftpd/conf.d/personnalises.conf

Puis inspirez-vous de ce contenu.
Vous pouvez reprendre les paramètres de /etc/proftpd/proftpd.conf.

ServerName                      "Debian" #la bannière qui apparaît à la connexion

UseIPv6 off # Pas de connexion IPv6
RootLogin       off # Interdire le login en root
RequireValidShell off # Pas besoin d'un shell valide (pour /bin/false)

# Le port 21 est le port FTP standard.
Port                            21

# pour restreindre l'accès des utilisateurs à leurs dossiers de départ uniquement
DefaultRoot  ~

# interdire les connexions hors du groupe ftpgroup ... si vous devez autoriser par exemple www-data, ne pas mettre ou ajoutez ce dernier dans le groupe FTP.
<Limit LOGIN>
    DenyGroup !ftpgroup
</Limit>

#definition du nombre de connexions max par clients, etc.
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

Configurer ProFTPD TLS

Pour configurer et exécuter TLS, nous devons d'abord générer un certificat

mkdir /etc/proftpd/ssl

Générez un certificat auto-signé en exécutant la commande ci-dessous. Il vous demandera des informations, veuillez fournir des informations en conséquence.

openssl req -new -x509 -keyout /etc/proftpd/ssl/proftpd.key.pem -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem
Generating a RSA private key
...........................................................+++++
......................................+++++
writing new private key to '/etc/proftpd/ssl/proftpd.key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:FRANCE
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:malekal.com
Organizational Unit Name (eg, section) []:Kevin
Common Name (e.g. server FQDN or YOUR name) []:malekal.com
Email Address []:[email protected]

Puis on attribue les permissions aux fichiers de clés.
Le fichier proftpd.key doit être lisible par root uniquement. Pour sécuriser l'environnement, exécutez la commande ci-dessous.

chmod 600 /etc/proftpd/ssl/proftpd.*

Enfin ajoutez le fichier suivant :

vi /etc/proftpd/conf.d/tls.conf

Puis copiez/collez ce contenu :

<IfModule mod_tls.c>
[::]
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                SSLv23
TLSOptions                 NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient            off
TLSRequired                on
RequireValidShell          no
TLSOptions                 NoSessionReuseRequired
</IfModule>

TLSRequired peut générer des problèmes de connexion :

  • Le paramètre «on» active les exigences SSL / TLS sur les canaux de contrôle et de données; "off" désactive les exigences sur les deux canaux. Utilisez "ctrl" et "data" pour exiger SSL / TLS sur l'un ou l'autre des canaux individuellement.
  • Le paramètre "auth" nécessite que SSL / TLS soit utilisé sur le canal de contrôle, mais uniquement pour l'authentification. Pour utiliser ce paramètre et exiger SSL / TLS pour les transferts de données, utilisez le paramètre «auth + data».

Redémarrez ProFTPD

Enfin relancez le service ProFTPD :

service proftpd restart

Vérifiez que le serveur FTP est bien en écoute sur le port 21 avec la commande netstat :

netstat -lpn|grep proftpd
tcp6       0      0 :::21     :::*        LISTEN      24557/proftpd:
Bravo ! vous avez réussi à configurer le serveur FTP ProFTPD.

Se connecter au serveur FTP ProFTPD

Enfin il ne reste plus qu'à tester la connexion FTP, par exemple avec le client ncftp ou FileZilla :

ncftp -u <utilisateur> <adresse serveur>
Se connecter au serveur FTP ProFTPD

Du côté du serveur, dans les logs :

Apr  8 07:34:32 ksxxxx proftpd: pam_unix(proftpd:session): session opened for user kevin by (uid=0)
Bravo ! vous avez réussi à vous connecter à votre serveur FTP ProFTPD.

Liens

Cet article est sous licence Creative Commons BY-NC-SA.
Vous êtes autorisé à partager et modifier cet article, à condition de créditer le site ainsi que la licence, d'utiliser la même licence si vous modifiez l'oeuvre et de ne pas en faire d'utilisation commerciale.

Trouver la solution sur le forum d'aide

Vous êtes arrivé au terme de l'article ProFTPD : configurer un serveur FTP sur Debian 10 mais vous n'avez pas trouvé la solution à votre problème...

Suivez ces articles du forum pour trouver une réponse :
Sinon créez votre propre demande pour obtenir de l'aide gratuite.
Plus de détails : Comment obtenir de l'aide sur le forum