VSFTPD: configurer son serveur FTP avec des utilisateurs virtuels

J’ai déjà publié un article en anglais sur l’installation et la configuration de vsftpd. L’article est orienté serveur web, c’est-à-dire qu’on prend l’exemple d’un utilisateur qui se connect à son dossier /var/www/user1. Dans l’article qui suit je prend l’exemple d’un serveur personnel de données.

Nous allons donc:

  1. Créer des utilisateurs
  2. Leur donner accès à seulement un dossier
  3. Ajouter virtuellement des dossiers dans ce dossier (mount –bind)
  4. Créer un super utilisateur afin de laisser l’accès à tout le serveur

1. Installer vsftpd (Very Secure FTP Deamon) et libpam-pwdfile pour gérer les utilisateur

Je souhaite créer des utilisateurs pour se connecter au serveur (pour donner un accès à mes amis) mais je ne souhaite pas créer d’utilisateur local. On installe donc un module PAM (Pluggable Authentification Modules).

sudo apt-get install vsftpd libpam-pwdfile

2. Configurer vsftpd: /etc/vsftpd.conf

On copie le fichier de config. original (au cas ou)

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Et on en crée un nouveau

sudo vim /etc/vsftpd.conf

Copier ensuite ces lignes de configuration. Le fichier ne devrait contenir que ces lignes.

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/srv/ftp/public
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd

3. Créer des utilisateurs virtuels

Nous avons ici besoin de l’outil HTPASSWD qui vient apparament avec Apache2. Je l’ai déjà installé et configuré donc je n’ai pas eu de problème. On va considérer que vous l’avez aussi.

On créé un fichier pour y mettre nos utilisateurs

sudo mkdir /etc/vsftpd

Puis on créé un premier utilisateur. La commande vous demande ensuite de taper le mot de passe dans le terminal.

sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
  • -c signifie que le fichier ftpd.passwd va etre créé (à utiliser seulement au premier utilisateur donc)
  • -d signifie qu’on veut forcer MD5. Sur ubuntu 12.04 vous deviez être obligé de l’utiliser

Pour créer un nouvel utilisateur par la suite

sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2

4. Configurer PAM: /etc/pam.d/vsftpd

On copie le fichier d’origine

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

et crée un nouveau

vim /etc/pam.d/vsftpd

On copie-colle ces 2 lignes:

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so

5. Créer un utilisateur local sans shell

On nomme notre utilisateur ‘vsftpd’. Lorsqu’un utilisateur virtuel se connect, Ubuntu va utiliser ce nouvel utilisateur ‘vsftpd’ pour ses droits d’accès et de possession: chown et chmod.

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

6. Redémarrer VSFTPD

On utilise les services:

sudo service vsftpd restart

Si vous utilisé ubuntu 10.04:

/etc/init.d/vsftpd restart

7. Configurer le dossier /srv/ftp/public

Tout les utilisateurs vont être placé dans le dossier /srv/ftp/public/. On doit créer ce dossier et lui attribuer les bons droits d’accès: il ne doit pas être accessible en écriture!

Dans notre configuration on a précisé chroot_local_user=YES, cela signifie que l’utilsateur vera le dossier /srv/ftp/public comme le dossier racine /. Il ne verra aucun autre dossier.

Pour l’exemple on créé un dossier comme suit:

Le dossier public étant protégé en écriture il faut créer tous les dossiers en tant que root.

sudo mkdir /srv/ftp/public/Documents
sudo mkdir /srv/ftp/public/Photos
sudo mkdir /srv/ftp/public/Videos
sudo mkdir /srv/ftp/public/TEMP
sudo chown -R vsftpd:ftpusers /srv/ftp/public/*
sudo chmod 755 /srv/ftp/public/Documents
sudo chmod 555 /srv/ftp/public/Videos
sudo chmod 555 /srv/ftp/public/Photos
sudo chmod 777 /srv/ftp/public/TEMP
Note: Si vous souhaitez ajouter des dossiers divers déjà existants hors de /srv/ftp/ je vous conseille de regarder la fonction mount –bind.
mount –bind /home/julien/Dossier_cool /srv/ftp/public/Dossier_cool
Il reste ensuite à régler les droits d’accès.

8. Créer un accès Admin sur tout le serveur

On enregistre un nouvel utilisateur nommé ‘theadmin’.

sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin

Il faut ensuite ajouter un ligne dans /etc/vsftpd.conf

chroot_list_enable=YES

Cela signifie que tous les utilisateurs virtuels seront placé en prison dans leur dossier /srv/ftp/public SAUF ceux dont le nom est contenu dans le fichier /etc/vsftpd.chroot_list

On crée donc ce fichier en y ajoutant une seule ligne contenant le nom de l’utilisateur admin: ‘theadmin’. Pour en ajouter plusieurs il faut ajouter un utilisateur par ligne. Lors de sa connexion l’admin est placé dans le dossier /home/vsftpd.

 

2 Comments VSFTPD: configurer son serveur FTP avec des utilisateurs virtuels

  1. remi

    Bonjour,
    la config fonctionne très bien. merci pour le tuto. Par contre est-il possible de définir un répertoire pour un utilisateur virtuel précis.

    merci

    Reply
  2. Manuel

    Bonjour,
    J’aurais la mm question que Remi,car Mes utilisateur virtuel quand ils ce connectent sur le serveur ftp (vsftpd) il sont tous dan le mm répertoire /srv/ftp/
    Alors que mon deamon « muftp » a pour répertoire racine /home/serveur_ftp/
    J’uitilise vsftpd version 2.3.5 sur linux 12.04
    Merci d’avance.

    Reply

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>