Tout d'abord pourquoi vsftpd et pas un autre ?
vsftpd est reconnu comme l'un des serveurs les plus sûrs dispos dans le monde *nix (IBM, Redhat, kernel.org l'utilisent). Il est simple à mettre en oeuvre et ne comporte pas de fonctionnalites exotiques.
L'autre serveur FTP qu'il est bien est pure-ftpd. Il est aussi très sûr, mais contient nettement plus de fonctionnalités, pas toujours utiles, que vsftpd et sa mise en place est un peu plus difficile. Un avantage de pure-ftpd est que son principal développeur est français et fréquente le forum d'hardware.fr sous le pseudo d'Axey.
Installation de vsftpd
On l'installe comme d'habitude avec
aptitude install vsftpd
Tout se passe ensuite dans /etc/vsftpd.conf qui est plutôt bien commenté. Voici les principales modifications à y apporter à l'aide d'un éditeur de texte en root :
anonymous_enable=NO #on desactive les connexions anonymes local_enable=YES #on autorises les comptes locaux a se connecter write_enable=YES #si vous voulez activer l'ecriture local_umask=022 #droit par defaut des fichiers uploades : ici droits max pour le possesseur, droit de lecture pour le groupe, droit de lecture pour tout le monde, un plus restrictif est 077, aucun droit pour le groupe et tout le monde anon_upload_enable=NO #on interdit l'upload anonyme anon_mkdir_write_enable=NO #on interdit la creation des repertoires pour les anonymes nopriv_user=ftp #l'utilisateur sous lequel sera execute le serveur FTP, un utilisateur sans privilege pour eviter tout probleme async_abor_enable=NO #on desactive les requetes asynchronous ABOR qui ont un code pouvant poser des problemes de sécurite car non trivial ascii_upload_enable=NO #on interdit l'upload en ascii car source de probleme de securite ascii_download_enable=NO #on interdit le download en ascii car source de probleme de sécurite chroot_local_user=YES #pour bloquer les utilisateurs dans leur répertoire chroot_list_file=/etc/vsftpd.chroot_list #le fichier contenant les utilisateurs non bloques dans leur repertoire
Gestion des utilisateurs
Fichier /etc/ftpusers
Ce fichier contient les comptes locaux disponibles sur le serveur Linux n'ayant pas le droit de se connecter au FTP. Pour le remplir une première fois :
cat /etc/passwd |cut -d ":" -f1 > /etc/ftpusers
On met tous les comptes présents sur le serveur, car on va ensuite créer les comptes qui ont le droit de s'y connecter en FTP.
Création des comptes
On crée ensuite les comptes qui pourront accéder au serveur FTP :
adduser --home /monrepertoireftp --ingroup nogroup nomutilisateur
Remplir uniquement le mot de passe, le reste des infos étant facultatif.
Le répertoire spécifié par –home est celui dans lequel se rendra l'utilisateur quand il sera connecté au serveur FTP et c'est dans ce répertoire qu'il peut être bloqué en chroot (cage).
Fichier /etc/vsftpd.chroot_list
Dans ce fichier on rajoute les utilisateurs qui ne seront pas bloqués dans leur home (défini par adduser avec –home) et qui pourront se déplacer dans toute l'arborescence du système. Il faut remplir un nom par ligne.