Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
tutoriel:coupler_vsftpd_et_apache [Le 31/05/2018, 14:24]
L'Africain obsolète
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​Lucid tutoriel serveur vétuste}} 
----- 
- 
-====== Comment coupler Vsftpd avec Apache ? ====== 
- 
-Ce tutoriel décrit comment donner un accès Ftp aux sites web d'un serveur mutualisé, afin que ceux ci soient directement accessibles par le serveur apache, sans problème de droits. 
- 
-Pour cela, nous allons mettre en œuvre un serveur Vsftpd, en utilisant des utilisateurs virtuels. 
- 
-===== Pré-requis ===== 
- 
-  * Disposer des [[:​sudo|droits d'​administration]] sur le serveur. 
-  * Ce tutoriel fonctionne sur un serveur 10.4.1 
-  ​ 
-  ​ 
- 
-===== Installation ===== 
- 
-Nous allons installer le serveur apache, le serveur vsftpd, et un outil qui nous permettra la création d'une base de données des utilisateurs. 
-<​code>​ 
-sudo aptitude install apache2 vsftpd db4.8-util 
-</​code>​ 
-===== Création des répertoires ===== 
-Les données des sites seront stockées sous /​data/​sites-web. Il faut donner les droits à l'​utilisateur et au groupe www-data. 
-Les données de configuration de vsftpd seront stockées sous /​etc/​vsftpd. Ce répertoire n'est pas créé à l'​installation. 
-Les fichiers de configurations de chaque utilisateur seront stockés dans le répertoire /​etc/​vsftpd/​users.conf/ ​ 
-<​code>​ 
-sudo mkdir -p /​data/​sites-web/​site1 
-sudo chown -R www-data:​www-data /data 
-sudo mkdir -p /​etc/​vsftpd/​users.conf/​ 
-</​code>​ 
- 
-<​note>​A chaque ajout de site dans le répertoire /​data/​sites-web/,​ il faudra positionner correctement les droits</​note>​ 
- 
-===== Création de la base d'​utilisateurs ===== 
-Pour rester concis, nous utiliserons une base de données la plus simple possible. 
-Dans le cadre d'un déploiement plus important, il est très facile d'​utiliser une base mysql à la place. Pour cela voir [[:​vsftpd_et_pam_mysql|VsftpD et authentification via pam_mysql sur base de données SQL]] 
- 
-Nous allons créer un simple fichier texte, qui contiendra les couples login/​mot-de-passe. A l'aide de db4.8-util, nous transformerons ce fichier en base de données. 
-<​note>​Attention ! Ce fichier contient une liste  d'​utilisateurs et mots de passe associés. Pensez à changer les droits d'​accès à ces fichiers</​note>​ 
-<​code>​ 
-sudo touch /​etc/​vsftpd/​users.txt 
-sudo chmod 700 /​etc/​vsftpd/​users.txt 
-</​code>​ 
- 
-Nous pouvons remplir ce fichier texte avec deux exemples : 
-<​code>​ 
-user1 
-password1 
-user2 
-password2 
-</​code>​ 
-<​note>​Dans un cas concret, j'​utiliserai des noms d'​utilisateurs du type webmaster@monsite1.com</​note>​ 
- 
-Compilons ce fichier texte et changeons les droits de la base de données : 
-<​code>​ 
-sudo db4.8_load -T -t hash -f /​etc/​vsftpd/​users.txt /​etc/​vsftpd/​users.db 
-sudo chmod 600 /​etc/​vsftpd/​users.db 
-</​code> ​ 
- 
-===== Configuration de PAM ===== 
-Vsftpd utilise PAM pour l'​authentification. 
- 
-Remplacez le contenu du fichier /​etc/​pam.d/​vsftpd par : 
-<​code>​ 
-auth    required ​  ​pam_userdb.so ​ db=/​etc/​vsftpd/​users 
-account required ​   pam_userdb.so ​ db=/​etc/​vsftpd/​users 
-</​code>​ 
-<​note>​Il ne faut pas mettre l'​extension .db au chemin d'​accès vers la base de données des utilisateurs</​note>​ 
- 
-===== Configuration de VSFTPD ===== 
-Il ne reste plus que Vsftpd lui même  à configurer. 
- 
-Toute l'​astuce ici réside dans la ligne guest-username. On utilise l'​utilisateur www-data. Ceci permet à apache de pouvoir lire les fichiers écrits par vsftpd. 
- 
-Editons le fichier /​etc/​vsftpd.conf : 
-<​code>​ 
-# Pas d'​accès anonyme, que des utilisateurs locaux 
-anonymous_enable=NO 
-local_enable=YES 
-# Active les utilisateurs virtuels 
-# Vsftpd utilise en fait l'​utilisateur www-data 
-guest_enable=YES 
-guest_username=www-data 
-nopriv_user=www-data 
-write_enable=YES 
-# On restreint l'​utilisateur à son dossier de connexion 
-chroot_local_user=YES 
-# Utilisation de PAM pour l'​authentification 
-pam_service_name=vsftpd 
-# Configuration par utilisateur 
-user_config_dir=/​etc/​vsftpd/​users.conf 
-</​code>​ 
- 
-La dernière ligne du fichier de configuration permet d'​inclure les fichiers de configuration par utilisateur. Ceux ci se situent dans le répertoire /​etc/​vsftpd/​users.conf. 
- 
-===== Configuration par utilisateur ===== 
-Nous disposons, via le fichier users.db, d'un compte utilisateur et d'un mot de passe. Pour chaque utilisateur,​ il faut maintenant créer un fichier contenant ses informations,​ dans le répertoire /​etc/​vsftpd/​users.conf. 
- 
-Exemple pour l'​utilisateur user1 : 
-<​code>​ 
-vim /​etc/​vsftpd/​users.conf/​user1 
-anon_world_readable_only=NO 
-local_root=/​data/​sites-web/​site1 
-write_enable=YES 
-anon_upload_enable=YES 
-anon_mkdir_write_enable=YES 
-anon_other_write_enable=YES 
-</​code>​ 
- 
-===== Test du système ===== 
-Nous pouvons relancer le service SFTPD : 
-<​code>​ 
-sudo service vsftpd restart 
-</​code>​ 
- 
-et tenter une connexion ftp : 
-<​code>​ 
-$ ftp 
-ftp> open 192.168.1.102 
-Connected to 192.168.1.102. 
-220 Welcome to blah FTP service. 
-Name (192.168.1.102:​server):​ user1 
-331 Please specify the password. 
-Password: 
-230 Login successful. 
-Remote system type is UNIX. 
-Using binary mode to transfer files. 
-ftp> ​ 
-</​code>​ 
- 
-Copiez un fichier via ftp, et vérifier ses droits sur le serveur. 
-<​code>​ 
-ls -l /​data/​sites-web/​site1/​ 
-</​code>​ 
-Le fichier doit appartenir à l'​utilisateur www-data. 
- 
- 
- 
-===== Configuration apache ===== 
-Encore pour des raisons de concisions, nous allons paramétrer un alias dans apache. Bien entendu, il est possible de créer des vhosts. 
- 
-Modifions le fichier /​etc/​apache2/​sites-available/​default 
-<​code>​ 
-sudo vim /​etc/​apache2/​sites-available/​default 
-</​code>​ 
- 
-ajoutons un simple alias : 
- 
-<​code>​ 
-Alias /site1/ "/​data/​sites-web/​site1/"​ 
-<​Directory "/​data/​sites-web/​site1/">​ 
-    Options Indexes MultiViews FollowSymLinks 
-    AllowOverride None 
-    Order allow,deny 
-    Allow from all 
-</​Directory>​ 
-</​code>​ 
- 
-Relançons apache : 
-<​code>​ 
-sudo service apache2 restart 
-</​code>​ 
- 
-et accèdons à notre site pour vérifier la présence du fichier téléchargé en FTP précédemment. 
- 
-===== Conclusion===== 
-Nous avons rapidement mis en oeuvre une solution pour créer des sites web sur un serveur mutualisé qui peuvent être mis à jour par FTP. 
-Cette solution ouvre de nombreuses portes vers des solutions plus élaborées : stockage des comptes dans une base mysql, cryptage des mots de passe, etc. 
- 
-Un excellent tutoriel (voir rubrique Voir aussi) du site developpez.com va beaucoup plus loin dans la démarche. Sa lecture est vivement conseillée. 
- 
-===== Voir aussi ===== 
- 
-  * **(fr)** [[http://​olange.developpez.com/​articles/​debian/​installation-serveur-dedie/​|un tutoriel plus complet sur le sujet]] 
-  * **(fr)** [[:​vsftpd|Préambule : FTP et "​FTP-Like"​ sécurisés]] 
-  
- 
----- 
-//​Contributeurs principaux : [[:​utilisateurs:​lmrv]].//​