L'un des fichiers les plus sensibles sous Joomla! est le fichier configuration.php qui se trouve à la racine de chaque installation par défaut.
Ce fichier est très convoité par les hackeurs et à juste titre car il contient toutes les informations relatives au fonctionnement de votre site (identifiants des bases de données et FTP entre autres).
Depuis Joomla 1.6, il est possible de modifier l'emplacement de ce dernier sur un site et ainsi améliorer la sécurité de ce dernier. Il faut bien garder à l'esprit qu'aucune solution de sécurité n'est garantie à 100%, mais l'on peut s'en approcher.
Avant de commencer les modifications nécessaires pour déplacer le configuration.php, nous vous conseillons de réaliser une sauvegarde de vos fichiers.
Modification des fichiers
Il est conseillé de passer le site en mode maintenance le temps des interventions, nous allons récupérer en local les deux fichiers qui seront à modifier
- defines.php présent dans le dossier /administrator/includes
- defines.php dans le dossier /includes
Les modifications qui seront apportées sur les fichiers sont identiques mais attention ces deux fichiers comportent des lignes différentes, donc soyez vigilent et ne pas les mélanger .
Pour commencer vous allez créer un dossier(répertoire) à la racine de votre site avec le nom de votre choix, attention de ne jamais utiliser d'accent ou chiffre au risque de générer des erreurs. Pour notre exemple nous utiliserons mondossier
Une fois ce dossier créé nous allons copier le fichier configuration.php dans ce dernier via un transfert par un client de FTP, nous en profiterons pour y ajouter aussi un index.html (un de ceux de Joomla conviendra)
La première partie est donc en place, il nous reste les modifications à apporter aux fichier précédemment récupérés en local. Le principe des modifications est de renseigner la nouvelle localisation du fichier configuration.php pour le bon fonctionnnement de Joomla.
Nous prendrons donc l'exemple du fichier defines.php présent dans le dossier includes à la racine du site, utilisez surtout un éditeur de texte adéquat (cf:cet article)
Ajoutez les deux lignes suivantes
define('_JDEFINES', 1); define('JPATH_BASE', dirname(__FILE__));
juste en dessous de celle-ci
defined('_JEXEC') or die;
Modifiez cette ligne
define('JPATH_CONFIGURATION', JPATH_ROOT);
comme-ci dessous
define('JPATH_CONFIGURATION', JPATH_ROOT .DS.'mondossier');
Sous Joomla 3.0 (contribution de cavo789)
La constante DS a été supprimée dans Joomla 3.0 aussi il faut utiliser DIRECTORY_SEPARATOR à la place.
la ligne suivante sous Joomla 2.5
define('JPATH_CONFIGURATION', JPATH_ROOT .DS.'mondossier');
serait idéalement à remplacer par
define('JPATH_CONFIGURATION', JPATH_ROOT.DIRECTORY_SEPARATOR.'mondossier');
Voilà nous arrivons bientôt à fin de ce tutoriel, il nous reste plus qu'à transférer respectivement chacun des fichiers modifiés dans le bon dossier.
La dernière opération va consister à simplement supprimer le configuration.php présent à la racine du site, si ce n'est déjà fait.
Pour aller plus loin
Des chmods restrictifs (cf:cet article) utilisés sur les fichiers de cet article (444) et le répertoire créé (505) seront bien sûr un plus.
Pour finir nous vous conseillons d'ajouter la ligne ci-dessous dans le fichier robots.txt
Disallow: /mondossier/
Vos réactions sur le sujet du forum
Adaptation libre d'un extrait de l'article : Simple Security Guide, Part 2
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.