Installer un serveur FTP VsFTPd

installer un serveur ftp

Un serveur FTP va permettre aux utilisateurs d’échanger/envoyer/récupérer des fichiers sur une machine distante.
Le protocole FTP (File Transfer Protocol) utilisé lors de ces opérations est dédié à la gestion des transferts de fichiers.
C’est grâce à ce type de serveur que l’on peut, par exemple, mettre à jour son site sur les serveurs web de son hébergeur.
Nous allons voir ici comment configurer un tel serveur.

Avant d’aller plus loin, il faut savoir que le protocole FTP n’est pas sécurisé. C’est à dire que toutes les données entre l’utilisateur et le serveur transitent « en clair ».
Si dans la plupart des cas cela le pose pas de problème, si la question de la sécurité se pose pour vous, vous vous tournerez alors vers des serveur FTPs ou mieux : sFTP de la suite OpenSSH.

FTPs ? sFTP ?
Non, il n’y a pas d’erreur ! le « s » avant ou après.
FTPs est le protocole FTP « sécurisé », pour faire simple il y a une surcouche SSL au-dessus de la couche FTP. Comme pour les pages web en https.
Le sFTP, lui, n’a aucun rapport avec le FTP puisqu’il s’agit du protocole SSH qui permet le transfert de fichier.
De vous à moi, on préfèrera le sFTP. Mais arrêtons-nous là, ce n’est pas l’objet.

En tout cas, dans l’immense majorité des cas, un serveur FTP classique sera amplement suffisant. Et c’est que nous allons mettre en place via le logiciel vsFTPd pour « Very Secure FTP Daemon ».
Alors, pour qu’il n’y ait pas de malentendu, vsFTPd n’a rien de « sécurisé  » au sens « cryptographique » du terme. « Very secure »… C’est juste son nom !
Cela dit, VsFTPd est encore à ce jour le seul serveur FTP n’ayant jamais connu de failles de sécurité majeure. Et ça… C’est déjà une bonne nouvelle.
En plus de cela, il est extrêmement simple à configurer. Il n’en faut donc pas plus pour le mettre en place.

Qu’allons nous faire de beau avec notre serveur FTP ?
Dans un premier temps, simplement permettre aux personnes qui ont un compte sur le serveur de se connecter pour échanger des fichiers.
Ensuite on pourra pousser un peu plus pour permettre la connexion des utilisateurs anonymes pour du partage de fichier public, créer un compte spécifique pour la mise à jour du site web… Etc…

Installer VsFTPd

L’installation est l’étape la plus rapide.

aptitude install vsftpd

Et voilà VsFTPd est installé…
Notez que par défaut le serveur est immédiatement lancé. Comme nous allons le configurer, on peut l’arrêter le temps de tout préparer.

service vsftpd stop

Configurer VsFTPd

Je l’ai dit plus haut, la configuration de VsFTPd est des plus simple. Tout se passe dans un seul fichier : /etc/vsftpd.conf.
Première chose à faire, toujours, faire une copie du fichier d’origine pour garder une conf saine en cas de problème de paramétrage.

cp /etc/vsftpd.conf /etc/vsftpd.conf.ori

Et maintenant on peut éditer notre fichier.

nano /etc/vsftpd.conf

Nous rentrons maintenant dans le vif du sujet.
Bonne nouvelle là encore, le fichier de configuration de VsFTPd est bien commenté.
Je vais donc me contenter de présenter les options à modifier.

listen_ipv6=YES

Si vous avez désactivé ipv6 vous pouvez laisser cette option commentée. Sinon dé-commentez là.

anonymous_enable=NO

On ne veut pas accepter les connexions sans identification ou d’utilisateurs inconnus pour le moment. Donc on passe l’option à « NO ».

local_enable=YES

Activez cette options à « YES » pour que les utilisateurs ayant un compte sur la machine puissent se connecter en FTP

write_enable=YES

Cette option permet aux utilisateurs connectés de pouvoir écrire des fichiers. Si l’option est à « NO » ils pourront uniquement télécharger des fichiers mais pas en envoyer.

local_umask=022

Je vous propose de passer le UMASK à 022 au lieu de 077 par défaut.
De cette façon les fichiers seront seront créés avec des permissions 644 au lieu de 600.
Cela reste tout à fait sécurisé et permet plus de flexibilité en cas de déplacement de fichiers ailleurs dans l’arborescence.

xferlog_file=/var/log/vsftpd.log

Activer les logs est recommandé pour savoir ce qu’il se passe. Choisissez le chemin de destination que vous souhaitez mais l’emplacement par défaut est satisfaisant.

idle_session_timeout=600

Vous pouvez définir ici le timeout en cas d’inactivité.
Personnellement je le passe à 10 minutes.

Le chroot des utilisateurs sur VsFTPd

Le « chroot ». Voilà une des options les plus intéressantes du FTP.
« Chrooter » un utilisateurs signifie « l’enfermer » dans son dossier racine. Dossier que nous pouvons définir.
Cela veut dire que l’utilisateur ne pourra jamais sortir, ou remonter plus haut que son dossier initial.
Concrètement, si on prend un cas classique, un utilisateur « toto » se loguera par défaut dans sa home qui est /home/toto.

Sans chroot, l’utilisateur pourra remonter l’arborescence pour accéder à /home puis à /. Et de là se balader dans n’importe quel dossier du serveur. Notez que « se balader » ne veut pas dire pouvoir modifier, hein.

Avec le chroot, l’utilisateur aura cette fois pour racine « virtuelle » non pas /home/toto mais / qui symbolise /home/toto. Vous suivez ?
Donc il se trouve déjà à la racine et ne plus se déplacer au dessus ou en dehors de ce point. Il est en quelque sorte emprisonné.

Configurer le chroot de VsFTPd

Pour configurer le chroot activez les options suivantes

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Ces trois options signifient que 1/ nous chrootons tous les utilisateurs, 2/ que nous allons faire une liste d’utilisateurs pour la gestion du chroot, et 3/ que cette liste est disponible à tel endroit dans tel fichier.

VsFTPd a une gestion particulière de sa « chrootlist ».
Si on active globalement le chroot avec notre première option, la chrootlist listera des utilisateurs qui ne DEVRONT PAS être chrootés.
Si j’ai 50 utilisateurs, ils seront tous chrootés. Mais si là dedans je veux que l’utilisateur « toto » ne le soit pas, alors j’irai indiquer son nom dans le fichier /etc/vsftpd.chroot_list.

A l’inverse si je n’active pas globalement le chroot pour mes 50 utilisateurs mais que « toto » doit être, lui, chrooté, j’irai mettre son nom dans la liste.
Et oui, cette fois-ci, si chroot_localuser=NO, le comportement de la chrootlist s’inverse et on indiquera alors à l’intérieur les utilisateurs qui DEVRONT être chrootés.

Pour résumer, la chrootlist gère les exceptions du paramétrage global.
Si globalement OUI -> chrootlist = NON
Si globalement NON -> chrootlist = OUI.

Compris ?

Le cas du chroot et de VsFTPd version 2.3.5

Dans cette version 2.3.5, on applique le chroot global comme je viens de le décrire plus haut, un utilisateur se connecte et BAM erreur !

server - 500 OOPS: cannot change directory...

Alors bug ou pas bug ?

Même si cela y ressemble… Ce n’en n’est pas un.
En fait VsFTPd refuse de chrooter un utilisateur dans un répertoire pour lequel il n’a pas les droits d’écriture (On vous l’a dit qu’il est « very secure »… :)).
Par défaut les utilisateurs sont chrootés dans leurs /home/<user>.
Tous les répertoires <user> sont bien accessibles en écriture par ces derniers… mais pas /home… donc ça ne marche pas…

Alors là deux options… Soit on déplace tout le monde dans un autre répertoire pour lequel on donne les bons droits, soit on attend le correctif / la solution.
Je vous le dit tout net, avec une centaine d’utilisateur, il est hors de question de modifier toute la conf… Donc on supprime le chroot pour l’instant et on attend la version 3 de VsFTPd qui proposera l’option allow_writeable_chroot=YES pour régler le problème.

Démarrer le serveur VsFTPd

Notre configuration est maintenant terminée, il n’y a plus qu’à démarrer le serveur.

service vsftpd start

S’il y a un problème de configuration VsFTPd ne démarrera pas… Et ne vous le dira pas… C’est un style…

Donc ouvrez votre client FTP, indiquez l’adresse de votre serveur, votre login, votre mot de passe et zou !

Si vous entrez c’est que votre conf est bonne, dans le cas contraire vérifiez votre fichier vsftpd.conf.
Testez votre FTP les permissions que vous avez ou pas et ajustez les paramètres en conséquence.

Le client FTP

Pour se connecter au FTP, l’utilisateur va avoir besoin d’un logiciel appelé « client FTP ». Un des plus connus et usité est Filezilla. Qui plus est il est opensource, ce qui ne gâche rien.

4 commentairesLaisser un commentaire

  • juste a titre indicatif pour les non connaisseur de linux, le fichier vsftpd.conf ce trouve dans le chemin suivant pas comme c est montionner dans ce tutorial:
    /etc/vsftpd/vsftpd.conf
    alors si vous voulez ouvrir lke fichier de configuration c’est comme suite;
    avant tous en peut l’ouvrir par plusieur editeurs: nano, vi, gedit,
    nano /etc/vsftpd/vsftpd.conf

  • @rabia Merci pour la remarque. Mais en fait cela va dépendre de ta distribution.
    Ici, sur une debian wheezy, le vsftpd.conf est bien dans /etc/vsftpd.conf.
    Effectivement chacun devra adapter en fonction de sa version.

Vous avez aimé cet article ? Réagissez !

Votre email ne sera pas publié. Les champs requis sont marqués d'une astérisque *