Dans ce tutoriel, nous allons voir comment installer un serveur FTP sur notre VPS Linux. Le tuto est compatible Debian et Ubuntu.
Toutes les commandes qui suivent doivent être exécutées avec l'utilisateur administrateur (root).
Installation du paquet
L'installation de proftpd ne requiert qu'une simple commande grâce au gestionnaire de paquet:
apt install proftpd-basic
Configuration
La configuration par défaut est valide, néanmoins il convient de vérifier plusieurs points au niveau du fichier /etc/proftpd/proftpd.conf
:
Tout d'abord, il faut s'assurer que les utilisateurs sont bien chrootés dans leur répertoire utilisateur, de sorte à ne pouvoir se balader sur tout le système, avec l'option :
DefaultRoot ~
Ensuite, le paramétrage des ports passifs peut permettre aux clients ayant un routeur posant problème d'utiliser des ports généralement bien débloqués en sortie :
PassivePorts 60000 65534
Gestion des utilisateurs virtuels
Par défaut, l'authentification se fait par défaut avec les utilisateur Unix seulement (= les utilisateurs du système).
Il convient de régler sur l'authentification par utilisateurs virtuels, pour une gestion plus souple. Dans le fichier /etc/proftpd/proftpd.conf
, vérifiez que ces lignes ne sont pas commentées. Si elles ne sont pas présentes, ajoutez les.
AuthUserFile /etc/proftpd/ftpd.passwd AuthOrder mod_auth_file.c
Ensuite, vérifiez que la valeur RequireValidShell = off
est bien présente, et non commenté.
Nous allons maintenant initialiser le fichier ftpd.passwd
que va utiliser par la suite proftpd pour stocker les informations des utilisateurs FTP.
touch /etc/proftpd/ftpd.passwd chmod 440 /etc/proftpd/ftpd.passwd
La configuration est terminée, il ne reste qu'à redémarrer le service proftpd:
service proftpd restart
Ajout utilisateur
L'ajout d'un utilisateur FTP se fait via la commande suivante.
Remplacez :
-
LOGIN
par le nom d'utilisateur du compte FTP (ex: seb). -
UID
par l'UID du compte utilisateur système auquel le compte FTP (pour trouver l'UID d'un compte linux,id nomdeluser
, par exempleid root
). -
GID
par GID du group du compte utilisateur système auquel le compte FTP (pour trouver le GID d'un compte linux,id nomdeluser
, par exempleid root
). -
/PATH/TO/HOME
par le chemin du répertoire auquel aura accès le compte FTP.
Pour en savoir d'avantage sur la récupération de l'uid et du gid d'un utilisateur, consultez le tutoriel suivant: Comment trouver l'UID ou le GID d'un utilisateur.
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=LOGIN --uid=UID --gid=GID --home=/PATH/TO/HOME --shell=/bin/false
Pour éviter de prompt le mot de passe, on peut utiliser l'option --stdin
comme suit :
echo "MOTDEPASSE" | ftpasswd --passwd --stdin --file=/etc/proftpd/ftpd.passwd --name=LOGIN --uid=UID --gid=GID --home=/PATH/TO/HOME --shell=/bin/false
Changement mot de passe utilisateur
La modification se fait par la commande suivante :
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --change-password --name=LOGIN
Pour éviter de prompt le mot de passe, on peut utiliser l'option --stdin
comme suit :
echo "MOTDEPASSE" | ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --change-password --name=LOGIN --stdin
Suppression d'un utilisateur
Pour supprimer un utilisateur, utiliser la commande suivante :
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --delete-user --name=LOGIN
Bug de vérification du shell
En cas de problème de shell non valide lié à l'utilisation d'utilisateur, 2 solutions possibles.
- Soit désactiver la vérification du shell :
RequireValidShell off
- Soit ajouter au fichier
/etc/shells
:/bin/false
Par souci de propreté, préférez la deuxième solution :-)