Debian 9 : Configurer un serveur FTP avec ProFTPd
Sommaire
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.
salut ! comment tu chroot les users dans leur home ? c’est pas défaut ?
Salut Thomas, c’est avec la directive DefaultRoot et après oui ils sont « bloqués » dedans.
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?
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
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
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.
Vous avez la solution ici : https://stackoverflow.com/questions/49048720/unable-to-modify-etc-shells-on-macos-to-include-brew-installed-version-of-bash
J’ai utilisé
echo /bin/false | sudo tee -a /etc/shells
au lieu de
sudo echo « /bin/false » >> /etc/shells
et ça a fonctionné !