Sécuriser son site sous Joomla (EC)

Publié le 26 avril | par Raphaël Hermant| Joomla

Bien qu’installer Joomla est facile, maintenir un site web sécurisé sur internet ne l’est pas ! Beaucoup de problèmes complexes ne peuvent pas être résolues avec de simples cookies. Pour protéger votre site, vous devez soit acquérir de l’expérience (ce qui ne va pas sans difficulté) soit faire appel à des professionnels pour vous aider.

Pour commencer…

  • Prenez connaissance du degré d’avancement de la version 1.5 de Joomla et soyez près à l’utiliser dès qu’une version stable est disponible. La version 1.5 est une toute nouvelle version (release) de Joomla qui inclut beaucoup d’améliorations importantes.
  • Rester à jour sur les problèmes de sécurité en souscrivant Annonces de Sécurité Joomla.org (EN). Cliquez sur le bouton de « Me notifier par email ».

Hébergement

Développement du site

  • Évitez de prendre le risque de « planter » votre site de production en commençant par tester les mises à jour sur un serveur de développement (par exemple en local).
    Voir : Chapitre 3 – Installation locale de Joomla!
  • Conformez-vous à aux meilleures pratiques en terme de développement de site web en installant en Environnement de Développement Intégré (IDE).
  • Assurez-vous de pouvoir revenir à n’importe quelle version précédente de votre site en utilisant un système de contrôle et de gestion des versions moderne, comme CVS ou la Subversion (En) Concurrent Version System (CVS)

Installation, Mise à Jour et Configuration de votre Serveur Apache et Joomla

  • Toujours mettre à jour votre site avec la dernière version stable.
    Comment appliquer un patch de mise à jour sur un site Joomla
  • Télécharger Joomla uniquement sur les sites officiels :
  • Supprimez les fichiers d’installation après la configuration. Le processus d’installation exige que vous supprimiez le répertoire d’installation et tout son contenu. Faites-le ! Si vous uploadez votre site chez votre hébergeur sous la forme d’un fichier compressé (zip, tar ou autre), supprimez le fichier compressé immédiatement après la décompression. D’une façon générale, ne laissez pas de fichiers, compressés ou pas, sur un serveur public à moins qu’ils ne soient exigés pour le fonctionnement de votre site.
  • Changez le nom d’utilisateur de l’administrateur par défaut.
  • Utilisez un fichier .htaccess (à la racine du site) pour bloquer les tentatives d’intrusion (exploits).

Apache – Les Fichiers .htaccess

Protection des Pages web par .htaccess

  • Utilisez un fichier .htaccess pour protéger par ‘mot de passe’ les répertoires sensibles, comme le répertoire ‘administrator’.

Administration de Site – Protection par Mot de Passe

  • Vous pouvez aussi accroître la sécurité de votre site en passant à PHP5 si votre hébergeur le permet.
    Passer à PHP5 avec EasyPHP

Découvrez PHP5 avec Wamp5

  • Suivez le principe des « Moindres Privilèges » dans la configuration PHP en utilisant des outils comme PHPsuExec, php_suexec orsuPHP de suPHP
  • Configurez les filtres Apache ‘mod_security’ et ‘mod_rewrite’ pour bloquer les attaques PHP.
  • Assurez-vous que les comptes MySQL ont des droits d’accès limités. L’installation par défaut de MySQL est peu sécurisée, une re-configuration peut donc s’avérer nécessaire.
  • MySQL – Gestion des Comptes Utilisateurs : Règles de sécurité et droits d’accès sous MySQL
  • Actuellement, les deux versions de PHP (PHP4 et PHP5) sont maintenues. Mettez à niveau les extensions tierces que vous utiliser (ou vos propres hacks et/ou extensions) avant que PHP4 ne devienne obsolète. Quant à Joomla, nul besoin de vous inquiétez, il est déjà compatible avec PHP5.

PHP France

PHP – Site Officiel (En)

  • Si vous êtes vraiment inquiet vous pouvez essayer d’activer et de configurer correctement le safe_mode, mais soyez conscient que le safe_mode fait échouer les scripts d’installation de Joomla. Pour installer une extension tierce, désactiver temporairement le safe_mode (OFF) et réactiver-le (ON) une fois l’installation terminée. Notez que beaucoup d’utilisateurs expérimentés considèrent que l’activation du safe_mode n’est pas nécessaire si d’autres précautions de sécurité raisonnables sont suivies.
    PHP Safe Mode
  • Éditez le fichier globals.php pour mettre l’émulation Joomla! de la directive Register_globals à OFF. Bien que l’émulation Joomla (ON) est plus sûre que le register_globals PHP, il est préférable de ne pas activer le register_globals du tout. Note : à partir de PHP6, ce ne sera même plus une option et il en est grand temps !

Les Registres Globaux

Voici la configuration correcte pour mettre l’émulation Joomla de register_globals à OFF dans le fichier globals.php :

define(‘RG_EMULATION’, 0);

Notez que certaines extensions mal écrites ne peuvent pas fonctionner correctement avec l’émulation register_globals à OFF :
http://forum.joomla.org/index.php/topic,86525.0.html (En)

  • Assurez-vous que tous les chemins configurables vers des répertoires ouverts à tous les utilisateurs en écriture (images, galeries, caches, etc) sont la racine extérieure du Web (outside web root). Vérifiez les paramètres de type chemins dans les extensions tierces, comme DOCMan, Remository, Datso Gallery, etc.
  • Une fois que la configuration de votre site finalisée, protéger en écriture les répertoires et les fichiers en mettant les permissions de répertoires à 755 et les permissions de fichier à 644. La gestion des permissions sur les répertoires et fichiers est centralisée dans l’onglet ‘Serveur’ de la configuration globale du site. Tester ensuite les extensions tierces. Note : Il vous faudra remettre les permissions d’écriture afin d’installer de nouvelles extensions.
    Scripts Shell pour Configurer les Permissions (En)
  • Désinstaller tous les templates non utilisés par le site. N’ajoutez pas de code php dédié à la sécurité du site dans l’index.php de votre template.
    Post: Suggest Ability to turn off/on template change (En)
  • Si vous utilisez un VPS ou un serveur dédié, utiliser TripWire (En) ou SAMHAIN (GNU/GPL) (En). Ils vérifient tous vos fichiers, vous fournissent un compte-rendu détaillé et peuvent être installés de façon furtive afin de s’auto-protéger en cas d’intrusion sérieuse.
  • Faite appel à un professionnel de la sécurité des sites web sous Joomla afin de valider votre configuration.

Installation, configuration et mise à jour des extensions Joomla

  • AVANT d’installer de nouvelles extensions, faite une sauvegarde de votre site et de votre base de données (backup) : Liste des Extensions de Backup (En)
  • Télécharger vos extensions uniquement à partir de sites de confiance. La définition officielle d’un « site de confiance » est « un site en qui VOUS avez confiance ».
  • Important : il existe de nombreuses extensions tierces et toutes ne sont pas égales en terme de qualité et de suivi. Bien que des standards existent pour le codage des extensions tierces pour Joomla, les extensions disponibles sur le site officiel Joomla n’offrent aucune garantie de conformité à ces standards. Tester toutes les extensions que vous souhaitez utiliser sur un site de test avant de les installer sur un site de production.
  • La plupart des problèmes de sécurité sont causées par des extensions tierces. Il y a un forum entier consacré à ce sujet. Souscrivez-y en cliquant sur le bouton « me notifier par email » : Extension Tierces – Problèmes de Sécurité (En).
  • Désinstaller les extensions inutilisées et vérifier bien que tous les dossiers et les fichiers associés ont été retirés lors de la désinstallation.
  • Désinstaller ou modifier toute extension tierce qui nécessite que la directive register_globals soit activée (ON).
    Comment modifier une extension qui exige register_globals ON

Fichier de configuration PHP (php.ini)

  • Sur des serveurs partagés vous ne pouvez pas éditer le fichier php.ini principal, mais vous devriez pouvoir ajouter un fichier personnalisé. S’il en est ainsi vous devrez copier ce fichier dans chaque sous-répertoire où un fichier php.ini personnalisé est nécessaire. Par chance, les scripts suivants libre de droits feront le plus gros du travail pour vous : Tips-Scripts (En)
  • Lisez le post suivant, par Beat, membre du groupe de travail Q&T, pour une liste des configurations possibles du php.ini en fonction des contraintes de configuration liées à votre hébergeur : Sécurisez-le avec php.ini (En).
  • Important : mettez la variable register_globals à OFF. Cette directive décide si les variables EGPCS (Environment, GET, POST, Cookie, Server) doivent être définies comme variables globales (ON) ou pas (OFF). Si vous n’avez pas accès à php.ini, regardez la technique suivante (sous PHP5) qui utilise le fichier .htaccess : ZEND – Utilisation des Registres Globaux (En)
  • Utilisez la directive disable_functions pour mettre hors de service certaines fonctions PHP potentiellement dangereuses qui ne sont pas nécessaires pour le bon fonctionnement de votre site.
  • Mettez hors de service la directive allow_url_fopen. This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers. Note : Cette directive est uniquement configurable au niveau de php.ini pour des raisons de sécurité.
  • Ajustez la directive magic_quotes_gpc selon les besoins de votre site. Il est recommandé d’activer cette directive (ON) pour Joomla 1.0.x afin de protéger votre site contre des extensions tierces mal écrites. Note : Cette directive n’a aucun impact sur le bon fonctionnement de Joomla 1.5.
    PHP Manuel – Magic Quotes.
  • La directive Open_basedir doit être activée et correctement configurée. Limitez les fichiers qui peuvent être ouverts par PHP à une arborescence de répertoires bien spécifique. La restriction indiquée avec open_basedir est un préfixe, pas un nom de répertoire. Cela signifie que « open_basedir =/dir/incl » permet l’accès à « /dir/include » et « /dir/incls » s’ils existent. Pour limiter l’accès à une unique arborescence de répertoire, metter un slash à la fin du répertoire racine de l’arborescence (ex : /dir/include/). Note : Cette directive n’est PAS affectée par l’activation (ON) ou la désactivation (OFF) du Safe Mode.
    PHP Security and Safe Mode Configuration Directives (En)
  • Exemples de directives :

Register_globals = 0
Disable_functions = show_source, system, shell_exec, passthru, exCE, phpinfo, popen, proc_open
Allow_url_fopen = 0
Magic_quotes_gpc = 1
Safe_mode = 1
Open_basedir =/dir/to/include/change_me/

Plus

  • N’utilisez pas de serveur partagé (bien que certains experts divergent sur ce point). Peu importe comment votre serveur est configuré, assurez-vous que vous et votre hébergeur (en qui vous avez confiance !) sont les deux seules entités ayant les droits d’accès.
  • Utilisez un serveur SSL pour effectuer des transactions sécurisées. (Notez que la version courante de Joomla (v1.0.11) ne vous permet pas d’assigner un serveur SSL aux sous-répertoires individuels.)
    Comment configurer un server SSL pour le répertoire administrator (En)
  • Pour une couche complémentaire de protection par mot de passe, utilisez des fichiers .htaccess dans les répertoires critiques.

Administration Web

  • Utilisez des mots de passe bien conçus : Changer vos mots de passe régulièrement et faite en sorte qu’ils soient uniques. Utilisez une combinaison aléatoire de lettres, de chiffres, ou de symboles et évitez d’utiliser des noms simples ou des mots trouvés dans un dictionnaire. N’utilisez jamais les noms de vos proches, animaux de compagnie, etc. Wizzie a développé un script qui permet de changer les mots de passe automatiquement. C’est un outil très utile pour des administrateurs ou des sites multiples : Générateur de Mots de Passe Administrateur Automatique (En)
  • Créer une structure de mots de passe hiérarchisée
    La plupart des utilisateurs n’ont besoin que de trois niveaux de mots de passe et les administrateurs de sites web pas plus que cinq niveaux. Chaque niveau doit être complètement indépendant des autres en terme de nom d’utilisateur (username) et de mots de passe (password) utilisés.
    FAQ: How to set up a powerful, compartmentalized password scheme (En)
  • Mettez en place un processus de sauvegarde rigoureux : ne comptez jamais sur les sauvegardes des autres (votre hébergeur) ! Prenez en charge vos propres procédures de sauvegarde. Beaucoup d’hébergeurs déclarent d’ailleurs dans leur contrat que vous ne pouvez pas compter seulement sur leurs sauvegardes.
  • Mettez en place une détection d’intrusion automatisée : Utilisez un système de prévention/détection des intrusions pour bloquerles requêtes HTTP malveillantes et vous alerter si cela se produit.
    Faite une recherche Google : http: // www.google.com/search ? Q=Intrusion+Prevention
  • Apprenez à détecter les intrusions par vous-mêmes : vérifiez régulièrement vos logs pour y détecter une éventuelle activité suspecte. Ne comptez pas trop sur les rapports et les graphiques. Voici une discussion intéressante des méthodes non-conventionnelles pour automatiquement vérifier vos fichiers de logs : http: // forum.joomla.org/index.php ? Topic=96281 (En anglais)

Restauration

A vous de jouer…

Sources


A propos de l'auteur

a rédigé 61 articles sur Neoweb Mag


Les commentaires sont fermés.

Retour en haut ↑