Installation complète d'un serveur web sous Debian
Date de publication : 25 janvier 2007 , Date de mise à jour : 25 janvier 2007
V. Configuration de VSFTPD en mode "utilisateur virtuel"
V-A. Introduction
V-B. Préparation
V-C. La base de donnée
V-D. Modification de vsftpd.conf
V-E. Paramétrer les utilisateurs
V-F. Redémarrage et test
V-G. Ajouter des users ultérieurement
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ée, 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 renvoit 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 :
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 :
# cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak |
V-C. La base de donnée
Il nous faut maintenant installer la base de données. On utilise pour cela la commande :
# apt-get 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 :
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 |
user1
pass1
user2
pass2 |
# 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 |
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login |
# 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 |
# 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, c'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éfini le nombre maximum de sessions par IP à 4
max_clients=200
max_per_ip=4
####################################
# 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.
# mkdir /etc/vsftpd/vsftpd_user_conf/ |
# nano /etc/vsftpd/vsftpd_user_conf/user1 |
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 :
# /etc/init.d/vsftpd restart |
Et il ne nous reste plus qu'à nous connecter à notre compte ftp en utilisant :
IP: ip du serveur ou nom de domaine
login: user1
password: password1 |
Et voilà. Un petit test, 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 bons. Vérifiez bien que le répertoire /home/user1 ait 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 :
# 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 !
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.