Nos derniers articles

Sécuriser son site WordPress : 20 méthodes pour protéger votre site web

Quelques règles htaccess sur le root et un autre htaccess en wp-admin + 2 plugins et votre wordpress est déjà moins exposé !

© Il existe plusieurs moyens de sécuriser un site WordPress. La première étape est d'utiliser une version à jour de WordPress. Les nouvelles versions de WordPress incluent des correctifs de sécurité pour les vulnérabilités connues.

Afficher Masquer le sommaire

La sécurité des sites web est cruciale. Ainsi, si vous êtes propriétaire d’un site WordPress, il est essentiel de prendre des mesures pour le protéger contre les menaces en ligne. Dans cet article, nous allons explorer 20 méthodes incontournables pour sécuriser un peu wordpress. Suivez le guide et prenez le contrôle de la sécurité de votre site WordPress dès aujourd’hui !

Mettre à jour régulièrement WordPress

WordPress propose des mises à jour régulières pour améliorer la sécurité et les performances de votre site. Beaucoup de sites WordPress vulnérables utilisent des versions obsolètes. Assurez-vous de vérifier et d’installer les mises à jour de WordPress, des thèmes et des plugins dès qu’elles sont disponibles.

Utiliser des identifiants de connexion sécurisés

Évitez d’utiliser des noms d’utilisateur faciles à deviner comme “admin” ou “test”. Choisissez des mots de passe complexes combinant des lettres majuscules et minuscules, des chiffres et des symboles. Pour renforcer davantage la sécurité, changez régulièrement vos mots de passe.

Configurer une liste blanche et noire pour la page d’administration

Restreindre l’accès à votre page d’administration peut empêcher les attaques par force brute. Utilisez des services de pare-feu d’application web comme Cloudflare ou Sucuri pour définir des règles permettant uniquement aux adresses IP autorisées d’accéder à votre page de connexion.

<Limit GET POST PUT>
order deny,allow
deny from all
# IP utilisateur 1 wizards
allow from xxx.xxx.xxx.xxx
# IP utilisateur 2 wizards
allow from xxx.xxx.xxx.xxx
# IP d'un autre point d'accès
allow from xxx.xxx.xxx.xxx
</Limit>

Utiliser des thèmes WordPress de confiance

Choisissez des thèmes provenant de sources fiables, comme le dépôt officiel de WordPress ou des places de marché réputées comme ThemeForest. Évitez les thèmes « nulled » qui peuvent contenir du code malveillant.

Installer un certificat SSL

Un certificat SSL chiffre les données échangées entre votre site web et ses visiteurs, rendant plus difficile leur interception par les attaquants. De plus, un site en HTTPS est mieux référencé par les moteurs de recherche. La plupart des hébergeurs offrent des certificats SSL gratuits avec leurs plans.

Supprimer les thèmes et plugins inutilisés

Supprimez les thèmes et plugins que vous n’utilisez pas pour réduire les risques de failles de sécurité. Même les extensions désactivées peuvent représenter une menace si elles ne sont pas mises à jour régulièrement.

Activer l’authentification à deux facteurs

Renforcez la sécurité de votre page de connexion en activant l’authentification à deux facteurs (2FA). Vous devrez fournir un code unique en plus de votre mot de passe pour vous connecter. Cela se fait très  très facilement avec un plugin comme miniOrange’s Google Authenticator.  Vous pouvez opter bien sûr pour la protection par mot de passe du répertoire wp-admin.

Créer des sauvegardes régulières

Créez des sauvegardes régulières de votre site WordPress pour pouvoir le restaurer en cas d’incident. Utilisez des plugins de sauvegarde comme All-in-One WP Migration pour sauvegarder vos fichiers et bases de données.

Limiter les tentatives de connexion

Limitez le nombre de tentatives de connexion pour empêcher les attaques par force brute. Utilisez des plugins comme Limit Login Attempts Reloaded pour configurer le nombre de tentatives échouées avant de bloquer l’IP de l’utilisateur.

Changer l’URL de la page de connexion

Modifiez l’URL par défaut de votre page de connexion pour rendre plus difficile son ciblage par les attaquants. Utilisez des plugins comme WPS Hide Login pour ce faire.

Déconnecter automatiquement les utilisateurs inactifs

Paramétrez votre site pour déconnecter automatiquement les utilisateurs inactifs après une période donnée. Cela empêche les accès non autorisés si un utilisateur oublie de se déconnecter sur un ordinateur public. Un plugin dédié Inactive Logout permet de facilement paramétrer les délais.

Suivre l’activité des utilisateurs

Surveillez les actions des utilisateurs sur votre site pour détecter toute activité suspecte. Utilisez des plugins comme WP Activity Log pour tenir un journal des modifications apportées par les utilisateurs.

Analyser régulièrement la présence de malware

Scannez régulièrement votre site pour repérer les logiciels malveillants qui pourraient y être présents. Des plugins comme Wordfence ou Sucuri Security peuvent aider à identifier et à éliminer les malwares.

Désactiver le rapport d’erreurs PHP

Le rapport d’erreurs PHP peut révéler des informations sensibles sur la structure de votre site. Désactivez cette fonctionnalité en ajoutant les lignes de code appropriées dans votre fichier wp-config.php.

// Enlève affichage des erreurs (sécu)
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
error_reporting(0);

Changer d’hébergeur web si nécessaire

Si votre hébergeur actuel ne propose pas suffisamment de mesures de sécurité, envisagez de migrer votre site vers un hébergeur plus sécurisé. Recherchez des fournisseurs qui offrent des services de pare-feu, de sauvegarde automatique et un support client 24/7.

Désactiver l’édition de fichiers dans le tableau de bord

Pour éviter que des hackers ne modifient directement vos fichiers WordPress, désactivez l’éditeur de fichiers en ajoutant la ligne de code suivante au fichier wp-config.php :


define('DISALLOW_FILE_EDIT', true);

Protéger le fichier wp-config.php

Le fichier wp-config.php contient des informations cruciales sur la configuration de votre WordPress. Ajoutez le code suivant à votre fichier .htaccess pour le protéger :


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

Changer le préfixe par défaut de la base de données

Changez le préfixe par défaut wp_ des tables de votre base de données pour compliquer les attaques par injection SQL. Utilisez un préfixe unique en modifiant le fichier wp-config.php et actualisez les tables existantes via phpMyAdmin.

Désactiver la fonctionnalité XML-RPC

La fonctionnalité XML-RPC peut être exploitée pour des attaques par force brute. Désactivez-la en modifiant le fichier .htaccess ou en utilisant un plugin comme Disable XML-RPC.

Cacher la version de WordPress

Cachez la version de WordPress utilisée pour éviter que les attaquants exploitent les vulnérabilités connues de cette version. Ajoutez le code suivant au fichier functions.php de votre thème :


remove_action('wp_head', 'wp_generator');

Bloquer le hotlinking

Le hotlinking consomme les ressources de votre serveur en permettant à d’autres sites d’utiliser vos médias. Empêchez cela en ajoutant des règles dans votre fichier .htaccess pour bloquer le hotlinking.

Gérer les permissions de fichiers

Définissez des permissions restrictives pour vos fichiers et dossiers WordPress pour limiter les accès non autorisés. Vérifiez régulièrement les permissions et ajustez-les si nécessaire via votre client FTP ou le gestionnaire de fichiers de votre hébergement.

Source: www.hostinger.com

Comment je sécurise mon WordPress ?

Comme nous l’avons vu plus haut, la première des étapes est d’avoir toujours un wordpress et les plugins à jour, tout comme le thème officiel (les versions nulled étant souvent la porte ouverte aux malwares) et un hébergeur proposant des options de sécurité comme un pare-feu.  Voici ce que je fais pour sécuriser un peu un wordpress.  Bien sûr ce n’est pas limitatif.

1- Basculer les DNS chez Cloudlare

Cloudflare offre en version gratuite un firewall (pare-feu) et lutte via des règles prédéfinies contre les principales vulnérabilités connues de wordpress.

Cela se fait très facilement en changeant chez votre hébergeur les DNS par celles que va vous attribuer Cloudflare.

2- Les plugins indispensables

Disable XML RPC

Je désactive xmlrpc avec le plugin Disable XML-RPC-API.

Il est possible de le faire également via quelques lignes en htaccess.

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Disable REST API

Comme Disable XML RPC je désactive l’API Rest via Disable Rest API.  Le plugin permet de ne donner les droits qu’aux utilisateurs enregistrés.  Le réglage par défaut des utilisateurs non connectés doivent être à non autorisé. (grisé) .

Il suffit de le télécharger et de l’activer, et l’ensemble de l’API REST sera inaccessible aux visiteurs généraux de votre site. Ce plugin empêche le listing de vos comptes et de l’ensemble des posts via Json,  mais surtout protège votre wordpress en interdisant de nombreuses actions pour les utilisateurs non connectés.

2 plugins seulement compte tenu des autres protections en place via le pare-feu mais vous pouvez aussi installer ces extensions :

  1. SecuPress (grosse extension de sécurité qui contient WPS Hide Login)
  2. Patchstack (pour être prévenu de failles)
  3. SX User Name Security (pour ne pas divulguer les logins des utilisateurs)

3- Sécuriser les en-têtes de réponse HTTP (HTTP Response Headers)

Sécuriser les en-têtes de réponse HTTP (HTTP Response Headers) consiste à configurer les en-têtes HTTP pour protéger une application web contre diverses vulnérabilités et attaques. Voici quelques en-têtes de réponse HTTP courants et leur utilité en matière de sécurité :

  1. Content-Security-Policy (CSP) : Empêche l’exécution de scripts malveillants en définissant des sources approuvées de contenu JavaScript, CSS, etc.

    • Exemple : Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com
  2. Strict-Transport-Security (HSTS) : Force les navigateurs à communiquer uniquement via HTTPS, empêchant ainsi les attaques de type “man-in-the-middle”.

    • Exemple : Strict-Transport-Security: max-age=31536000; includeSubDomains
  3. X-Content-Type-Options : Empêche les navigateurs de deviner le type MIME du contenu, réduisant ainsi le risque d’exécution de contenu malveillant.

    • Exemple : X-Content-Type-Options: nosniff
  4. X-Frame-Options : Prévient les attaques de type “clickjacking” en contrôlant si une page peut être chargée dans un cadre <iframe>.

    • Exemple : X-Frame-Options: SAMEORIGIN
  5. X-XSS-Protection : Active ou désactive la protection contre les attaques de type cross-site scripting (XSS) dans les navigateurs compatibles.

    • Exemple : X-XSS-Protection: 1; mode=block
  6. Referrer-Policy : Contrôle quelles informations de référent (referrer) sont envoyées lors des requêtes de navigation.

    • Exemple : Referrer-Policy: no-referrer
  7. Permissions-Policy : Contrôle les fonctionnalités du navigateur (comme la géolocalisation, la caméra, etc.) qui peuvent être utilisées dans le contexte de la page.

    • Exemple : Permissions-Policy: geolocation=(), camera=()
  8. Expect-CT : Aide à détecter les certificats non conformes ou frauduleux émis par des autorités de certification (CA).

    • Exemple : Expect-CT: max-age=86400, enforce, report-uri="https://example.com/report"

Pour mettre en œuvre ces en-têtes de manière sécurisée, vous pouvez configurer votre serveur web (comme Apache ou Nginx) ou utiliser un plugin spécifique comme http headers si vous utilisez des plateformes comme WordPress.

Pour ajouter les sécurisations http headers directement en htaccess :

# Security Headers

    Header set X-XSS-Protection "1; mode=block"
    Header set X-Frame-Options "SAMEORIGIN"
    Header set X-Content-Type-Options "nosniff"
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    # Header set Content-Security-Policy ...
    Header set Referrer-Policy "same-origin"
    Header set Feature-Policy "geolocation 'self'; vibrate 'none'"
Header set Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()"


# END Security Headers

Fabien Raquidel a fait une petite vidéo Youtube sur les réglages des headers – Voir la réponse par exemple pour au café des rédacteurs :  https://securityheaders.com/?q=aucafedesredacteurs.fr&hide=on&followRedirects=on – Voir la doc ici : https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html

4. Limiter l’accès au répertoire wp-admin de WordPress

C’est une protection la plus efficace contre le hack. Sans accès au répertoire wp admin le hacker ne peut installer de nouvelles extensions, uploader des fichiers etc.

J’ajoute toujours une authentification sur le wp-admin en créant le .htaccess et .htpasswd dans le répertoire wp-admin ! A noter en ajoutant un mot de passe en htaccess vous ne pourrez plus utiliser les mots de passe pour application.

Une autre approche est de restreindre l’accès au répertoire wp admin à vos ip.

<Limit GET POST PUT> order deny,allow deny from all # IP utilisateur 1 wizards allow from xxx.xxx.xxx.xxx # IP utilisateur 2 wizards allow from xxx.xxx.xxx.xxx # IP d'un autre point d'accès allow from xxx.xxx.xxx.xxx </Limit>

Pour créer un fichier nommé .htpasswd dans le répertoire wp-admin, et insérez-y un couple d’identifiant et mot de passe, HTPasswd Generator peut vous aider à définir un mot de passe.

5- Ajout de nouvelles règles dans le htaccess de WordPress

Quelques règles permettent de limiter les mauvais robots (ceux par exemple qui cherchent des failles), les scripts d’injections commun, et agissent comme un pare-feu. Ces règles peuvent faire doublon avec un pare-feu comme Cloudflare ou celui de votre hébergeur mais dans le doute n’hésitez pas à les ajouter !

Je conseille la solution pare feu de 7G : Le pare-feu 7G offre une protection légère au niveau du serveur contre un large éventail de requêtes malveillantes, de mauvais bots  (si vous vendez des liens enlevez toutes références aux robots semrush,a href et majestic);  d’attaques automatisées, de spam et de nombreuses autres menaces et nuisances.

7G est un pare-feu léger (seulement 12KB) mais puissant qui assure la sécurité du site et la tranquillité d’esprit. De plus, 7G est open source et 100% gratuit pour tout le monde .
Télécharger 7G Firewall

Vous pouvez aussi protéger certains répertoires comme wp-includes, wp content et wp uploadnotamment pour éviter le listing et l’exécution de fichier php. Securi par exemple permet de mettre en place ces protections supplémentaires.

6 – Mes règles personnalisées dans le htaccess de wordpress.

Voici les règles présentes en htaccess sur chaque wordpress installé : Elles prennent en compte les headers, les règles pare-feu, l’accès à certains fichiers ou dossiers. Elles doivent être insérées en dehors de balises existantes notamment hors # BEGIN WordPress  et autres balises de plugin par exemple. 

Vous pouvez télécharger l’ensemble des règles ici, attention toute mauvaise modification du htaccess peut rendre votre site internet inopérent.

Vous avez d’autres idées pour sécuriser un wordpress, n’hésitez pas à partager vos bonnes pratiques ou astuces.

 

 

 

Réagissez à cet article