Installation d'un serveur FTP: vsftpd
Rédigé par Xavier - -
Voici un tutoriel pour installer un serveur FTP sur votre machine. Ce sera vsFTPd.

Les utilisateurs peuvent être configurés de 3 façons:
- Utilisateurs locaux du système
- Utilisateurs virtuels de vsftpd
- Utilisateurs définis dans une base SQL
Pour l'exemple nous prendrons les utilisateurs locaux, c'est plus simple.
Requis
- Connaitre la gestion des droits sous Linux
Installation
Sur Ubuntu/debian, tout est dans les dépôts:
# apt-get install vsftpd
Répertoires et utilisateurs
Vsftpd va utiliser les utilisateurs et droits du système. Pour l'exemple nous allons créer un dossier "partagé", un utilisateur qui n'aura que les droits de lecture, et un autre qui aura les droits d'écriture.
- Dossier: /ftp
- Utilisateur guest: lecture uniquement
- Utilisateur admin: lecture et écriture
- Groupe ftp
Création du répertoire:
# mkdir /ftp
Création des utilisateurs et du groupe:
# useradd guest # useradd admin # groupadd ftp
Ajout des utilisateurs au groupe "ftp":
# adduser admin ftp # adduser guest ftp
Donner un mot de passe pour chacun (sera utilisé pour la connexion FTP:
# passwd admin # passwd guest
Il faut maintenant créer un dossier personnel pour chaque utilisateur. On ne s'en servira pas, mais on ne peut pas se connecter si ils n'existent pas...
# mkdir /home/guest # mkdir /home/admin
Puis définir les permissions du dossier:
# chown -R admin:ftp /ftp # chmod -R 750 /ftp
Le dossier appartient maintenant à l'utilisateur admin et celui-ci a les droits de lecture et d'écriture dessus. L'utilisateur guest peut aussi y accéder car il fait partie du même groupe. Cependant, il n'a que les droits de lecture. Vous pouvez faire des essais en vous loggant sous ces deux utilisateurs et en essayant d'écrire dans le répertoire /ftp.

Permissions.
Configuration
La configuration du serveur FTP se fait dans le fichier /etc/vsftpd.conf. Elle est globalement très simple.
# nano /etc/vsftpd.conf
Pour désactiver le login anonyme, remplacer le "YES" par "NO" à la ligne:
anonymous_enable=YES
Pour autoriser à la place les utilisateurs locaux, décommenter (virer le dièse) la ligne:
#local_enable=YES
Autoriser l'écriture (seulement si l'utilisateur a les permissions sur le dossier), décommenter la ligne:
#write_enable=YES
Activer le support du monitoring (visualisation de l'activité du FTP):
setproctitle_enable=YES
Pour passer le FTP en mode passif, si celui-ci doit traverser un NAT (ce qui est le cas avec les *box), rajouter:
pasv_enable=YES pasv_promiscuous=YES pasv_min_port=40000 pasv_max_port=40100 port_promiscuous=YES
Vous devrez ouvrir les ports 40000 à 40100 sur votre parefeu, en TCP. Pour "chrooter" les utilisateurs dans le dossier "/ftp" (sera leur racine), décommenter:
#chroot_local_user=YES
Puis rajouter:
local_root=/ftp
Maintenant, tous les utilisateurs du système sont autorisés à se connecter. Ce n'est pas forcément une bonne chose, nous allons donc mettre en place une whitelist. Rajoutez:
userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/vsftpd_users
La première ligne indique que nous mettons en place un "filtrage" des utilisateurs. La seconde indique que nous faisons une whitelist, et non une blacklist. La dernière indique quel fichier sera la whitelist. Il faut donc créer ce fichier:
# mkdir /etc/vsftp # nano /etc/vsftpd/vsftpd_users
Dans ce fichier, écrivez le nom des utilisateurs autorisés à se connecter. Ici, c'est:
admin guest
Puis relancez le serveur pour actualiser la configuration:
# /etc/init.d/vsftpd restart
Test
Depuis une machine du réseau, vous pouvez essayer de vous connecter avec Filezilla. Et normalement ça fonctionne.
Aller plus loin
Vous pouvez visionner l'activité de votre serveur. Utilisez la commande:
# watch -n 1 'ps ax | grep vsftpd | grep -v grep'
(Copiez-là dans un script)
Il est également possible d'utiliser un chiffrage SSL mais cela fera l'objet d'un prochain article.