La notion d’utilisateurs virtuels est très simple, il s’agit d’un utilisateur pouvant se connecter uniquement via FTP (par opposition aux comptes de la machine, qui peuvent également se connecter en FTP). Toutes connexions locales, SSH… lui seront refusées.La méthode utilisée est la suivante :
* Les utilisateurs possèdent l’UID d’un utilisateur système existant. Il est possible de créer un utilisateur virtuel possédant le même UID que votre utilisateur système courant (afin de garder les mêmes accès). Le même principe est utilisé pour le GID.
* Chaque utilisateur virtuel possède un profil unique contenant ses limites de bande passante, ses quotas, ses horaires d’accès…
Tout cela apporte une sécurité assez robuste en cas d’exploitation d’une éventuelle faille.
Installation (-20 min)1. Installer le serveur avec la commande :
sudo apt-get install pure-ftpd pure-ftpd-common… A ce stade, les utilisateurs anonymes ne peuvent pas se connecter et les clients authentifiés peuvent se balader partout dans l’arborescence…
a. Chroot des utilisateurs
Créer un fichier ChrootEveryone et mettre la valeur “yes” à l’intérieur
sudo touch /etc/pure-ftpd/conf/ChrootEveryone sudo gedit /etc/pure-ftpd/conf/ChrootEveryoneb. Autorisation des accès anonymes
Editer le fichier de configuration NoAnonymous et remplacer la valeur “yes” par “no”
sudo gedit /etc/pure-ftpd/conf/NoAnonymous2. Tout d’abord, créer un nouveau groupe pour pureftpd :
sudo groupadd ftpgroup3. Ensuite, ajouter un utilisateur qui n’aura aucune permission dans son répertoire personnel, ni aucun shell valide :
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser4. Nous allons maintenant pouvoir créer notre premier utilisateur virtuel ‘syd’ avec la commande pure-pw useradd :
sudo pure-pw useradd syd -u ftpuser -g ftpgroup -d /var/ftp/syd -N 200Ici, l’utilisateur syd sera ’emprisonné’ (chrooter) dans son répertoire personnel (/var/ftp/syd) grace à l’option “-d” et sera limité à 200 MB d’espace disque avec l’option “-N 200”. Attention, le premier mot de passe demandé est celui du compte root qui exécute la commande, les 2 suivants ceux à créer pour l’utilisateur virtuel syd.
Remarque : Le dossier “/var/ftp/syd” indiqué sera créé automatiquement à la première connexion si le fichier “/etc/pure-ftpd/conf/CreateHomeDir” contient “yes”
5. Les utilisateurs virtuels sont enregistrés dans le fichier /etc/pure-ftpd/pureftpd.passwd ; après chaque ajout d’un utilisateur virtuel, il faut impérativement mettre à jour la base de donnée avec la commande :
sudo pure-pw mkdb6. Pour finir, il faut créer un lien symbolique pour activer l’authentification des utilisateurs virtuels :
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/75puredbVoilà, en quelques lignes de commandes vous avez installé un serveur FTP accessible par vos utilisateurs systèmes, vos utilisateurs virtuels et un compte anonyme
Pour aller plus loin
1. Modification des options d’un compte virtuel
sudo pure-pw usermod syd -d /NouveauDossierDeSyd -N 400Ici on change le répertoire de base de notre utilisateur syd et on lui affecte un nouveau quota
2. Suppression d’une option
sudo pure-pw usermod syd -N ''Mettre des simples quotes sans valeur pour l’option à retirer
3. Suppression d’un compte virtuel
sudo pure-pw userdel sydAstuce : rajouter le switch -m à la fin de la commande pour mettre à jour la base de donnée automatiquement
4. Réinitialisation d’un mot de passe
sudo pure-pw passwd syd5. Lister les utilisateurs virtuels
sudo pure-pw list6. Afficher les options d’un utilisateur virtuel
sudo pure-pw show syd7. Actions sur le serveur ftp
sudo /etc/init.d/pure-ftpd {start|stop|restart|force-reload}Pureadmin est une interface graphique qui permet de gérer les utilisateurs virtuels de pure-ftpd mais également de surveiller et interagir avec l’activité du service ftp. Pour l’installer :
sudo apt-get install pureadminAdeptes de la ligne de commande ou d’interfaces graphiques (mon choix est fait), vous avez maintenant les bases pour monter votre propre serveur ftp !