Sécuriser WordPress dès l’installation est primordial. Avec une popularité toujours croissante, beaucoup de sites Web créés avec WordPress sont victimes d’attaques en tout genre.
L’objectif de cet article est d’adopter les bons réflex pour sécuriser WordPress dès l’installation, car une telle entreprise après installation est déjà trop tard.
Etape 1 : Installer WordPress avec les premières sécurités
Télécharger la dernière version de WordPress sur le site office, est non sur des sites tiers. N’oubliez pas que WordPress est un logiciel libre de droit et que par conséquent, le code source est facile à modifier, donc à corrompre. Pour ceux qui sont sous Windows ou Mac OS X, préférer l’archive .zip pour les utilisateurs sous Linux, préférer l’archive en .tar.gz.
Décompressez l’archive, puis à l’aide d’un client FTP tel que Filezilla copiez le contenu du dossier / WordPress à la racine de votre site. Le dossier racine peut être différent d’un serveur à l’autre :
- Sur un serveur Debian, comme dans l’article sur lequel nous avons déjà travaillé et qui vous permet de savoir comme installer un serveur lamp pour wordpress et ses dérivés tel que Ubuntu pour ne citer que la plus populaire, le chemin est /var/www/
- Sur les serveurs Red Hat ses dérivés, le chemin est /srv/www/
- Sur les serveurs des hébergeurs comme 1&1, OVH, Amen… le chemin peut-être /www/ ou encore est /httpdocs/.
Vérifiez à présent les droits en lecture, écriture et exécution des dossiers et des fichiers:
- Les dossiers doivent être en 755
- Les fichiers doivent être en 644
A la racine de votre site figure un fichier nommé readme.html. Supprimez-le, car il pourrait fournir des informations précieuses aux hacker sur votre version de WordPress.
Attention ! Lors des mises à jour de WordPress, le fichier réapparait à chaque fois. Pensez à le supprimer après chaque misesà jour.
Créez à présent une base de données SQL. Ne pas utiliser le nom de votre site ou encore le nom de « wordpress » pour votre base donnée. Ce nom est trop commun et trop simple.
Etape 2 : Configurer
Depuis votre navigateur Web, entrer le nom de domaine ou l’adresse IP du serveur web suivit de /wp-admin/install.php
Ex : www.serveur_web.com/wp-admin/install.php
Suivez l’assistant, puis remplissez les champs du premier formulaire avec les informations relatives à votre base de donnés. Pour le préfixe de la table, remplacez wp_ par autre chose. Peu importe le préfixe utilisé, le tout c’est qu’il soit différent.
Dans le second formulaire, à la ligne Identifiant remplacez admin par l’identifiant de votre choix. N’hésitez pas à utiliser des majuscules et des minuscules, les chiffres et les signes de ponctuation n’aident en rien à la sécurité.
Pourquoi les chiffres et les signes de ponctuation n’aident en rien à la sécurité de WordPress ? Un article est entièrement consacré à cette question.
Quant au mot de passe, depuis la version 4.3 de WordPress un mot de passe (très) fort est proposé. N’hésitez pas à garder ce mot de passe. Dans le cas contraire, créez un mot de passe fort. N’oubliez pas que le compte administrateur a tous les droits.
Entrez à présent au tableau de bord de WordPress avec votre compte Administrateur. Ce compte ayant tous les droits, il est fortement conseillé de créer un nouvel utilisateur avec moins de privilèges : Utilisateur -> Ajouter. Avec comme précédemment un identifiant et un mot de passe digne de ce nom. Quant au Rôle, choisissez parmi : Abonné, Contributeur, Auteur ou Editeur, mais en aucun cas Administrateur.
Etape 3 : Renforcer la sécurité.
3.1 Protéger l’accès au fichier wp-config.php via .htaccess
Pour ceux qui n’ont pas accès au fichier de configuration d’Apache2, autrement dit ceux qui ne font pas d’auto-hébergent, ont un fichier .htaccess situé à la racine du site. Ajouter la ligne suivante empêchera un hacker de récupérer votre identifiant et mot de passe en cas de problèmes avec PHP sur le serveur.
[bash]<FilesMatch ^wp-config.php$>
deny from all
</FilesMatch>
3.2 Restreindre l’accès au dossier wp-content et wp-content/uploads
Les dossiers wp-content et wp-content/uploads sont des emplacements de choix pour les hackeurs qui souhaiteraient placer des malware du type porte dérobé (backdoors). Ce script permet de bloquer l’exécution de fichiers PHP dans le répertoire où il se situe.
Dans le dossier wp-content et wp-content/upload, créez un nouveau fichier .htaccess et ajoutez le code source suivant:
[bash] <FilesMatch « \.(?i:php)$ »><IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch> [/bash]
3.3 Restreindre l’accès au dossier wp-includes
Le dossier wp-include doit lui aussi faire l’objet de certaines restrictions. Créez un fichier .htaccess et ajoutez le code source suivant:
[bash] <FilesMatch « \.(?i:php)$ »><IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
<Files wp-tinymce.php>
Allow from all
</Files>
<Files ms-files.php>
Allow from all
</Files>
Il s’agit du même code source que dans le paragraphe 3.2 à un détail près. Une exception est faite pour les modules wp-tinymce et ms-files qui eux sont des éléments essentiels à WordPress.
3.4 Cachez votre version de WordPress
La version de WordPress est une information précieuse pour les hackeurs. Alors cachons là !
Supprimer le fichier readme.html, situé à la racine. Dans ce fichier, est inscrit le numéro de version de WordPress.
Dans le fichier functions.php du thème ajoutez les lignes de code suivantes :
[php] // Supprimez la balise « generator » visible depuis le code source des pages du site.remove_action(« wp_head », « wp_generator »);
// Banaliser les erreurs de connexion de WordPress lorsque l’identifiant et/ou mot de passe sont incorrectes.
add_filter(‘login_errors’,create_function(‘$erreur’, « return ‘Erreur de connexion’; »));
// Supprimez la meta generator de votre flux RSS.
add_filter(‘get_the_generator_rss2’, ‘__return_false’);
add_filter(‘get_the_generator_atom’, ‘__return_false’);
[/php]
Désactiver l’éditeur de thèmes et de plugin en ajoutant la ligne de code suivante dans le fichier wp-config.php:
[php]define( ‘DISALLOW_FILE_EDIT’, true );
[/php]Etape 4 : La sécurité par les plugins
Des plugins peuvent contribuer à renforcer la sécurité de votre site, voici un échantillon des plus populaires :
Login LockDown,Limite le nombre de tentatives de connexions, et donc les attaques de type Brut force
Theme Authenticity Checker (TAC) permet de scanner un thème installé afin de vérifier qu’il ne contient pas de code malicieux.
WP Security Scan et Better WP Security, version bêta, pour déceler toutes les failles de sécurité de votre site.
HC Custom WP-Admin URL, pour personnaliser l’accès au wp-admin.
Sucuri Security, un plugin d’audit de sécurité et scanner de malwares.
Etape 5 : Dernies conseils de sécurité
Car il vaut mieux prévenir que guérir, quelques conseils avant de clôturer cet article.
Pensez à faire les mises à jour de WordPress :
Pour ceux qui auto-hébergent leur site, faites également les mises à jour système mais également du trio Apache2, MySQL et PHP. Sous Debian, dans un terminal en tant que root, taper la ligne de code suivante :
[php] # apt-get update (pour la mise à jour la liste des dépôts)# apt-get upgrade (pour la mise à jour les packages)
[/php]
Sauvegarder régulièrement votre site WordPress et sa base de donné :
Pour sauvegarder WordPress, il suffit de conserver sur votre ordinateur une copie de l’intégralité des fichiers de votre site.
Pour sauvegarder la base de donné SQL, certains hébergeurs proposent ce type de service. Pour les autres, il est possible d’exporter la base de donné depuis PhpMyAdmin via le menu Exporter.
Ne téléchargez pas de thème gratuit provenant d’un autre site que celui de http://wordpress.org/themes/