Sécuriser et protéger WordPress contre les piratages ou hacks

WordPress est un logiciel de publication pour créer un site internet très populaire.
De ce fait il est visé par les pirates et hackers.

Pour se protéger des piratages, il convient de sécuriser WordPress.
Voici un tutoriel complet pour sécuriser WordPress contre les piratages ou hacks.

Sécuriser et protéger WordPress contre les piratages ou hacks

Sécuriser et protéger WordPress contre les piratages ou hacks

La page suivante de codex donne pas mal d'étapes qui peuvent être suivies afin de sécuriser WordPress : Hardening WordPress

Toutefois, comprenez bien que la sécurité de votre site WordPress est lié à votre hygiène informatique ainsi qu'à de bonnes habitudes générales.

Les astuces de déplacement de répertoire/renommage améliorent la sécurité de WordPress notamment contre les attaques automatiques qui sont en général pensées en ayant les fichiers et l'arborescence de WordPress par défaut.
Plus d'informations sur ces scans :

Avant toute modification de votre site, faites une sauvegarde, dans la mesure du possible tester les modifications sur un site de test afin de mesurer les impacts.

Mettre à jour WordPress et scan de sécurité

WordPress peut effectuer les mises à jour automatiques pour WordPress ainsi que les plugins/thèmes si besoin.
Plus d'informations : 

Le Plugin Plugin Security Scanner permet aussi de scanner ses extensions et être notifié si ces dernières comportent des vulnérabilités connues.

Déplacer wp-config.php

wp-config.php est le fichier de configuration de votre WordPress qui stocke les informations de connexion à la base ainsi que les clés uniques d’authentification et salage.
C'est donc un fichier sensible qu'il ne faut pas rendre accessible par un tiers.
Par défaut étant donné qu'il s'agit d'un fichier de configuration PHP, on ne peut y accéder directement.
Vous aurez une page blanche.

Pour augmenter la sécurité de WordPress, on peut déplacer le fichier WP-config.php qui se trouve à la racine du site afin que les pirates ne sachent pas où il se trouve ou le mettre dans un répertoire non accessible depuis le serveur WEB.
Cela permet aussi de se mettre à l'abri des scans automatiques qui viseront le fichier en racine du site.
WordPress autorise de déplacer le fichier wp-config.php un cran au dessus du répertoire où est stocké WordPress.

Par exemple, WordPress se trouve dans /var/www/wordPress donc le fichier wp-config.php se trouve dans /var/www/wp-config.php
Ainsi, vous pouvez alors le déplacer dans /var/www qui n'est pas forcément accessibles sur internet.

  • Déplacez le fichier wp-config.php par exemple dans /var/www/
  • Editez le fichier wp-config puis ajoutez au début du fichier :
<?php

include('/var/www/config.php);

Déplacer le répertoire wp-content

Le répertoire wp-content contient les plugins ainsi que les thèmes. Pour sécuriser votre blog, vous pouvez modifier le répertoire.
Là aussi, il convient ensuite de modifier le fichier wp-config.php pour donner le nouveau répertoire par la directive suivante :

define('WP_CONTENT_DIR', dirname(__FILE__) . '/repertoire-content');

Noter que si vous avez déplacer wp-config.php dans le répertoire parent comme expliqué dans le paragraphe précédent, il faut donner l'arborescence complète :

define('WP_CONTENT_DIR', dirname(__FILE__) . '/repertoire-site/repertoire-content');

Désactiver l'éditeur de fichiers

WordPress embarque un éditeur de fichiers pour modifier les fichiers de vos thèmes.
Si un pirate obtient un accès à votre panneau d'administration, il peut alors injecter du code malveillant.
Désactiver l'éditeur de fichiers permet de renforcer la sécurité WordPress de votre site.

Modifiez le fichier wp-config.php en ajoutant la ligne :

define( 'DISALLOW_FILE_EDIT', true );

Installer une extension de sécurité WordPress

Il existe de multiples extensions de sécurité avec des fonctions assez communes :

  • Vérifier les modifications des fichiers PHP WordPress pour détecter les modifications en cas de piratage
  • Détecter les Backdoor PHP
  • Alerte et notifications par mail en cas d'attaques
  • Sécuriser l'accès au panneau d'administration : Protection contre les attaques bruteforces, bloquer des adresses IP ou installer un captcha.
  • Activer certaines fonctions pour améliorer la sécurité

Voici la liste des extensions les plus connues et utilisées :

Analyse du site WordPress et détection des modifications des fichiers PHP
Détection d'une backdoor PHP dans WordPress

Désactiver le plugin ou les installations de thème

Lorsque des pirates peuvent accéder à votre site, ils installent leurs propres plugins ou thèmes. Ces plugins et thèmes sont généralement malveillants et contiennent des porte-backdans. Cela donne aux pirates une entrée secrète sur votre site.

De plus, comme nous l'avons mentionné, des thèmes et des plugins vulnérables sont une cause principale de sites piratés. Si vous avez plusieurs utilisateurs sur votre site Web, ils peuvent installer un plugin ou un thème qui n'est pas sécurisé. Cela peut ouvrir votre site aux pirates. Si vous souhaitez éviter cela, vous pouvez désactiver les installations de plug-in et de thème sur votre site.

Si vous n'installez pas régulièrement des plugins et des thèmes sur votre site, vous pouvez désactiver l'option d'installation.

Sécuriser les accès admin à WordPress (2FA, double authentification)

L'extension Shield WordPress Security peut s'avérer utile pour sécuriser WordPress.
Celle-ci propose un firewall qui peut bloquer les SQL Injection et quelques autres attaques.
Enfin elle permet aussi de sécuriser les accès utilisateurs et panneau d'administration de WordPress.

Il est notamment possible d'activer l'authentification en deux étapes, par mail ou avec Google Authentificator

Sécuriser les accès Shield WordPress Security

L'identification en deux étapes sur WordPress, ainsi que l'ajout d'un champs "Im a human" contre les attaques par bruteforce.

Sécuriser les accès Shield WordPress Security

Il est aussi possible de le faire avec l'extension WordFence :

Sécuriser les accès admin à WordPress par un filtre IP

Là aussi la plupart des extensions de sécurité agissent comme pare-feu applicatif (WAF).
Ainsi, vous pouvez filtrer l'accès au panneau d'administration par l'adresse IP ou bloquer des pays.

Sur Apache avec .htaccess

Les fichiers .htaccess Apache permettent d'effectuer diverses opérations, notamment il est tout à fait possible d'interdire la lecture d'un fichier d'un site, de bloquer des IP Il peux donc être intéressant de bloquer l'accès au fichier wp-config.php - si vous ne l'avez pas déplacé. Cela se fait à partir d'un fichier .htaccess suivant :

<files wp-config.php>
order allow,deny
deny from all
</files>

On peut aussi bloquer l’accès au répertoire d’administration pour n’y autoriser que votre adresse IP si elle est fixe. Vous devez alors créer un fichier .htaccess dans le répertoire d’administration wp-admin qui peut contenir les commandes suivantes :

order deny,allow
deny from all
allow from IP
allow from IP
allow from IP

Notez que deny from permet aussi d'en interdire.

Il est notamment possible de mettre un .htaccess à la racine afin de bloquer les POSTS sur wp-login.php pour empêcher les attaques bruteforces (qui si, vous avez mis des places complexes ne poseront pas de problèmes).

Sur Nginx

Pour mettre un filtre IP sur des pages PHP sur Nginx, suivez ce tutoriel :

Bloquer les attaques BruteForce

Les attaques par Bruteforce visent à cracker et trouver le mot de passe par des tentatives successives.

Elles fonctionnent lorsque des comptes utilisateurs avec des mots passe faibles existent.
Votre serveur WordPress peut être la cible de ce type d'attaque car elles sont fréquentes à grande échelle.
Pour s'en prémunir :

Ensuite on peut chercher à bloquer les attaques par bruteforce par exemple avec une extension de sécurité.
La plupart de celles présentées précédemment possèdent une fonction de détecte et de blocage des adresses IP.

Enfin côté serveur, il existe aussi la solution Fail2ban :

Bloquer le SPAM

WordPress fournit des extensions efficaces contre le SPAM en commentaire. Vous pouvez installer une extension qui ajoute un captacha à saisir dans les commentaires : Accouplé, à une extension qui interroge une base de données d'IP de base, vous devriez avoir la paix.

Vous avez Akismet et Project HoneyPot (extension Project Honey Pot Http:BL).

WP-Akismet

Dans les deux cas, vous devez aller sur le site, vous inscrire et récupérer une clef API qui sera à indiquer dans la configuration de l'extension.

Utiliser le CDN Cloudflare

CloudFlare est un CDN (réseau de diffusion) qui se place entre WordPress et vos visites.
Il permet d'accélérer le chargement des pages grâce à des caches et optimisations.
Enfin il propose un Waf (Web Application Firewall) pour filtrer les tentatives de piratages, les bots et les attaques DDoS.

Schéma CDN CloudFlare

Pour mieux comprendre, voici une présentation complète du firewall Cloudflare :

Enfin ce tutoriel vous guide pour mettre en place le CDN Cloudflare sur votre WordPress :

Faire un audit de sécurité WordPress

Enfin régulièrement pour maintenir WordPress sûr, il convient de faire un audit de sécurité pour s'assurer que votre site WordPress est sain.
Pour cela, vous pouvez suivre ce tutoriel et guide complet :