1. Avant-propos sur le FTP

De nombreux transferts de fichiers ont lieu à chaque instant sur internet. Le vieux protocole ftp (File Transfert Protocol) est toujours aussi utilisé parce qu'il est simple et rapide à mettre en place. Pour les utilisateurs, un transfert FTP est aujourd'hui facilité grâce à divers clients FTP totalement graphique.
J'ai choisi de vous montrer le serveur ftp : vsftpd. Parce qu'il est, je pense, suffisamment simple et robuste pour être apprécié par tous.

2. Le vif du sujet : vsftpd

2.1. Installation sous linux du serveur ftp

Je vous propose d'utiliser le système de package implémenté sur votre distribution.

Debian-like
Sélectionnez

apt-get install vsftpd
rpm-like
Sélectionnez

urpmi vsftpd

Le fichier de configuration se trouve régulièrement dans /etc avec le doux nom de vsftpd. Si jamais votre distribution a eu la bonne idée de changer sa place, faites un petit :

 
Sélectionnez

find /etc -name "vsftpd.conf"

pour trouver son emplacement dans /etc

2.2. Configuration minimale via le fichier : vsftpd.conf

Le fichier vsftpd.conf vous propose un grand nombre d'options. Nous allons examiner celles qui sont les plus simples et les plus interessantes dans une configuration minimale mais déjà puissante.
Les valeurs données aux options sont surtout dépendantes de l'utilisation prévue pour ce serveur ftp. "Pourquoi l'avez vous fait? Dans quel but? Pour qui? Dans quel environnement?" sont des questions essentielles à se poser avant de vous lancer dans la configuration.

Options Description Commentaire
listen Permet de définir si le démon est en standalone (YES) ou dirigé par (x)inetd (NO) Partisan du (x)inetd, Partisan du standalone.. chacun son choix. Personnellement, je préfère le standalone...
anonymous_enable Permet d'accepter les connexions anonymes Tout dépend du but de votre serveur. Par défaut, je conseillerai de rejeter les connexions anonymes. Mais si votre serveur est au sein d'un réseau et que tout le monde doit y accéder, alors mettez YES, sinon NO
local_enable Oblige les personnes à s'identifier avec un compte utilisateur Dans tous les cas, je dis YES. Si une personne a un compte, le serveur ftp est présent pour elle. Sauf si vous voulez pas les laisser exporter ou importer des fichiers
write_enable Permission d'écriture Comme les deux précédents, tout dépend de vos besoins et de la fonction de votre service ftp
xferlog_file Ecriture d'un log des fichiers Obligatoire selon moi pour tout administrateur digne de ce nom. Il faut savoir ce qu'il se passe surtout sur ces protocoles qui permettent les entrées/sorties de données.
ftpd_banner Banniere d'affichage a la connexion FTP Etrangement, je trouve très importante cette bannière qui peut sembler superflue. Pourquoi? Parce que vous pouvez l'utiliser pour communiquer : Dire sur quel serveur l'utilisateur se connecte (pratique quand on doit se connecter à divers serveurs), donner des informations sur les mises à jour, les maintenances ...etc. Indispensable si vous voulez envoyer des informations.
chroot_local_user Permet de chrooter la connexion de l'utilisateur Quand l'utilisateur se connecte en ftp, il arrive dans son répertoire home(défini dans /etc/passwd). Cette option active vous permet de l'obliger à rester dans ce répertoire (ou tout du moins de ne pas redescendre dans l'arborescence). Il reste compartimenté dans son répertoire home. Très intéressant, si vous ne voulez pas qu'il se balade partout et télécharge des fichiers systèmes.

2.3. Quelques cas concrets

Si vous désirez faire un serveur pour que quelques amis viennent télécharger les vidéos de vacances, avec ces règles

  • Utilisateurs déclarés
  • Rien à protéger
  • Ecriture interdite


Je conseillerais :

 
Sélectionnez

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
xferlog_file=YES
ftpd_banner=/etc/ma_banniere
chroot_local_user=NO

Par contre, vous êtes en entreprise :

  • Chaque utilisateur doit se déclarer
  • Compartimenter les utilisateurs pour éviter les allers-retours dans le système

Il faut mieux renforcer les règles de sécurité avec le chroot_local_user :

 
Sélectionnez

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
xferlog_file=YES
ftpd_banner=/etc/ma_banniere
chroot_local_user=YES

Un autre cas pour terminer avec l'anonymous
Les règles sont les suivantes :

  • Pas besoin de s'identifier
  • Compartimenter les anonymes
  • Pas de compartiment pour les utilisateurs identifiés.

Je proposerais :

 
Sélectionnez

listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=NO
xferlog_file=YES
ftpd_banner=/etc/ma_banniere
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Dans le fichier vsftpd.chroot_list, vous devez mettre : "anonymous" afin de spécifier que les personnes connectées en anonyme seront chrootées.

Si vous mettez chroot_local_user à YES, le fichier vsftpd.chroot_list contiendra la liste des personnes NON compartimentées!

3. Conclusion

C'est fini ! Votre serveur ftp est installé. Les options vues sont simples et efficaces. Nous verrons dans un second temps l'ensemble des fonctions disponibles pour des cas bien précis.
Nous verrons bientôt l'ensemble des fonctions de ce serveur FTP en gardant toujours un oeil sur la pratique!

4. Remerciements

à Pedro204 et gege2061 pour la relecture!