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 exemple id 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 exemple id 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 :-)