Préparation
La
machine virtuel est utilisée sur Virtualbox et configuré en Nat.
Image
iso utilisé Debian 6.0.3-i386-CD-1
Configuration:
Nom du serveur : srvweb
Password root : toor
User : me
Password : me
Ip server: 10.0.0.10/24
Password MySQL: toor
Windows srv name : srvdns (user
administrateur:P@ssword, IP:10.0.0.10/24)
Client
xp name : xpclient (user:client,IP:10.0.0.6/24)
Installé:
Ø Vim
(Modifié le vimrc pour que ça soit en
couleur et qu’il y a les numéros de lignes, chemin (vim /etc/vim/vimrcà
à la ligne 19 décommenter syntax on et dernière ligne rajouter set nu)
Ø Ssh
Ø Mysql
Ø Php5
Ø Apache2
Apache2
Le mod UserDir est un
mod installé par défaut avec Apache 2. Il permet, une fois configuré, de faire
correspondre une URL de type http://192.168.0.100/~utilisateur à un
dossier/home/utilisateur, par
exemple.
Avantage
est qu'il ne faut pas changer la configuration d'Apache 2 à chaque fois qu'on
ajoute un utilisateur : à chaque fois qu'une URL comme la précédente sera
appelée, Apache 2 vérifiera si le dossier correspondant existe sur le serveur.
S'il existe, on accèdera à son contenu, sinon, on obtiendra l'erreur 404.
Pour
commencer, activons le mod avec la commande suivante :
a2enmod userdir
Un
message nous avertit qu'il faut recharger la configuration d'Apache, mais comme
nous allons la modifier par la suite, nous la rechargerons plus tard.
fichier à
modifier
/etc/apache2/mods-available/userdir.conf
<IfModule mod_userdir.c>
UserDir /home/*/public_html
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes IncludesNoExec
IndexOptions FoldersFirst FancyIndexing IgnoreCase
UserDir public_html signifie que l'adresse
http://192.168.0.100/~utilisateur affichera le contenu du dossier [Répertoire
home de utilisateur]/public_html. L'utilisateur doit donc être un utilisateur
système valide !!
Pour ne pas avoir à créer à chaque fois un utilisateur système, on peut
remplacer cette ligne par UserDir /home/*/public_html. Du coup, il suffit juste
de créer un dossier du nom de l'utilisateur dans /home !
UserDir disabled [noms d'utilisateurs] permet de désactiver la
fonctionnalité UserDir pour certains utilisateurs.
Recharger la configuration d'Apache 2 :
/etc/init.d/apache2
reload
enfermer le PHP de chaque utilisateur dans son dossier respectif. Ajouter
les lignes dans le fichier /etc/apache2/mods-available/userdir.conf.
On obtient ceci :
<IfModule mod_userdir.c>
UserDir /home/*/public_html
<Directory /home/*/public_html>
AllowOverride FileInfo
AuthConfig Limit
Options MultiViews Indexes
IncludesNoExec
IndexOptions FoldersFirst
FancyIndexing IgnoreCase
php_admin_value safe_mode
"1"
php_admin_value open_basedir
".."
- php_admin_value permet de modifier des
options de php.ini directement dans la configuration d'Apache 2.
- open_basedir permet d'enfermer PHP dans un
répertoire. À chaque fois qu'un fichier ou dossier sera ouvert en PHP, on
obtiendra un message d'erreur si celui-ci n'est pas à l'intérieur du
dossier spécifié.
- ".." est la valeur de
l'option open_basedir. Les 2 points correspondent au dossier parent,
c'est-à-dire dans notre cas au dossier /home/utilisateur.
Permet aux utilisateurs de mettre
du PHP dans leur dossier public_html sans pour autant poser de problèmes de
sécurité.
Mysql & Phpmyadmin
Installer MySQL, pour que nos utilisateurs aient
leur base de données (MySQL servira également pour vsFTPd).
Apt-get install mysql-server php5-mysql
On exécute dans la foulée le script fourni avec
MySQL qui permet de sécuriser la configuration de ce dernier :
mysql_secure_installation
Installation
PHPMyAdmin :
Apt-get install phpmyadmin
Allez ensuite avec un navigateur à l'adresse
http://192.168.0.100/phpmyadmin. Mettez la langue en français, le nom
d'utilisateur (root) et votre mot de passe MySQL.
Direction la page Privilèges, puis Ajouter un
utilisateur. Indiquez ftp comme nom d'utilisateur, sélectionnez Local dans la
liste déroulante Serveur, et indiquez un mot de passe, compliqué si possible,
car il ne sera utilisé que par des scripts (vous pouvez utiliser le bouton
Générer). Cochez le bouton radio Créer une base portant son nom et donner à cet
utilisateur tous les privilèges sur cette base et validez.
Retournez sur la page Privilèges (il y a un onglet
en haut), et cliquez sur recharger les privilèges.
MySQL est maintenant installé, configuré, et nous
avons créé un utilisateur et une base de données pour le serveur FTP...
Vsftpd
Installation
vsFTPd et le module d'authentification par MySQL !
aptitude install vsftpd
libpam-mysql
Supprimer
quelques éléments de la configuration par défaut :
deluser --remove-home ftp
Remplacer
le fichier /etc/vsftpd.conf par
celui-ci :
# 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" active
les utilisateurs virtuels
# "guest_username" fait
correspondre tous les utilisateurs virtuels à l'utilisateur d'Apache 2
guest_enable=YES
guest_username=www-data
# On définit les droits par défaut
des fichiers uploadés
anon_umask=022
# On enferme les utilisateurs
virtuels dans leur dossier
chroot_local_user=YES
# On définit le nombre maximum de
sessions à 100
# On définit le nombre maximum de
sessions par IP à 5
max_clients=100
max_per_ip=5
####################################
#
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
# Définir la plage de ports
utilisée par le mode passif
pasv_min_port=20000
pasv_max_port=20050
# Message d'accueil
ftpd_banner=Bienvenue sur ce
serveur FTP !
# Autoriser les utilisateurs
virtuels à changer les permissions de leurs fichiers
chmod_enable=YES
virtual_use_local_privs=YES
# Utiliser le temps local et non
pas le temps universel (UTC)
use_localtime=YES
#
Activation du log
xferlog_enable=YES
log_ftp_protocol=YES
Créer
le dossier qui contiendra les fichiers de configuration pour chaque utilisateur
:
mkdir /etc/vsftpd
vsFTPd
va devoir accéder à la liste des utilisateurs, qui sera placée dans notre base
de donnée MySQL. Le module pam-mysql permet de faire ça.
Retourner
sur PHPMyAdmin, se logger avec l'utilisateur ftp, et sélectionner la base de
donnée ftp dans le menu de gauche. Ensuite, l'onglet SQL permet de coller et
d'exécuter ce code :
CREATE
TABLE `ftp`.`users` (
`name`
TEXT NOT NULL ,
`pass` TEXT NOT NULL
)
ENGINE = MYISAM
Remplacer
le fichier /etc/pam.d/vsftpd par le
suivant (qui contient les informations d'accès à cette table) :
auth
required pam_mysql.so host=localhost user=ftp passwd=votre_pass db=ftp
table=users usercolumn=name passwdcolumn=pass crypt=1
account
required pam_mysql.so host=localhost user=ftp passwd=votre_pass db=ftp
table=users usercolumn=name passwdcolumn=pass crypt=1
Ne oubliez pas de remplacer le mot de passe de l'utilisateur MySQL
ftp (2 fois) dans ce fichier !
Redemarrer FTP
/etc/init.d/vsftpd
restart
Test:
PHPMyAdmin
(avec l'utilisateur ftp) et ajouter un nouvel enregistrement à notre table
créée (onglet Insérer après avoir sélectionné la table). On renseigne un nom
d'utilisateur et un mot de passe. Le mot de passe doit être crypté ! Il suffit
de sélectionner ENCRYPT dans la liste déroulante, lors de l'insertion.
Il
faut maintenant créer le fichier de configuration de l'utilisateur : /etc/vsftpd/[nom d'utilisateur].
anon_world_readable_only=NO
local_root=/home/(utilisateur)
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
hide_file=(none)
force_dot_files=YES
Définir
le dossier dans lequel l'utilisateur est enfermé, on l'autorise à y écrire, et
on lui permet de voir les fichiers cachés.
le
plus important : on crée le dossier de l'utilisateur (avec les bons droits !).
mkdir /home/[nom d'utilisateur]
chown -R www-data.www-data
/home/[nom d'utilisateur]
chmod -R 700 /home/[nom
d'utilisateur]
Tester
en tentant une connexion au serveur FTP !
enjoy à vous de préparer l'interface web que vous pourrez combiné à un webmail
Aucun commentaire:
Enregistrer un commentaire