Maniatux's Blog

Welcome to the internet

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.

Classé dans : Sysadmin - Mots clés : aucun