Mon site WordPress génère des erreurs 403
Sur un site web, les erreurs peuvent provenir de sources multiples et ne sont jamais agréables, surtout lorsqu’elles sont intermittentes.
Récemment, un client nous a contacté pour un problème d’erreur HTTP 403 sur (et non un problème d’erreur 500) sur son site WordPress qui se produisait de façon aléatoire!
Qu’est-ce qu’un code d’état HTTP?
Un code HTTP, ou code d’état HTTP, est une réponse numérique qu’un serveur web renvoie lorsque vous (ou votre navigateur) faites une demande à ce serveur. Par exemple, lorsque vous tapez une URL dans votre navigateur, celui-ci envoie une demande au serveur hébergeant cette URL, et le serveur répond avec un code HTTP.
Votre site est une cible…
Nous sommes tous dans la mire des pirates. Obtenez une analyse gratuite de votre situation en moins de 5 minutes.
Les codes HTTP sont essentiels au fonctionnement du web, car ils fournissent des informations sur le succès ou l’échec d’une demande. Voici les grandes lignes des codes HTTP possibles:
- Codes 2xx : Les codes situés entre 200 et 299 sont des codes de statut HTTP qui indiquent une réponse réussie. Ils signalent que la requête du client a été acceptée et traitée avec succès par le serveur. Ces codes sont généralement associés à des réponses de succès dans le protocole HTTP, ce qui signifie que la demande a été exécutée avec succès et que la ressource demandée a été renvoyée avec succès au client.
- Codes 3xx : Les codes de statut HTTP compris entre 300 et 399 sont des codes de redirection. Ils indiquent que le client doit prendre une action supplémentaire pour terminer la demande. Cela signifie généralement que l’URL demandée a été modifiée ou déplacée, et le client est redirigé vers cette nouvelle localisation.
- Codes 4xx : Les codes de statut HTTP allant de 400 à 499 représentent des erreurs côté du visiteur. Ils signalent que la demande du client (visiteur) n’a pas pu être traitée, souvent en raison d’un problème avec la demande elle-même. Notre fameuse erreur 403 appartient à cette catégorie.
- Codes 5xx : Les codes de statut HTTP 500 à 599 indiquent une erreur du serveur. Cela signifie que le serveur n’a pas pu accomplir une demande pourtant valide, généralement à cause d’un problème avec le serveur lui-même.
Qu’est-ce qu’une erreur 403?
Une erreur 403, également appelée « Access Forbidden », est un code d’état HTTP qui signifie qu’un utilisateur tente d’accéder à une ressource sur le serveur web à laquelle il n’a pas l’autorisation d’accéder. Dans le cas de l’erreur 403, le serveur a bien compris la requête, mais refuse de la satisfaire pour des raisons de restrictions d’accès.
Avec ces informations, il ne reste qu’à identifier pourquoi l’autorisation est refusée!
Causes principales d’une erreur 403 dans WordPress
Il existe plusieurs raisons courantes qui peuvent entraîner une erreur 403 sur votre site WordPress. Voici les plus fréquentes :
- Permissions de fichiers incorrectes : Les fichiers et répertoires sur votre serveur web ont des permissions qui déterminent qui peut lire, écrire et exécuter ces fichiers. Si ces permissions sont incorrectement définies, cela peut provoquer une erreur 403.
- Problèmes de fichier .htaccess : Le fichier .htaccess est un puissant outil de configuration que WordPress utilise pour gérer les permaliens et la redirection. Cependant, un .htaccess corrompu ou mal configuré peut entraîner une erreur 403.
- Problèmes d’extensions (plugins) : Certaines extensions (plugins) peuvent causer des erreurs 403, en particulier celles qui gèrent les aspects de sécurité (ex. : Wordfence, iThemes Security, etc.) ou de redirections (ex. : Redirections) de votre site.
- Paramètres de pare-feu ou de sécurité : Un pare-feu ou une configuration de sécurité trop stricte peut être la cause d’erreurs 403, surtout si ces paramètres sont mal configurés et bloquent l’accès à certaines parties de votre site web.
Note : La résolution de ces problèmes nécessite une connaissance technique avancée et l’accès à votre serveur ou à votre compte d’hébergement. Si vous n’êtes pas sûr de savoir comment procéder, il est recommandé de ne pas improviser et de contacter un expert WordPress.
Les 3 premières causes peuvent souvent être réglées directement par un développeur expérimenté. Par contre, si le problème touche la sécurité du serveur, la résolution dépendra de votre type d’hébergement.
Sécurité du serveur et pare-feu
Plusieurs hébergeurs web proposent des services qui utilisent cPanel et WHM (Web Host Manager). Ces solutions sont souvent équipées de pare-feu afin de réduire l’impact des attaques ou des robots qui peuvent consommer trop de ressources de votre compte.
Les technologies les plus populaires incluent :
- ConfigServer Security & Firewall (CSF) : Suite de sécurité pour Linux très populaire parmi les utilisateurs de cPanel. CSF offre une large gamme de fonctions, notamment le blocage d’adresses IP, la protection anti-flood, le blocage de pays, la protection contre les attaques de force brute, et bien plus encore.
- Advanced Policy Firewall (APF) : Bien que moins connu que CSF, APF est un pare-feu extrêmement fiable basé sur des règles
iptables
(un système de gestion de pare-feu pour Linux). APF est facile à utiliser, flexible, et offre une protection solide contre les attaques courantes. - ModSecurity : Pare-feu d’application web (WAF) open source qui peut être utilisé pour protéger les applications web contre diverses attaques, comme les injections SQL, les attaques par force brute, et les attaques XSS. ModSecurity est souvent utilisé en combinaison avec d’autres pare-feu pour offrir une couche de sécurité supplémentaire.
- cPHulk : Il s’agit d’un outil intégré dans cPanel qui offre une protection contre les attaques par force brute. Il bloque les adresses IP qui ont trop de tentatives de connexion échouées sur une certaine période de temps.
- Evasive (module Apache): Ce module est un outil de défense indispensable contre les attaques par déni de service (DoS) et les attaques par déni de service distribué (DDoS). Il fournit une protection en temps réel contre les attaques en surveillant les modèles de trafic et en bloquant les adresses IP suspectes. Si votre site WordPress subit une augmentation soudaine du trafic ou des demandes suspectes,
mod_evasive
peut aider à neutraliser la menace avant qu’elle ne perturbe votre site. - Imunify360: Solution de sécurité automatisée tout-en-un pour serveurs Linux. En tant que suite de sécurité qui utilise une technologie d’apprentissage automatique, elle offre une protection proactive pour repérer les menaces les plus récentes. Imunify360 inclut une multitude de fonctionnalités, comme la détection avancée d’intrusion, un système de prévention des intrusions (IPS/IDS), un pare-feu d’application web (WAF), une protection contre les malwares et bien d’autres outils essentiels pour la sécurité.
Il est important de noter que l’utilisation de ces pare-feu nécessite une certaine connaissance technique pour une configuration correcte et efficace. N’oubliez pas, la sécurité de votre site WordPress dépend de la robustesse de vos mesures de protection.
Si vous n’utilisez pas cPanel/WHM, il n’est pas rare de constater la présence d’outils comme , FirewallD et/ou Fail2ban qui agissent de manière similaire.
Et notre client?
Dans le cas de notre client, c’était finalement ModSecurity qui contenait des règles beaucoup trop strictes pour ses visiteurs. La configuration a été revue et les problèmes ont disparu comme par magie… sauf qu’il n’y avait rien de magique!