Un serveur FTP chez soi
Tutoriel pour Filezilla FTP server

Disposer d'un serveur FTP chez soi peut s'avérer extrêmement pratique et utile, pour rendre disponibles des fichiers à des amis, quel que soit leur niveau en informatique ou le matériel dont ils disposent. Par exemple pour distribuer un grand nombre de photos ou des vidéos après un évènement. Il peut être aussi très utile d'accéder à ses propres documents lorsque l'on est en déplacement ou sur un ordinateur qui n'est pas le sien. Bien entendu, respectez le droit d'auteur et ne mettez pas n'importe quels fichiers à la disposition de n'importe qui. Ce tutoriel a pour but de décrire toutes les étapes pour installer chez soi un serveur FTP, sur une configuration personnelle Windows typique.

Présupposés

Ce tutoriel s'adresse à des utilisateurs de Windows ayant les connaissances de base pour l'utiliser et y installer des logiciels. Il suppose également que vous sachiez ouvrir et rediriger un port entrant internet sur votre routeur. En effet, chaque routeur étant différent, je serai bien incapable d'indiquer la marcher à suivre pour chaque modèle du marché. Je ne peux donc que vous conseiller de lire la notice de ce routeur pour cette opération. Il existe également un site très pratique pour apprendre à effectuer cette tâche sur un grand nombre de modèle de routeurs : PortForward.com. Accessoirement, il faudra aussi savoir configurer votre routeur pour qu'il donne toujours la même adresse à cet ordinateur sur votre réseau interne, en liant cette adresse IP à son adresse MAC.

DynDNS : Pourquoi et comment ?

Avec une connexion personnelle, on ne dispose que très rarement d'une IP fixe, mais d'une IP dynamique, changeant à intervalles pas forcément réguliers ni prévisibles. Pour cette raison, la première étape avant d'installer chez soi un serveur (FTP ou autre) est d'obtenir un DynDNS, c'est-à-dire une adresse qui redirigera automatiquement un utilisateur vers la bonne adresse IP. Ce service est heureusement gratuit, et disponible chez http://www.dyndns.com.

Une fois un compte créé chez DynDNS, il suffit de cliquer sur "Add Host Services" et de choisir l'adresse que l'on désire. Cette étape effectuée, il faut configurer son système pour transmettre l'adresse IP au service à chaque changement. La méthode standard est tout simplement d'installer le logiciel fourni, DynDNS Updater. Cependant, de nombreux modems-routeurs ou box de FAI peuvent également s'en charger. Cette option est très pratique, en évitant de devoir faire tourner un logiciel, même léger, en permanence sur une machine. Voici par exemple la page de configuration d'un routeur Netgear DG834GT :

Configuration d'un DynDNS dans un routeur Netgear DG834GT

Téléchargement et installation de Filezilla Server

Il existe de nombreux logiciels de serveurs FTP disponibles pour Windows et les autres systèmes d'exploitations. Le choix de ce tutoriel est Filezilla Server : Logiciel libre, souvent mis à jour, simple d'emploi et très complet. Son installation est parfaitement simple et classique pour un logiciel Windows. Je conseille de laisser les options par défaut pour les trois étapes présentées par ces captures d'écran :

Installation : Écran du choix des composants
Installation : Écran du comportement du serveur
Installation : Écran du comportement du client de configuration

Toute la configuration du logiciel est ensuite accessible via le Menu Démarrer grâce à l'entrée "Filezilla Server GUI". Ce dernier permet à la fois de configurer le serveur FTP et de surveiller ce qui s'y passe. Notez qu'il est possible de configurer le serveur depuis un autre ordinateur que celui où il est installé, mais cette option ne sera pas abordé ici pour rester dans la simplicité. Tout ce qui va être expliqué maintenant se situe dans le menu Edit du GUI, dont voici une capture :

Le client de configuration

Configuration réseau

C'est l'étape qui s'avère souvent la plus frustrante et la plus incompréhensible, de nombreux tutoriels ayant été écrits sans prendre en compte la prolifération des routeurs et autres box, et donc des NAT. Raison pour laquelle j'insiste sur le fonctionnement du serveur à ce niveau, et les actions à effectuer.

Le mode actif

C'est le mode le plus simple : le client contacte le serveur sur le port TCP 21 (standard), établissant la connexion dite de contrôle. Puis le serveur établit une connexion vers un port du client compris entre 1024 et 65635.

Une connexion FTP standard en mode actif

La seule action à faire pour configurer ce mode est de choisir le port TCP sur lequel le serveur FTP écoutera. Sur un FTP personnel, il n'est en effet pas forcément une bonne idée de laisser le port TCP par défaut 21, pour des raisons de sécurité. Un serveur sur un port non standard sera plus discret, réduisant donc le risque d'attaque par des pirates du dimanche ou des robots. Choisissez de préférence un port supérieur à 1024, et non utilisé par un protocole répandu. Pour une liste de ports communément utilisés, consultez cette page de Wikipedia. Dans l'exemple qui va suivre, j'ai choisi le port 4223.

Configuration du port FTP

L'étape finale est de rendre le serveur FTP accessible de l'extérieur. Si vous avez un pare-feu ou un modem-routeur, les connexions entrantes de clients potentiels seront en effet bloquées. Il faut donc ouvrir et rediriger le port TCP choisi vers l'ordinateur où est installé Filezilla Server. On arrive au schéma suivant :

Connexion FTP active et serveur derrière un NAT

Le mode passif

L'inconvénient du monde actif est que l'utilisateur se connectant au serveur FTP avec son logiciel client doit avoir des ports entrants ouverts, pour établir la connexion de données. Ce qui n'est pas forcément possible pour des raisons techniques ou autres (réseau d'entreprise, connexion dans un lieu public, utilisateur débutant...) Le mode recommandé, et souvent configuré par défaut, est donc le mode dit passif. En conséquence, il est indispensable de le configurer correctement, même sur un petit serveur de particulier. Dans ce mode, la connexion de contrôle est identique, mais c'est cette fois le client qui contacte le serveur pour la connexion de données, sur une plage de port transmise par le serveur via la transmission de contrôle. Seul le serveur doit donc disposer de ports entrants ouverts, et n'importe quel client, même sur une connexion basique ou bridée, peut désormais se connecter sans problèmes.

Une connexion FTP standard en mode passif

Il y a deux paramètres importants à indiquer pour faire marcher ce mode avec Filezilla Server. Tout d'abord, l'IP du serveur FTP, qui sera ici tout simplement le DynDNS. Et ensuite la plage de port TCP à utiliser pour la connexion. Comme pour le port principal, choisissez une plage non standard comprise entre 1024 et 65365. Ici, il a été choisi la plage 4723-4730.

Configuration du port FTP

Comme précédemment, il faut rendre le FTP accessible de l'extérieur. Pour cela, il faut ouvrir et rediriger la plage de port choisie vers l'ordinateur ou est installé Filezilla Server. Le schéma final de toutes ces connexions sera donc le suivant :

Connexion FTP passive et serveur derrière un NAT

Récapitulation

Le routeur doit donc être configuré pour que les ports suivants soient ouverts et redirigés vers la machine accueillant le serveur FTP. Notez bien que ce sont les ports choisis pour ce tutoriel. Vous pouvez très bien en choisir d'autres, du moment que les ports choisis dans Filezilla Server sont les mêmes que ceux que vous redirigez.

PortUtilisation
Port 4223 TCPConnexion de Contrôle, tous les modes.
Ports 4723-4730 TCPConnexion de données, mode passif.

Gestion du FTP

Filezilla Server permet de définir très finement quels répertoires vous voulez-rendre visibles pour chaque utilisateur, et avec quelles permissions. Il permet aussi de définir des groupes d'utilisateurs pour simplifier la gestion d'utilisateurs aux permissions proches ou identiques.

Login et mot de passe des utilisateurs

Chaque utilisateur d'un serveur FTP doit disposer pour s'y connecter d'un nom d'utilisateur (login), et d'un mot de passe. Cet écran permet très simplement d'ajouter, d'enlever ou de modifier un utilisateur et son mot de passe associé. Notez qu'une fois un mot de passe entré, il est impossible de le retrouver. En cas de perte de ce dernier, il n'y a pas d'autre choix que de le changer. Pour gérer les mots de passe de vos utilisateurs, il peut donc être utile d'utiliser un logiciel tel que Keepass pour les générer et les enregistrer en toute sécurité.

Configuration générale d'un utilisateur

Répertoire racine

C'est le répertoire principal d'un utilisateur, qui contiendra tous les fichiers et dossiers auquel il aura accès. Pour le définir, ajoutez un répertoire puis appuyez sur le bouton Set as home dir. Vous pouvez aussi définir les permissions pour les fichiers et les dossiers selon les droits que vous désirez accorder à chaque utilisateur.

Configuration des repertoires d'un utilisateur

Voici la liste des permissions possibles pour les fichiers, puis pour les répertoires :

OptionDescription
Read Lecture (téléchargement) des fichiers
WriteÉcriture (envoi) des fichiers
DeleteSuppression de fichiers
AppendReprise de l'envoi d'un fichier
CreateCréation d'un nouveau répertoire
DeleteSuppression d'un répertoire
tdstObtenir la liste des fichiers contenus dans un répertoire
+Subdirs : Appliquer les mêmes permissions aux sous-répertoires

Autres répertoires

Vous avez noté qu'il ne peut y avoir logiquement qu'un seul répertoire racine par utilisateur. Que faire cependant si vous voulez rendre accessible à un utilisateur des fichiers ou des dossiers qui ne sont pas dans le même dossier, voire sur des disques différents ? Et que faire quand vous désirez mettre des permissions différentes à chaque dossier ? Et bien c'est très simple, il suffit de créer des alias, que l'on peut considérer comme des répertoires virtuels.

Imaginez que le répertoire racine d'un utilisateur soit D:\FTP\ mais que vous vouliez aussi lui permettre d'accéder à E:\Photos\Anniversaire\ et d'envoyer ses fichiers dans D:\Envois\. Pour celà, il faut faire deux alias en cliquant sur la colonne Aliases dans la liste de répertoires partagés :

RépertoireAlias
D:\FTP\Aucun
E:\Photos\Anniversaire\D:\FTP\Anniversaire\
D:\Envois\D:\FTP\Envois\

Les deux répertoires seront alors visibles et accessibles à la racine du FTP. L'avantage est aussi de pouvoir donner des permissions différentes à chaque répertoire. Par exemple ici, on crée un répertoire Envois ou il sera possible d'envoyer des fichiers tandis que tous les autres répertoires seront en lecture seul. Je conseille d'ailleurs fortement de limiter les répertoires ouverts en écriture au strict minimum. On ne sait jamais quels problèmes peuvent causer les utilisateurs même les plus raisonnables (suppression du mauvais fichier, saturation du disque dur...). Un faible nombre de répertoires d'envoi permet de trouver et résoudre plus rapidement la source d'un problème de ce genre.

Les groupes

Il est fort possible que vous désiriez donner les mêmes droits, ou des droits très ressemblants, à des utilisateurs différents. C'est là que les groupes sont extrêmement pratique.

La première étape consiste à créer un groupe : la procédure est quasiment identique à celle de la création d'un utilisateur. La seule étape manquante est celle de l'assignation d'un mot de passe. Logique : chaque utilisateur aura le sien propre, il ne servirait à rien d'en donner un au groupe.

Configuration des repertoires d'un groupe

Une fois chaque groupe créé, vous pouvez déclarer des utilisateurs pour ce groupe. Ces derniers ne devront alors pas avoir de répertoire racine, ce dernier étant décidé au sein du groupe, mais uniquement des répertoires supplémentaires, de type alias. Vous pourrez donc par exemple assigner un répertoire commun à tout le groupe, et un ou plusieurs répertoires personnels pour chaque utilisateur, qu'il sera le seul à voir.

Conclusion

Ce tutoriel, loin de présenter en détails toutes les possibilités de Filezilla Server, devrait ceendant vous permettre de l'installer, le configurer et le découvrir rapidement, en évitant certains écueils classiques. À vous d'explorer ensuite les autres possibilités du logiciel pour voir lesquels vous seront utiles.


Un commentaire ? Une question ?
Venez donc sur le forum dédié.
Avertissement : Ce tutoriel est écrit en toute bonne foi et dans le seul but d'aider des utilisateurs, et il ne contient a priori pas de conseils dangereux. Son utilisation se fait cependant entièrement à vos risques et périls. Je ne saurai cependant en aucun cas être tenu responsable de tout problème (perte de données, intrusion, etc...) qui pourrait survenir sur votre ordinateur.
Creative Commons License
Ce tutoriel est mis à disposition sous un contrat Creative Commons.
Tutoriel mis en ligne le 12 juillet 2008