Comment sécuriser WordPress en 13 étapes

Vous avez surement lu quantité d'article sur comment sécuriser WordPress. Cependant, bien souvent les auteurs ne font qu'effleurer les bonnes pratiques qui doivent encadrer la sécurisation d'un site sous WordPress. Je vous propose une suite d'étape pour sécuriser réellement votre site WordPress. Cet article va traiter des mesures à prendre pour sécuriser WordPress de manière concrète.

Attention vous ne devez pas appliquer un point par-ci par-là, mais tous les points pour améliorer votre sécurité, certain point sont sans impact s'ils ne sont pas complétés par les autres.

1 - Mises à jour, oui mais pas n'importe comment

Les mises à jour sont un élément essentiel et indispensable pour la bonne sécurité de WordPress, comme tout en informatique au final. Depuis WordPress 4.7.1 les mises à jour sont automatiques pour WordPress lui-même, hors plugin. Mais, car il y a un gros mais, par défaut les mises à jour automatiques ne fonctionnent que si et seulement si vous avez un visiteur sur le site, vous ou un tiers. C'est une grosse nuances car un hacker pourrait profiter du laps de temps entre le déclenchement de l'automate et de l'application de la mise à jour pour réussir son attaque... Par expérience on peut avoir jusqu'à 1 minutes pour réaliser une attaque, ce qui est largement suffisant.

Rappel : les mises à jour automatiques ne concernent que les mises à jour mineures et de sécurité, par exemple si votre site utilise WordPress 4.7.4 il sera mis à jour automatiquement vers la 4.7.5 et non pas vers la 4.8 ou 4.8.2. WordPress offrant un support très long pour les mises à jour de sécurité, ce qui est un gros avantage de WordPress.

Pour palier à ce souci il y a cependant une solution[1], vous pouvez ajouter à votre serveur une tache "cron" qui va aller déclencher l'automate de WordPress. Pour cela vous devez faire les étapes suivantes :

1 - désactiver WP_Cron dans le fichier de configuration de wordpress (wp-config.php) :

//-- ajouté cette ligne dans votre fichier de configuration
define('DISABLE_WP_CRON', true);

2 - Ajouter la tache à votre gestionnaire sur votre serveur, ici le cas d'un serveur linux avec crontab :

*/30 * * * * curl https://www.kanjian.fr/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Explication sur la ligne si dessus, votre serveur viendra exécuter toutes les 30 minutes les tâches automatique de WordPress. Pourquoi 30 minutes ? Les intervalles de déclenchement des taches sont par défaut d'une heure, deux fois par jour ou une fois par jour. Il est bien sur possible d'avoir des plugins qui demande une exécution plus régulière. Si c'est votre cas vous devrez ajuster la valeur dans votre crontab. Attention toutefois plus vous avez de tache cron sur votre serveur et plus vous en avez un risque de baisse de performance générale sur la machine.

Petit bonus pour ceux qui gèrent un serveur je vous conseille de créer un fichier bash qui lui sera appelé toutes les 30 minutes dans lequel vous avez toutes vos sites WordPress par exemple :

#!/bin/bash
# nom du fichier : all_wordpress_cron.sh
# lancement des crons pour ces sites web :
curl https://www.kanjian.fr/wp-cron.php?doing_wp_cron > /dev/null 2>&1
curl https://www.example.fr/wp-cron.php?doing_wp_cron > /dev/null 2>&1
curl https://www.example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Ensuite votre crontab comportera que l'appel au fichier et non plus l'appel à chaque site directement :

*/30 * * * * /home/all_wordpress_cron.sh > /dev/null 2>&1

Le core oui mais pas que :

C'est une nouveauté ajoutée depuis WordPress 3.7[2], vous pouvez en plus des mises à jour automatique de sécurité du core ajouter la mise à jour automatique des éléments suivants :

  • Plugins
  • Thèmes
  • Fichiers de traduction

Pour ajouter ces mises à jour automatiques rien de plus simple ajoutez ces deux lignes au fichier function.php de votre thème ou thème enfant :

//-- activation de la mise à jour automatique de tous les plugins
add_filter( 'auto_update_plugin', '__return_true' );

//-- activation de la mise à jour automatique de tous les thèmes
add_filter( 'auto_update_theme', '__return_true' );

Cependant attention si vous avez des plugins que vous avez dû modifier les mettre à jours automatiquement ne sera pas possible, car vous perdriez vos modifications idem pour les thèmes si vous n'avez pas fait de thème enfant.

Pour les plugins que vous auriez modifiés voici un exemple pour vous permettre de faire la liste exhaustive des plugins que vous souhaitez voir bénéficier des mises à jour automatique (du coup ne mettez pas la ligne ci-dessus) :

function auto_update_specific_plugins ( $update, $item ) {
// Liste des slugs des plugins à mettre à jour automatiquement
$plugins = array (
'akismet',
'buddypress',
);

    if ( in_array( $item->slug, $plugins ) ) {
return true; // on autorise la mise à jour des plugins plus haut
} else {
return false; // on refuse la mise à jour des autres plugins
}
}
add_filter( 'auto_update_plugin', 'auto_update_specific_plugins', 10, 2 );

Le slug c'est ni plus ni moins que le nom du répertoire du plugin. Voilà vous avez un système autonome pour la mise à jour de votre WordPress de A à Z, vous pouvez partir en vacances sans soucis !

2 - Les sauvegardes

L'autre élément que l'on retrouve toujours quand on évoque la sécurité informatique, en plus des mises à jours, c'est bien évidement les sauvegardes. Vous avez plusieurs solutions possibles selon vos compétences bien entendu mais aussi selon votre accès au serveur. Généralement votre hébergeur vous propose déjà un service de sauvegarde automatique, vérifié juste la fréquence des sauvegardes et si vous  pouvez y accéder facilement et rapidement.

Pour bien choisir la fréquence de vos sauvegardes, cela dépend des modifications que vous réalisez sur votre site ou que vos internautes font par exemple en laissant des commentaires. Pour un blog une sauvegarde hebdomadaire est largement suffisante. Pour un site e-commerce il faudra surement réaliser une sauvegarde quotidienne voir toutes les heures en fonction des périodes d'affluence (soldes, noël, etc.).

Vous pouvez aussi utiliser des plugins de sauvegarde il y en a beaucoup dans l'univers de WordPress j'ai donc choisi de vous en présenter deux rapidement, que j'utilise pour certains clients.

Le premier : BackUpWordpress

L'avantage de ce plugin par rapport à d'autres c'est qu'il ne se contentera pas uniquement de faire une sauvegarde de votre base de données, mais au contraire vous permettra de sauvegarder en intégralité votre site Internet.

Vous pouvez définir le nombre de sauvegarde à conserver, en fonction de l'espace que vous a alloué l'hébergeur, vous avez aussi la possibilité d'exclure des dossiers et des fichiers de la sauvegarde. Nous l'utilisons pour nos clients qui sont hébergés sur des serveurs que nous ne contrôlons pas.

Je vous conseille tout de même de toujours télécharger les sauvegardes pour les stocker ailleurs de manière sécurisée, c'est d'ailleurs l'une des bases en bonne gestion de sauvegarde. Autre point fort il vous permet de planifier la fréquence de vos sauvegardes de manière très fine.

Le second : iThemes Security

C'est principalement un plugin de sécurité pour WordPress et de ce fait il embarque une gestion simplifié des sauvegardes dans sa version gratuite. Cette version simplifiée vous permet d'avoir une sauvegarde journalière de votre base de données, cette dernière vous pouvez choisir de la stocker sur le serveur du site directement ou de la recevoir par e-mail.

Personnellement quand on utilise iThemes Security pour faire une sauvegarde de la base de données on demande à la recevoir par e-mail, car il y a eu beaucoup de soucis de configuration chez iThemes. Nous avons souvent réalisé des mises à jour de sécurité pour corriger des failles qui permettait à un internaute lambda d'accéder aux sauvegardes.

Vous l'aurez compris cela va dépendre en grande partie de la criticité de votre site Internet et surtout du contrôle que vous avez ou non de son hébergement. D'ailleurs j'espère que si c'est vous qui gérez le serveur dans son intégralité vous avez déjà une politique efficace de sauvegarde.

3 - Les clefs de sécurité

WordPress incorpore un système de gestion de clef de sécurité pour assurer une bonne base cryptographique de plusieurs éléments clé du site Internet. Ces clés vont notamment, vous servir pour toute la mécanique d'authentification des utilisateurs et des administrateurs via la sécurisation des cookies. C'est donc un élément très important  pour la sécurité de votre site WordPress il faut absolument les modifier suite à un piratage de votre site Internet.

En modifiant les clés secrète de sécurité vous allez automatiquement déconnecté toutes les sessions actives des utilisateurs du site en question. Très pratique suite à une attaque pour être certain d'avoir déconnecté un pirate qui utiliserait un compte administrateur par exemple.

Ces clés se trouvent dans le fichier de configuration de WordPress wp-config.php à la racine de votre site voici un exemple de clés (attention ne pas utiliser celles en exemple) :

define('AUTH_KEY', 'Ckm&H<8DP2le7=A:=PEl,~u{Z[4$V,6&6k<86,T^MY=(w7:y:qpq-4EqzAK-w74-');
define('SECURE_AUTH_KEY', 'P$M~]Rc/L2|GS7}n:^DQ} S]Wzv-mP-~T9L,.+rPuh}BsXBHw8@|>3+^Yo6g*+$U');
define('LOGGED_IN_KEY', 'zcGRhO[>{mr8+/x-T#SGh?T((PReh:yf={5zE/1z@x:%@ButOB8uvJ4H`+e(pM|5');
define('NONCE_KEY', 'CXq_.:#7E;z|8n&!/`aHE-wou3Cl*!+#;zt8B:_ejJ-n*@OAUk<a#D0ptc<Jl{9P');
define('AUTH_SALT', '&$U {#h?/i|6-7_nDSjag*)m/dv#W%X%;l|O+KSmq49+1#`8#$O}5%,a_dZsVU>-');
define('SECURE_AUTH_SALT', '6F 6v|k<=!{Dy2z?N3:-L|6aaMN?5rb#S5|m7e4-lmQ7rx}%jFzG{@J:-bH|yN6(');
define('LOGGED_IN_SALT', ']w}|pQW-Kx|X(xp*HQIJj_16k#yHK*kkDG$(?`4b3[*kADuFKWG+`l>ct]qeopa9');
define('NONCE_SALT', '6+ 1j6v_v|+PWeI!b~;M&tdZP8le?0,6`aC$>tu0-`c<^5W5Wi35)!olQEL*?[#>');

Pour être sur de génêrer de nouvelles clés fortes je vous conseille d'utiliser l'API de WordPress à l'adresse suivante c'est simple comme un copier/coller : https://api.wordpress.org/secret-key/1.1/salt/

Je vous invite même à modifier vos clés quand vous passer de la phase de test à la mise en ligne de votre site Internet et faite la même chose si vous le changez de serveur.

4 - Les préfixes des tables de la base données tu changeras

Lorsque vous installez WordPress il vous demande vos identifiants de connexion à la base données, le nom de la base de données à utiliser pour le site et le préfixe que vous souhaitez voir utiliser pour vos tables. Par défaut il vous propose "wp_", ce qui est d'ailleurs une abération, c'est se paramètre que vous aller devoir modifier. Par exemple au lieu d'utiliser "wp_" vous pouvez utiliser "2tHdat_", le but de la manoeuvre est en cas d'attaque dite par Injection SQL, l'attaquant ne soit pas facilement en mesure d'extraire vos données si il ne connait pas le préfixe des tables.

Attention toutefois, en fonction de la faille présente cette mesure pourrait ne servir à rien du tout, mais c'est dans les bonnes pratiques et je vous confirme que cela peut vraiment vous éviter parfois le pire. Par exemple voir toutes vos demandes de devis voler ou tous les accès utilisateurs à votre site Internet. Il n'est pas impossible que certains plugins et thèmes mal développés vos causes des soucis en ayant utilisé en dur dans leurs requêtes le préfixe de base de WordPress.

Un jour espérons ce préfixe sera aléatoire dès la procédure d'installation.

5 - Spécificité d'apache

Si vous utilisez apache comme serveur web vous êtes concerné directement par ce point de sécurité. Tout WordPress inférieur à la version 4.7.5 contient une faille qui permet de faire envoyer l'e-mail de récupération de mot de passe à un e-mail choisi par l'attaquant et non pas celui de l'utilisateur.

Cette vulnérabilité a été dévoilé le 3 mai 2017 par Dawid Golunski [3], elle est spécifique à apache car pour fonctionner elle nécessite plusieurs paramètres.

  1. Qu'apache soit le serveur web
  2. Que lorsque l'on tape l'adresse IP du serveur dans un navigateur on arrive directement sur le site WordPress visé. (très souvent le cas pour les très gros site qui utilise un serveur dédié juste pour eux, ou dans le cas de mauvaise configuration serveur)
  3. Ne pas avoir configuré la variable : "UseCanonicalName" d'apache dans la déclaration de votre vhost à ON (https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname)

Si vous répondiez à ces critères vous étiez en danger, et si vous n'avez toujours pas mis à jour vers la version 4.7.5 de WordPress c'est toujours le cas. Je le mentionne dans les bonnes pratiques de sécurisation, car on ne sait jamais un jour cela pourrait être de nouveau source de problème. A savoir que le serveur web nginx n'est pas du tout concerné par cette attaque.

6 - Change l'adresse d'accès de l'administration

Si vous utilisez un site WordPress ou plusieurs régulièrement, vous devez savoir que pour accéder à l'administration il suffit de rajouter "wp-admin" à l'url du site pour y accéder. Bien sur si vous le savez les pirates aussi le savent et donc il est facile pour eux de mettre en oeuvre des séries d'attaques notamment par force brute (on revient sur ce point juste après).

Pour modifier cette adresse d'accès je vous conseille d'utiliser des plugins comme par exemple (iThemes Security) et de respecter la règle suivante : N'utilisez pas des mots simples qu'un pirate pourrait deviner tel qu'admin ou administration, je vous invite fortement à utiliser une chaîne aléatoire que vous conserverait dans vos favoris par exemple : aYJJRrcb ou encore KqKgUoyJtLPDaouAyvidmVtXAHOS.

Du coup votre adresse pour vous connecter à l'administration ne sera plus :

http://www.example.com/wp-admin
mais
http://www.example.com/aYJJRrcb  ou http://www.example.com/KqKgUoyJtLPDaouAyvidmVtXAHOS

L'idéal pour créer ces chaines c'est d'utiliser un générateur de mot de passe, si vous êtes sous Windows vous pouvez utiliser le mien qui se trouve ici : Password Generator V2.0 ou encore d'utiliser celui de votre gestionnaire de mots de passe.

7 - Authentification à deux facteurs

Une authentification à deux facteurs c'est quoi ? C'est un mécanisme qui en plus de votre mot de passe va vous demander un code qui vous sera envoyé par SMS ou généré par une application que vous avez sur votre téléphone. Sans la saisie valide de ce code il vous sera impossible de vous connecter.

Ce mécanisme est devenu quasi indispensable de nos jours pour ralentir les pirates qui essaye de deviner vos mots de passe et c'est le meilleur moyen actuel pour renforcer rapidement et simplement l'accès à l'administration de WordPress. Je vous conseille d'utiliser comme second facteur d'authentification une application comme Google Authenticator, pour ceux qui connaissent c'est le même principe que celui de Battle.net, plutôt que les SMS.

Le second facteur via SMS a montré des grands signes de faiblesse et n'est pas considéré comme robuste et est vivement déconseillé.

Pour le mettre en place vous avez plusieurs options dans les plus simples vous avez quantité de plugin qui vous propose la mise en place de Google Authenticator [4]. Une grande majorité des plugins de sécurité vous propose ces options, toutefois la plupart du temps il faudra acheter la version premium.

Voici à quoi ressemble Google Authenticator sur votre mobile :

Vous l'aurez compris en plus d'installer un plugin sur votre site WordPress vous devez installer l'application sur votre Smartphone. Espérons un jour que l'on aura une version libre ou d'une société plus respectueuse de la vie privée (appel du pied à Qwant).

8 - Protection contre le Brute force

Le "Brute Force" ou attaque par force brute en français consiste à essayer, à grande échelles, les différentes possibilité, identifiant + mot de passe, pour se connecter à un compte d'utilisateur. Cette technique est utilisé sur les sites Internet, mais aussi sur tous les autres système informatique même vos boites e-mails, vos sessions d'ordinateur et de Mac OS etc.

Vous trouverez plusieurs cas de Brute Force en voici les principaux qui vous concerne en tant que possesseur d'un site WordPress :

  1. Le pirate connait votre identifiant et va "juste" essayer différent mot de passe en testant toutes les combinaison possible (si votre mot de passe est fort ça va lui prendre des années)
  2. Le pirate connait votre identifiant, mais va utiliser une liste des mots de passe les plus utilisées ou des listes pré-établie, on en trouve beaucoup sur internet et là votre mot de passe favoris risque de ne pas résister des années
  3. Le pirate ne connait pas votre identifiant et donc il va déjà devoir essayer de le deviner. Attention cependant bien souvent s'il trouve votre adresse e-mail il y a de forte chance que ce soit votre identifiant.

Vous l'aurez compris pour ralentir le pirate vous devez faire quatre choses :

  1. Utilisez des mots de passe fort aléatoire [4][5]
  2. Ne pas utiliser d'identifiant simple et connu tel que : admin, administrateur, administrator
  3. Mettre en place une authentification à deux facteurs
  4. Changer l'adresse de votre administration

Pour revenir sur le point N°3 si vous utilisez un deuxième facteur robuste le pirate arrêtera surement son attaque, car il sera trop complexe pour lui de contourner le deuxième facteur. Pour vous donner un ordre d'idée on constate entre 500 et 1000 tentatives de connexion frauduleuse sur les sites que nous gérons et cela par semaine ! Il y a par moment des piques qui dépasse les 2000 par jour, surtout quand il y a des nouvelles versions de WordPress qui sortent.

Et pour aller plus loin je vous conseille d'ajouter un programme anti-brute force qui va permettre notamment de bannir les adresses IP qui génère trop d'erreur de connexion et de ralentir de pirate en interdisant la connexion à un compte ou il y a eu trop de tentative pour un temps données (souvent 20 minutes). Tous les bons plugins de sécurité de WordPress dispose de cette fonctionnalité et pour changer un peu je vous propose de regarder : Sucuri Scanner, très très bon plugin aussi.

Ces plugins vont aussi vous permettre de mettre en place une chose vitale pour ralentir les pirates : Ne pas afficher le texte des messages d'erreurs et ainsi ne pas révéler si c'est le mot de passe qui n'est pas correct ou si c'est le nom d'utilisateur qui est invalide.

9 - Suivre la modification des fichiers

Une fois votre site Internet en ligne vous n'aurez pas souvent besoin d'apporter des modifications dans votre thème ou d'autres fichier de programmation. Du coup il est de bonne pratique de mettre en place une surveillance de la modification des fichiers de votre site Internet. Pour ce faire vous avez plusieurs possibilités sur WordPress l'utilisation de plugin qui de manière intelligente ne vous alerteront pas si la modification est dû à une mise à jour volontaire de WordPress, de plugin, ou de votre thème.

Pour cela vous avez notamment Sucuri Scanner, iThemes Security et d'autres. Avantages de Sucuri Scanner par contre il vous permettra d'être alerté lors de la modification de page ou d'article là encore si vous gérez directement le site ça peut vous permettre de détecter une intrusion [6].

Autre solution si vous gérez le serveur ou est hébergé votre site Internet vous pouvez utiliser des scripts de contrôle comme celui que j'avais proposé il y a quelque temps [7]. L’inconvénient de ces solutions et qui bien souvent en cas de mises à jour automatique de WordPress il vous remontra tous les fichiers qui ont été mises à jour et donc générer beaucoup de faux positif.

Le but étant de détecter toutes modifications de fichier par un pirate qui aurait modifié un ou plusieurs de vos fichiers pour y ajouter un code malveillant. Il aurait aussi pu ajouter de nouveaux fichiers sur votre serveur pour diffuser des codes malveillants réaliser des actions de phishing ou encore pour conserver un accès à long terme sur votre site Internet (c'est ce que l'on appelle des backdoors [8]).

10 - Mettre en place un certificat SSL

Un certificat SSL va vous permettre de chiffrer les données, les rendre incompréhensibles, lors de leurs transit sur Internet entre votre site Internet et la personne qui consulte votre page. C'est un standard de sécurité depuis des années on le voie notamment de manière quasi systématique lors des paiements en lignes, si jamais vous ne voyez pas le cadenas vert lors d'un paiement fuyez le site !

Le but ici est dans un premier temps de renforcer la sécurité de vos internautes en empêchant un intrus de voir ce qu'il consulte ou envoie comme informations, par exemple leurs mots de passe si ils ont un compte sur votre site. Cela permet aussi à votre internaute d'être certain que c'est bien votre site qui a envoyé la page et que personne ne l'a modifié entre temps. Les navigateurs modernes comme Chrome ou Firefox avertissent de manière de plus en plus inquiétante qu'un site ne dispose pas de SSL comme vous pouvez le voir sur l'image suivante et ce n'est qu'un début.

Pour vous en tant que gestionnaire du site l'avantage est double, le plus important c'est que vous ne risquez pas de vous faire voler votre mot de passe lorsque vous vous connectez depuis un cyber-café, d'ailleurs ça reste toujours une mauvaise idée, ou si quelqu'un espionne sur votre réseau informatique. En effet, les données étant chiffrés un intrus ne pourrait les comprendre et donc les utiliser ou les voler.

Le second avantage plus léger celui-ci c'est que Google améliorera légèrement votre positionnement dans ces résultats. Même si on a pas vraiment constaté un écart réellement significatif entre un site avec ou sans SSL. Dernière information vous pouvez bénéficier de certificats de sécurité SSL gratuits grâce à Let's Encrypt.

11 - Thèmes et plugins

Vous le savez surement votre site WordPress utilise un thème, ou plusieurs, et des plugins pour fonctionner ces différents éléments sont très souvent la cause du piratage de votre site Internet. Pourquoi ? Dans un premier temps le responsable et la personne ou l'équipe qui a réalisé le plugin ou le thème, malheureusement de nos jours très souvent encore la sécurité n'est qu'une option dans la création de programme informatique. Alors que la sécurité devrait être au même niveau d'importance que les fonctionnalités.

Vous aurez donc surement des plugins ou des thèmes qui contiennent des failles de sécurité, en soi en avoir n'est pas incurable et très souvent dans l'écosystème de WordPress les mises à jour de sécurité sont réalisés très rapidement. Par contre vous devez être vigilant pour les appliquer de votre côté le plus rapidement les mises à jour.

Mais il y a un point qui n'est que rarement abordé quand vous lisez des articles de sécurité sur WordPress, c'est les thèmes et plugins abandonnés. Pourquoi car bien souvent vous essayer un plugin puis un autre, vous les désactivés ensuite vous avez surement fait de même avec les thèmes. D'ailleurs bien souvent il y a souvent au moins 2 thèmes sur un site WordPress.

Le risque ? C'est que même désactivé un plugin ou un thème reste accessible directement, surtout si le développeur n'a pas respecté les recommandations et bonnes pratiques, et que s'il contient une faille elle puisse être exploitée. Donc si vous n'utilisez plus un plugin ou un thème supprimé le complètement car c'est un risque réel et sérieux pour votre site Internet.

Autres point important installer uniquement les plugins du site officiel de WordPress ou encore de place de marché reconnue et ayant une bonne réputation comme codecanyon. Attention dans un cas comme dans l'autre il n'y a aucune garantie de la qualité des thèmes et plugins ni de leurs sécurités.

12 - Droit d'accès aux fichiers

Si vous hébergez votre site Internet sur un serveur Linux vous savez peut-être que chaque fichier et dossier à des droits d'accès qui lui sont assignés. Exemple de droits sur un dossier et un fichier :

-rw-r--r-- 1 usersite groupsite 5035 29 sep 2017 wp-activate.php
drwxr-xr-x 9 usersite groupsite 4096 5 sep. 2017 wp-admin

La première ligne correspond à un fichier et la seconde à un répertoire (le "d" en début de ligne), les droits du fichier sont : autorisation en lecture et écriture pour le propriétaire du fichier, lecture uniquement pour tous les autres. Pour le dossier ils sont différents car le propriétaire peu lire, écrire et exécuter un programme, pour les autres ils ne peuvent que lire et exécuter.

Pour le fichier la correspondance en langage linux de droit est 644 et pour le dossier c'est 755. Ce qui signifie que les droits appliqués à ces fichiers sont correctement configurés pour assurer une bonne base de sécurité à votre site Internet. D'ailleurs il y a un grand article sur le sujet dans la documentation officiel de WordPress [9].

Mais pourquoi devez-vous contrôler voir modifier ces droits ? Car bien souvent votre site Internet n'est pas le seul sur un serveur et qui si vous autorisiez tous le monde à écrire dans vos fichiers, un pirate pourrait attaquer un autre site sur le serveur et ainsi depuis ce site modifier vos fichiers.

Pour certain fichier très spécifique comme le fichier de configuration : wp-config.php il est recommandé de lui attribuer les droits 600, c'est-à-dire que seul le propriétaire peut lire et écrire et que tous les autres ne peuvent même pas le lire. Pour rappel dans ce fichier se trouvent vos clés de sécurité et surtout les accès à votre base de données.

Autre point important, ces réglages n'ont de valeur que si sur votre serveur il existe un utilisateur par site Internet, si vous avez comme utilisateur www-data, votre serveur est mal configuré, car tous les sites peuvent accéder aux fichiers des un et des autres. Changer ce réglage fera l'objet d'un autre article.

Pour vous aider voici deux lignes de code qui vous permettront de changer vos permissions sur tout vos dossiers et fichiers :

cd /chemin/du/site/www/

# met a jour les droits pour les dossiers
find . -type d -exec chmod 755 {} \;

# met a jour les droits pour les fichiers
find . -type f -exec chmod 644 {} \;

N'oubliez pas de modifier les droits du wp-config.php après avoir lancé ces deux commandes. Surtout si vous n'êtes pas familier avec ces commandes faites attention car il est possible que cela engendre des soucis au niveau des mises à jour et des plugins et des plugins de cache. Je vous rassure cela ne crée des soucis que sur les serveurs mal configurés mais malheureusement ce n'est pas ce qui manque de nos jours.

13 - Plugin de sécurité

Pour vous aider à mettre en place tous les points que vous avez pu voir abordé dans cet article je vous conseille vivement d'installer un plugin de sécurité. Ils ont tous leurs avantages et inconvénient et les plus sérieux ont presque tous été cité plus haut. Voici ma sélection pour vous des plugins de sécurité pour WordPress à essayer :

Vous pouvez aussi utiliser le plugin suivant pour contrôler le code des thèmes installés sur votre WordPress :

Conclusion

Vous l'avez compris rien qu'en lisant les 13 différentes étapes arriver à sécuriser WordPress n'est pas aussi simple que de mettre en place des sauvegardes et le mettre à jour. Il y a en effet bon nombre d'étape en plus à réaliser et auxquelles vous devrez prêter attention sur toute la durée de vie de votre site WordPress.

Mais vous le constatez aussi ce n'est pas impossible à sécuriser, attention toutefois la sécurité absolue à 100% ça n'existe pas et ça n'existera jamais que cela soit pour un site Internet ou tout autre chose au monde.

Vous avez aimé cet article n'hésitez pas à le partager ! Dans tous les cas n'hésitez pas à m'écrire pour toutes remarques et réactions !

Sources :

[1] : Documentation officielle sur la configuration des Cron via l'OS

[2] : Documentation officielle sur les mises à jour automatique en tache de fond

[3] : WordPress reset password exploit : CVE-2017-8295

[4] : Recherche sur le site de WordPress pour les plugins vous permettant d'utiliser Google Authenticator

[5] : Mes 2 conseils pour bien choisir vos mots de passe

[6] : Exemple de code trouvé suite à une intrusion dans un site WordPress

[7] : Contrôler les fichiers modifier sur votre serveur

[8] : Définition d'une backdoor sur Wikipédia

[9] : Codex de WordPress permission des fichiers

Crédits image à la une : Conçu par Freepik