Espace tutos dev’ & informatique 🐧

WP Defender : corriger l’erreur ‘The server is not supported’

Publié le
Article sur comment corriger erreur WP Defender the server is not supported yet

Introduction

La sécurité de WordPress est un problème soulevé régulièrement. La popularité du CMS attirant à la fois des développeurs souhaitant toucher autant de clients que possible, des entreprises à la recherche du site web ultime mais pas cher, et des hackers à l’affût des précédents, ça n’est pas prêt de s’arrêter.

WP Defender, développé par la team WPMU DEV, fait partie des plugins de sécurité WordPress qui se sont fait un nom sur le marché, avec raison. Même dans sa version gratuite, il répond à beaucoup de problématiques, comme l’authentification à 2 facteurs, la vérification des fuites de mots de passe ou la détection de l’injection de code malveillant par les pirates.

Il s’installe comme n’importe quel plugin depuis le repository WordPress officiel.
Par contre, une fois installé, un petit problème peut immédiatement se poser chez certains hébergeurs, et c’est ce que nous allons aborder dans cet article…

Note : le code a été testé sur une installation WordPress 5.8 et WP Defender 2.5.5. N’oubliez pas que les modifications du code d’un site WordPress doivent toujours s’effectuer soit dans un thème enfant soit dans un thème / plugin maison, afin de ne rien perdre lors des mises à jour !

WordPress : The server is not supported yet

Dis plugin, c’est quoi ton problème ?

Après avoir fraichement installé le plugin WP Defender, on se rend sur l’interface de recommandations de sécurité du backoffice, et badaboum, un message d’erreur pas vraiment encourageant nous tombe dessus :

Erreur the o2switch-powerboost-v3 server is not supported yet
WP Defender ne reconnaît pas le serveur O2Switch par défaut


Ca a de quoi rebuter plus d’un administrateur, en particulier si celui-ci cherche simplement un moyen de sécuriser son site WordPress sans y passer la journée. Le réflexe de pas mal de gens est de désinstaller le plugin pour en installer un autre – qui risque cependant d’afficher la même erreur.

Qu’est ce qui ne va pas avec mon serveur ?

Ce qui ne va pas avec le serveur, c’est qu’il n’est pas reconnu – dixit le message d’erreur, thank you captain obvious !

Plus concrêtement, cela signifie que le serveur HTTP sur lequel fonctionne WordPress indique une identité que WP Defender ne possède pas dans sa liste des serveurs compatibles. Le plugin utilise différents mécanismes pour tenter de déterminer le serveur en place, dans l’exemple il s’agit de l’entête de réponse Server qui, dans le cas d’un hébergement O2Switch, est Server: o2switch-PowerBoost-v3.

Mais pourquoi identifier mon serveur ?

C’est vrai quoi, pourquoi un plugin aurait-il besoin de savoir sur quel serveur il fonctionne ?
Après tout, le problème ne s’est jamais posé avec la trentaine d’autres déjà installés /s

La réponse est que WP Defender ne se contente pas de travailler au niveau du user-land PHP, mais effectue également des réglages de sécurité au niveau de la configuration serveur. La façon d’appliquer ces réglages dépend du serveur : par exemple, avec un serveur Apache on peut utiliser des fichiers .htaccess, mais ce n’est pas le cas avec un serveur Nginx.

Quand il tente de déterminer le serveur en cours d’utilisation le plugin rencontre un nom de serveur qui lui est inconnu, dans notre exemple o2switch-powerboost-v3. Il refuse donc de proposer et d’appliquer des recommandations qui pourraient être incompatibles et endommager la configuration de ce dernier. C’est normal, et c’est pour notre bien !

A noter que ce qui ne dépend pas du serveur (authentification à deux facteurs, blocage d’adresses IP etc.) ne sera pas bloqué si le nom du serveur n’est pas reconnu.

Faire reconnaître son serveur par WP Defender

Un peu de reverse-engineering : comment le plugin détecte le serveur

⚙️  WP Defender 2.5.5 détecte d’abord le type du serveur, d’après deux méthodes contenues dans le fichier source src/component/security-tweaks/servers/server.php :

  • A partir de la superglobale $_SERVER["SERVER_SOFTWARE"]
  • En effectuant une requête sur la page d’accueil du site, et en lisant la valeur de l’entête Server retourné

La chaîne obtenue est convertie en minuscules et coupée au premier espace ou slash. La chaîne Apache/2.4.1 (Win64) donne ainsi le type apache.

👉  Dans l’exemple, le type obtenu est o2switch-powerboost-v3, à partir de l’entête Server.

⚙️  Le plugin effectue ensuite un mapping du type de serveur vers un nom de classe. Le mapping par défaut est fourni dans le fichier src/component/security-tweaks/servers/server-factory.php :

Valeur du typeNom de classe
nginxNginx
apacheApache
litespeedApache
iis-7IIS_7
flywheelFlywheel
cloudflareFlywheel

👉  Dans l’exemple, le mapping ne contient rien pour o2switch-powerboost-v3, le voila notre problème !

Ajouter son type de serveur grâce à un filtre

Avant le traitement, le tableau de mapping passe par un filtre WordPress intitulé defender_get_supported_servers, qui est décrit dans la documentation API de WP Defender.

On va utiliser ce filtre pour rajouter notre serveur – dont le type est donné par le message d’erreur de WP Defender – en le faisant correspondre au nom de classe correct (voir le tableau de mapping précédent).

Dans l’exemple du serveur O2Switch, ca donne le code suivant, à insérer dans le fichier functions.php d’un thème WordPress enfant :

/* Compatibilité serveur O2Switch dans WP Defender */

add_filter("defender_get_supported_servers", function($servers){
  $servers["o2switch-powerboost-v3"] = "Apache"; 
  return $servers;
});

Chez un autre hébergeur, il faut remplacer o2switch-powerboost-v3 par le type de serveur donné dans le message d’erreur, et Apache par le nom de classe correspondant, par exemple Nginx, Apache, Flywheel… Il est probable que la valeur reste Apache cependant, car c’est un serveur très répandu.

Si vous avez un doute, vous pouvez regarder la section Outils > Santé du site > Informations > Serveur dans le backoffice WordPress, qui devrait mentionner le nom du serveur dans la ligne Serveur web.
Vous pouvez aussi demander directement à votre hébergeur.

Conclusion

Voila, WP Defender devrait à présent reconnaitre votre serveur et proposer des recommandations de sécurité.

Si vous vous sentez un peu perdu avec toutes les recommandations ou si le serveur n’est toujours pas reconnu, n’hésitez pas à m’écrire depuis la page contact du site.

Bon code à vous, à la prochaine.

Références

WordPress – Plugin gratuit WP Defender
WPMU DEV – Site officiel de WP Defender
WPMU DEV – Documentation API WP Defender

Partagez cet article  =>