22/12/2024

Services

Debian 9 : Configurer un serveur FTP avec ProFTPd

I. Présentation

Je vous propose dans ce tutoriel, la mise en place d'un serveur FTP sur Debian 9 à l'aide du package ProFTPd.

L'occasion pour vous rappeler que ProFTPd est un paquet existant depuis de nombreuses années et qui est très souvent utilisé pour mettre en place un serveur FTP. Le serveur FTP va pouvoir ensuite héberger des données et permettre aux utilisateurs de charger et télécharger des données vers à partir de ce serveur et du protocole FTP.

II. Installer ProFTPd sur Debian 9

Connectez-vous sur votre système Debian 9, en ligne de commande. Soit avec l'utilisateur root directement, sinon ajoutez "sudo" devant les différentes commandes qui vont suivre pour les exécuter avec les droits du super-utilisateur.

Effectuez la mise à jour de la liste des paquets (update).

apt update

Installez ensuite le paquet ProFTPD (-y pour accepter directement l'installation) :

apt install -y proftpd

Le paquet ProFTPd étant installé sur notre système, nous allons le configurer.

III. Configuration de ProFTPd

Le répertoire qui contient les fichiers de configuration est "/etc/proftpd/" mais je vous recommande de créer votre configuration dans "/etc/proftpd/conf.d/" pour éviter qu'elle soit écrasée lors d'une mise à jour de ProFTPD. Ce serait peu appréciable de perdre sa configuration.

Objectifs de la configuration : écouter sur le port 2100 au lieu du port par défaut 21, empêcher le compte root de se connecter au FTP, et on autorisera d'ailleurs la connexion seulement aux membres du groupe ftp2100. Les membres de ce groupe, lors d'une connexion, seront redirigés dans leur dossier home personnel.

Pour commencer, on va créer notre fichier config "ftp-perso.conf" :

nano /etc/proftpd/conf.d/ftp-perso.conf

Dans ce fichier, indiquez la configuration suivante après l'avoir lue et adaptée si besoin :

# Nom du serveur (identique à celui définit dans /etc/hosts)
ServerName "IT-CONNECT"

# Message de connexion
DisplayLogin "Bienvenue sur le FTP IT-Connect"

# Désactiver IPv6
UseIPv6 off

# Chaque utilisateur accède seulement à son home (pour les membres du groupe ftp2100)
DefaultRoot ~ ftp2100

# Port (défaut = 21)
Port 2100

# Refuser la connexion super-utilisateur "root"
RootLogin off

# Nombre de clients FTP max.
MaxClients 2

# Autoriser la connexion seulement aux membres du groupe "ftp2100" grâce à la directive DenyGroup.
# En précisant "!" on refuse tout sauf le groupe "ftp2100"
<Limit LOGIN>
DenyGroup !ftp2100
</Limit>

La configuration étant finalisée, nous allons recharger ProFTPd :

systemctl reload proftpd

IV. Créer le groupe et l'utilisateur FTP

Dernière étape avant les tests : la création du groupe ftp2100 et d'un utilisateur pour tester que tout fonctionne.

Le fichier "/etc/shells" référence les Shell du système, on va créer un faux Shell (car il pointe vers un binaire qui n'existe pas) en indiquant "/bin/false" pour l'attribuer ensuite à notre utilisateur FTP. L'intérêt de cette manipulation c'est que l'utilisateur ne pourra pas se connecter en shell sur le serveur, il peut donc utiliser seulement l'accès FTP.

Pour ajouter cette valeur, exécutez cette commande en tant que sudo :

echo "/bin/false" >> /etc/shells

Si l'on ouvre le fichier, on trouve ceci :

Maintenant, on va créer le groupe sur notre système Debian :

addgroup ftp2100

Ensuite, créez l'utilisateur "itconnect" et ajoutez-le au groupe ftp2100 :

adduser itconnect --shell /bin/false --home /home/itconnect --ingroup ftp2100

Tout est prêt, il ne reste plus qu'à tester !

V. Tester la connexion au serveur FTP

Pour tester la connexion à notre serveur FTP, j'ai utilisé FileZilla depuis un PC sous Windows mais ça peut fonctionner depuis un navigateur, un autre système Unix voire même votre smartphone ! Pensez à indiquer le port 2100 (ou autre) lorsque vous allez tester la connexion.

Vous devriez arriver dans le home de votre utilisateur, ce qui vous permet de lire et écrire dans ce dossier :

Le serveur FTP est en place, pour aller plus loin il faudrait le sécuriser en ajoutant le chiffrement et si vous avez besoin, ajouter des répertoires partagés accessibles par plusieurs utilisateurs, et non se limiter à l'accès à son home.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

7 commentaires sur “Debian 9 : Configurer un serveur FTP avec ProFTPd

  • salut ! comment tu chroot les users dans leur home ? c’est pas défaut ?

    Répondre
    • Salut Thomas, c’est avec la directive DefaultRoot et après oui ils sont « bloqués » dedans.

      Répondre
  • Bonjour, merci pour ce tuto! Il m’a été très utile.
    Cependant j’ai une interrogation et un soucis.
    J’ai suivi le tuto et j’ai donc donné accès aux utilisateurs locaux aux travers d’un groupe.

    J’ai voulu faire un deuxième groupe, mais cette fois avec des utilisateurs virtuels et la patatra, je ne peux pas donner un accès exclusif à la fois au groupe local et au groupe virtuel, auriez vous une solution?

    Répondre
  • bonjour lors de la configuration de mon serveur proftpd avec putty, un message apparaissant et signal que mon proftpd n’est pas actif. comment l’ activer? merci

    Répondre
  • pouvez vous m’aidez

    j’ai suivi votre procedure .le serveur repond sur la machine où il est installé.cependant je n’arrive pas à me connecter depuis mon reseau local.
    merci de m’aider
    cordialement

    Répondre
  • J’ai suivi toute la procedure (proftpd),
    mais j’ai une erreur à la ligne : echo
    -bash : /etc/shells: permission denied

    Que faire ?
    Je suis sur un VPS de chez Gandi (tout nouveau) , et je veux un FTP (FTPS quelle galère)

    Merci si vous pouvez me donner un conseil,
    Pierre.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.