Accueil > Archives. Documentation Lodel 0.7 > Installation avancée de Lodel (Version 0.7) et sécurisation
Installation avancée de Lodel (Version 0.7) et sécurisation
Plan
Texte intégral
Note importante
Ce type d'installation avancée concerne principalement les utilisateurs disposant d'un serveur dédié, désirant installer un seul Lodel pour gérer plusieurs sites, tout en imposant un niveau de sécurité assez élevé. Les indications suivantes sont données à titre indicatif, et peuvent bien sûr être améliorées.
Pré-requis
Pour procéder à l'installation avancée de Lodel, il est nécessaire d'avoir :
-
des bonnes connaissances du shell, du serveur httpd d'Apache et de MySQL.
-
un serveur dédié
-
un compte MySQL permettant de créer des bases de données
-
choisi un nom de base de données principale. Dans l'exemple ce sera "moncms".
-
un compte unix générique ("admlodel"), que l'on peut considérer comme le
compte administrant l'installation de Lodel. -
Ajouter le compte "admlodel" dans le groupe "www" (groupe unix de l'utilisateur apache).
Installation avancée
Partie MySQL
Se connecter à la base de donnée avec le compte MySQL spécifié en pré requis.
mysql> create database moncms;
Query OK, 1 row affected (0.09 sec)
mysql> GRANT ALL PRIVILEGES ON moncms.* TO moncmsu@localhost IDENTIFIED BY 'xxxxxx';
Query OK, 0 rows affected (0.06 sec)
Partie Système de fichiers
Dans cet exemple, le DocumentRoot de http://www.mondomaine.org est /var/www
admlodel@r1:~$ cd /var/www/
admlodel@r1:~$ mkdir moncms
admlodel@r1:~$ cd moncms
Récupérer l'archive de Lodel (ici on utilise la version 0.7)
admlodel@r1:/var/www/moncms$ tar xzf lodel-0.7.tar.gz
admlodel@r1:/var/www/moncms$ mv lodel/* .
admlodel@r1:/var/www/moncms$ rmdir lodel
admlodel@r1:/var/www/moncms$ chmod 770 CACHE/ lodeladmin/CACHE/
Voici l'arborescence telle qu'elle devrait apparaître.
drwxr-xr-x 7 admlodel www 4096 Nov 26 03:53 .
drwxr-xr-x 15 admlodel www 4096 Nov 26 03:50 ..
drwxrwxr-x 2 admlodel www 4096 Nov 26 03:53 CACHE
-rw-r--r-- 1 admlodel www 17636 Jul 27 2003 COPYING
-rw-r--r-- 1 admlodel www 1516 Jun 23 00:00 index.php
drwxr-xr-x 6 admlodel www 4096 Nov 26 03:53 lodel-0.7
drwxr-xr-x 6 admlodel www 4096 Nov 26 03:53 lodeladmin
-rw-r--r-- 1 admlodel www 3703 Jun 23 00:00 lodelconfig-dist.php
drwxr-xr-x 4 admlodel www 4096 Nov 26 03:53 share-0.7
-rw-r--r-- 1 admlodel www 14154 Aug 29 22:54 styles_lodel.css
drwxr-xr-x 2 admlodel www 4096 Nov 26 03:53 tpl
Partie Web
Avec un navigateur aller sur http://www.mondomaine.org/moncms. Le système d'installation redirige automatiquement vers http://www.mondomaine.org/moncms/lodeladmin/install.php, car il n'y a pas de lodelconfig.php à la racine du site.
Puis faire les opérations suivantes :
-
Choix de l'installation avancée.
-
Choix de la configuration serveur "defaut"
-
Saisir les paramètres de la base de données MySQL
- hôte : localhost (ou un autre hôte si la base n'est pas hébergée sur la même machine que Lodel)
- identifiant : moncmsu
- mot de passe : xxxxxx -
Choix de la base de données : moncms
-
Décocher "Base de données unique pour tous les sites"
-
Effacer le champ "prefixe des tables" (facultatif)
-
Création d'un administrateur Lodel initial :
- identifiant : admin (ou autre)
- mot de passe : admin (evidement celui ci est trop simple) -
Chemin de l'url vers la racine :
/moncms (mais normalement c'est détecté automatiquement) -
Droits sur les fichiers :
- group : +rw
- all : -rw -
Archivage zip : avec pclzip
-
Extension des scripts : .php (conseillé)
pour utiliser .html, il faut avoir ajouté "AddType application/x-httpd-php .html" dans httpd.conf -
Liens symboliques : oui (conseillé si votre configuration apache vous le permet)
-
Répertoire d'import : /var/import (répertoire non visible depuis le web)
-
Configurer le servoo...
-
Pour installer le fichier de configuration, on peut faire :
admlodel@r1:/var/www/moncms$ cp lodeladmin/CACHE/lodelconfig-cfg.php lodelconfig.php
Mais les autres solutions proposées fonctionnent également.
Création de sites
Partie MySQL
mysql> create database moncms_monsite;
Query OK, 1 row affected (0.02 sec)
mysql> GRANT ALL PRIVILEGES ON moncms_monsite.* TO moncmsu@localhost;
Query OK, 0 rows affected (0.00 sec)
Partie système de fichiers
admlodel@r1:/var/www/moncms$ mkdir -m775 monsite
Partie web
Titre : Mon Site
Nom du site : monsite
Décocher "installer le site à la racine de lodel" (c'est pour les installations monosite)
URL complète du site : http://www.mondomaine.org/moncms/monsite
Créer, continuer. Installer les fichiers.
Installation du ME
Modèle éditorial de Revues.org (par exemple)
Installer ce modèle
Renouveler les opérations de la section "Création de site" pour ajouter un nouveau site.
Il est possible de voir les sites installés en allant sur http://www.mondomaine.org/moncms
Sécurisation de l'installation avancée
Pré-requis
Etre root sur l'hôte accueillant l'installation de Lodel.
Configuration de départ
-
l'installation de lodel appartient à l'utilisateur admlodel.www
-
on considère qu'il existe des "webmasters principaux", regroupant les webmasters responsables de tous les sites sous Lodel.
-
ces webmasters font partie du groupe www
-
l'utilisateur apache est www.www
Contraintes
Certaines contraintes doivent être respectées pour avoir une installation multi-sites sécurisée, tout en permettant au groupe des "webmasters principaux" de travailler sur tous les sites.
-
le root doit s'occuper de l'installation de Lodel et de la création des sites
-
un groupe est associé à chaque site
-
tous les webmasters d'un site doivent aussi faire partie du groupe créé pour chaque site
-
les webmasters de tous les sites Lodel, ainsi que l'utilisateur apache, doivent également être dans chacun des groupes créés pour les sites (Unix sans les ACL posix ne sait pas faire des groupes de groupes)
-
certains webmasters doivent pouvoir s'occuper des maquettes de plusieurs sites.
-
toute l'arborescence est en o-rwx
Création d'un site
-
addgrp monsite
-
ajout des webmasters principaux, et d'apache dans ce groupe
-
l'utilisateur "admlodel" crée le repertoire de la revue : mkdir -m770 monsite
-
creation du site par l'interface web.
-
chgrp monsite monsite monsite/tpl/* monsite/css/* monsite/images/*
-
chmod -R o-rwx monsite
-
chmod -R g-rwx CACHE docannexe lodel siteconfig.php
Et les contraintes sont normalement respectées
-
Seuls les webmasters d'un site, les webmasters principaux et apache peuvent accéder au site créé
-
Seuls les webmasters d'un site n'ont un accès en écriture qu'au répertoire . tpl/ css/ images/ de leur site
-
les webmasters d'un site on un accès en lecture très limités dans les autres répertoires
Tout ceci peut être mis dans un script.
Exemple de script de création de site
#!/bin/bash
# creation d'un nouveau site Lodel
# params :
# - site
# ATTENTION : ce script ne peut fonctionner que sur un noyau 2.6 a cause de la limitation a 32 groupes par utilisateurs
# ATTENTION : les noms de groupes sont basés sur les noms des sites et sont coupés a 16 caracteres
# liste des webmasters principaux
WEBMASTERS="webm1 webm2"
# racine des sites Lodel
LODELSITESROOT="/var/www"
# proprietaire de l'installation de Lodel
LODELOWNER="admlodel.www"
# utilisateur apache
APACHE="www"
####
if [ $# -ne 1 ]
then
echo " Usage $0 <site>"
exit 1
fi
SITE=$1
# le nom de groupe est limite a 16 caracteres
GROUP=${SITE:0:16}
SITESROOT=$LODELSITESROOT;
echo "** creation groupe $GROUP."
addgroup $GROUP
echo "** ajout de $APACHE dans le groupe $GROUP."
adduser $APACHE $GROUP
echo "** ajout de $WEBMASTERS dans le groupe $GROUP."
for webm in $WEBMASTERS
do
adduser $webm $GROUP
done
fi
echo "** creation du repertoire du site."
mkdir -m770 $SITESROOT/${SITE}
chown $LODELOWNER $SITESROOT/${SITE}
echo "** Creez maintenant le site en passant par l'interface web, puis appuyez sur une touche pour continuer."
read a
echo "** changement des permissions dans le repertoire $SITESROOT/${SITE}"
cd $SITESROOT/
chgrp $GROUP ${SITE}
chgrp -R $GROUP ${SITE}/tpl ${SITE}/css ${SITE}/images
chmod -R o-rwx ${SITE}
chmod -R g-rwx ${SITE}/CACHE ${SITE}/docannexe ${SITE}/lodel ${SITE}/siteconfig.php
chmod g+s ${SITE} ${SITE}/tpl ${SITE}/css ${SITE}/images
Les htaccess.
La façon la plus sécurisée de gérer les htaccess est d'utiliser httpd.conf.
Voici les htaccess définis pour les fichiers propres à Lodel :
-
lodel-0.7/.htaccess
-
lodeladmin/CACHE/.htaccess
-
lodeladmin/tpl/.htaccess
-
tpl/.htaccess
Et ensuite, pour chaque site :
-
./CACHE/.htaccess
-
./tpl/.htaccess
-
./docannexe/fichier/.htaccess
-
./lodel/edition/tpl/.htaccess
-
./lodel/edition/CACHE/.htaccess
-
./lodel/admin/tpl/.htaccess
-
./lodel/admin/CACHE/.htaccess
-
./lodel/sources/.htaccess
Chacun des htaccess indique un Deny from All.
Pour protéger ces répertoires on modifie donc le httpd.conf, comme suit :
# protection de l'installation de Lodel
<Directory /var/www/lodel-*>
Deny from all
</Directory>
<Directory /var/www/lodeladmin/CACHE>
Deny from all
</Directory>
<Directory /var/www/lodeladmin/tpl>
Deny from all
</Directory>
<Directory /var/www/lodelluc/tpl>
Deny from all
</Directory>
# protection d'un site
# il y a des directorymatch pour simplifier l'installation sur chaque site. Un copier/coller suffit pour préparer un nouveau site.
# ces directives doivent être ajoutées dans le vhost de chaque site
<DirectoryMatch ".*/CACHE">
Deny from all
</DirectoryMatch>
<DirectoryMatch ".*/tpl">
Deny from all
</DirectoryMatch>
<DirectoryMatch ".*/docannexe/fichier">
Deny from all
</DirectoryMatch>
<DirectoryMatch ".*/lodel/sources">
Deny from all
</DirectoryMatch>
La sécurité est ainsi accrue car les htaccess ne sont plus modifiables par les utilisateurs.
Améliorations possibles
La sécurité peut-être également augmentée en ajoutant le module SuPHP, et en utilisant https lors de la connexion à la partie "admin" et "edition".