IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Installation complète d'un serveur web sous Debian

Installation complète d'un serveur web sous Debian


précédentsommairesuivant

V. Configuration de VSFTPD en mode "utilisateur virtuel"

V-A. Introduction

Maintenant que nous avons un site serveur web opérationnel, et la possibilité de créer nos bases de données, il devient nécessaire de mettre nos fichiers sur le serveur. Pour cela, nous installons VSFTPD. C'est un serveur FTP très sécurisé (Very Secure File Transfert Protocol Daemon).

VSFTPD dispose de plusieurs styles de paramétrage de base. Là encore, étant donné que nous souhaitons pouvoir disposer de plusieurs comptes FTP par domaine, et notamment d'avoir des comptes FTP qui pointent sur des sous-domaines, nous utiliserons le paramétrage par utilisateur virtuel.

Pour ce faire, nous allons utiliser une base de données de type Berkeley. Il s'agit d'une base de type non-sql. Elle n'est pas prévue pour être interrogée comme Mysql ou SQL server. En fait, il s'agit d'une table de hachage. Chaque enregistrement ne sera constitué que d'un login et d'un mot de passe. Ce type de base de données est indexé, extrêmement rapide et simple à mettre en œuvre. L'utilisation de ce type de base de données est obligatoire pour l'utilisation d'une identification de type PAM.

Pour le principe, nous ne définissons qu'un seul utilisateur UNIX à notre serveur FTP. Lorsque l'on se connecte avec un utilisateur, le programme vérifie dans notre base de données si celui-ci existe, et si le mot de passe correspond. A partir de là, il va chercher les paramètres concernés (chroot, droits spécifiques) et renvoie le répertoire concerné.

Grâce au chroot, il n'y a aucun souci de sécurité, car le répertoire est considéré comme étant un répertoire racine, il n'est donc pas possible de remonter la hiérarchie. Ce point est important du point de vue sécuritaire, car chaque connexion FTP utilise exactement le même utilisateur Unix : www-data.

Pour créer un nouvel utilisateur, il suffit de lui créer une entrée dans la base Berkeley, et un fichier de configuration personnel.

V-B. Préparation

On commence par préparer la configuration en créant le répertoire qui contiendra tous nos fichiers :

 
Sélectionnez
# mkdir /etc/vsftpd

On va devoir modifier la configuration de VSFTPD. Pour cela, on effectue une sauvegarde. Cela permettra de revenir en arrière en cas de souci :

 
Sélectionnez
# cp /etc/vsftpd.conf /etc/vsftpd.conf.bak 
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

V-C. La base de données

Il nous faut maintenant installer la base de données. On utilise pour cela la commande :

 
Sélectionnez
# aptitude install libdb3-util

Ce type de base de données est extrêmement simple, c'est pourquoi nous l'utilisons. Il se base sur un fichier de type texte contenant nos différentes informations, entrées une à une. En fait, il n'y a pas de tables, ni de champs à configurer ! On va juste convertir un fichier contenant nos données sous cette forme :

 
Sélectionnez
login 1
password 1
login 2
password 2
...
login n
password n

On crée donc un fichier login.txt (le .txt n'est là que pour indiquer que ce sera nos données brutes ! Vous pouvez le nommer comme bon vous semble !). Puis on va le convertir en base de données. Actuellement, je n'ai pas encore trouvé le moyen de rajouter des données dans la base Berkeley directement. En conséquence, je garde le fichier login.txt, je lui donne des droits minimums (600), pour pouvoir régénérer la base par la suite.

# nano /etc/vsftpd/login.txt
Sélectionnez
	user1
	pass1
	user2
	pass2
 
Sélectionnez
# db3_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db 
# chmod 600 /etc/vsftpd/login.db 
# chmod 600 /etc/vsftpd/login.txt

On va maintenant informer le module PAM d'utiliser notre base de données nouvellement créée. Pour cela :

nano /etc/vsftpd/vsftpd.pam
Sélectionnez
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
 
Sélectionnez
# cp /etc/vsftpd/vsftpd.pam /etc/pam.d/vsftpd

Si le système nous informe que le fichier existe déjà, on l'écrase.

V-D. Modification de vsftpd.conf

On va maintenant modifier notre fichier vsftpd.conf. Pour cela, je vous en propose un, que vous pourrez modifier à votre convenance (les commentaires sont assez clairs, je pense) :

# nano /etc/vsftpd.conf
Sélectionnez
# Ceci configure VSFTPd en mode "standalone"
listen=YES

# On désactive les connexions anonymes
# et on active les non-anonymes (c'est le cas des utilisateurs virtuels) :
anonymous_enable=NO
local_enable=YES

# Pour des raisons de sécurité on interdit toute action d'écriture :
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

# 'guest_enable' est très important: cela active les utilisateurs virtuels !
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'virtual' que nous avons défini plus haut, et au home
# correspondant : '~virtual/'.
guest_enable=YES
guest_username=www-data

# On définit les droits par défaut des fichiers uploadés
anon_umask=022

# On veut que les utilisateurs virtuels restent chez eux : '~virtual/'
# (attends, on leur a fait un toit, ce n'est pas pour rien !)
chroot_local_user=YES

# On défini le nombre maximum de sessions à 200 (les nouveaux clients recevront
# un message du genre: "erreur : serveur occupé").
# On définit le nombre maximum de sessions par IP à 4
max_clients=200
max_per_ip=10

####################################
# Debian customization             #
# (ou adoptons la Debian attitude) #
####################################
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default.  These settings are more Debian-friendly.
#
# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

# Permet d'utiliser les configurations individuelles pour chaque utilisateur
user_config_dir=/etc/vsftpd/vsftpd_user_conf

V-E. Paramétrer les utilisateurs

On va maintenant chrooter nos utilisateurs dans leur répertoire respectif. Pour cela, on crée le répertoire qui sera utilisé pour contenir nos différents fichiers par utilisateur. Et on crée le fichier pour chaque utilisateur dans notre base de données.

 
Sélectionnez
# mkdir /etc/vsftpd/vsftpd_user_conf/
# nano /etc/vsftpd/vsftpd_user_conf/user1
Sélectionnez
anon_world_readable_only=NO
local_root=/home/user1
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

V-F. Redémarrage et test

On redémarre notre service FTP :

 
Sélectionnez
# /etc/init.d/vsftpd restart

Et il ne nous reste plus qu'à nous connecter à notre compte ftp en utilisant :

 
Sélectionnez
IP: ip du serveur ou nom de domaine
login: user1
password: password1

Et voilà. Un petit test, pour s'assurer que tout fonctionne, et c'est terminé ;). Dans le cas où vous ne pouvez pas uploader de fichiers, c'est que les droits ne sont pas corrects ou adaptés. Vérifiez bien que le répertoire /home/user1 a les droits www-data:www-data pour propriétaire et groupe (attention, récursif, donc valable pour tous les fichiers et répertoires contenus dans /home/user1) !

V-G. Ajouter des users ultérieurement

Une fois votre serveur FTP paramétré, vous voudrez sûrement rajouter des utilisateurs dans vos dossiers. Cela se fait de cette façon :

 
Sélectionnez
# echo "login" > /etc/vsftpd/login.txt
# echo "password" >> /etc/vsftpd/login.txt
# db3_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
# /etc/init.d/vsftpd restart

Il est parfaitement possible d'éditer le fichier login.txt et d'y rajouter les 2 lignes, plutôt que d'utiliser la commande echo !


précédentsommairesuivant

Copyright © 2007 Onet. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.