30 conseils pour sécuriser WordPress

Le contenu de cet article provient en grande partie d'une source externe, nous avons l'autorisation de l'auteur original pour publier ces informations sur notre base de connaissance.

Voir le contenu original : https://sitewebprodesign.fr/30-conseils-essentiels-de-securite-wordpress/

 

 

Puisque WordPress est probablement LE gestionnaire de contenu le plus populaire aujourd'hui, il est normal que les pirates tentent tout leur possible pour y trouver des failles de sécurité pour ainsi exploiter les ressources du serveur hébergeant un site Web ou encore s'attaquer directement à votre contenu et dériver vos visiteurs ailleurs. Des dizaines de milliers de sites Web sont piratés chaque jour, une bonne partie sous WordPress, ce chiffre ne cesse d'augmenter.

 

Pour éviter que vous soyez une prochaine victime, il est maintenant fortement recommandé voir même indispensable de Sécuriser au mieux votre installation WordPress. Puisque chaque site est différent, les développeurs de WordPress ne peuvent pas ajouter eux même ce niveau de sécurité, ce qui rend une installation de base malheureusement insuffisante.

 

La première ligne de défense pour WordPress, c'est vous. Toutes les informations ici ne servent à rien si vous ne donnez pas la maintenance qui se doit à votre site. En tant que gestionnaire, vous devez vous assurer de faire vos mises à jour régulièrement (WordPress, Thèmes, Extension, etc...)
Un site qui n'est pas à jour s'expose à des failles de sécurité et peu importe les protections que vous ajoutez, un pirate pourra possiblement exploiter une de ses failles.

 

Dans cet article vous trouverez un résumé de différentes méthodes pour protéger un site WordPress (valide pour un serveur Apache / LiteSpeed). Cependant, il est important de prendre certaines précautions avant toute action.

  • Toujours faire une sauvegarde complète de votre installation (Fichiers + Base de données) avant d'entreprendre une modification, cette pratique ne s'applique pas qu'à cet article, vous devriez en tout temps posséder une copie saine de votre site.
  • Faire une copie du fichier avant de le modifier, vous permet de revenir en arrière rapidement en cas de problème.
  • Toujours noter les modifications effectuées (tenir à jour un journal de modification et annoter des commentaires au-dessus de vos modifications pour savoir à quoi sert telle ligne de code)
  • Tester votre site après chaque modification avant d'en entreprendre des nouvelles, si quelque chose brise vous n'aurez pas à tout recommencer.

 

 

ATTENTION:
Les manipulations de sécurité WordPress indiquées dans cet article sont à titre d'information uniquement, elles peuvent demander des adaptations en fonction de votre propre installation et demandent d'avoir un certain niveau de connaissances techniques. Si vous ne savez pas ce que vous faites, demandez à un professionnel de vous aider. Rapidenet n'assure aucun support et n'assume pas la responsabilité en cas de bris de votre site Web. 

 

 

Choisir le bon thème

Choisir un thème compatible avec les dernières versions de PHP sur un site réputé.

La structure d’un site WordPress repose sur son thème, il doit donc être à jour, bien codé et régulièrement actualisé pour se prémunir contre les vulnérabilités à exploiter des thèmes ou plugins obsolètes dont raffolent les pirates.
Vous pouvez utiliser des plugins comme « PatchStack »  pour vous aider.

 

 

Choisir les bons Plugins

De façon générale, plus un plugin est connu et utilisé, plus le travail fait autour de cette extension est rigoureux et maintenu. Fuyez les plugins obsolètes ou plus mis à jour et les sites qui vous proposent des plugins 'Nulled’ et télécharger les plugins sur le site WordPress

L’absence de mises à jour de WordPress et ses plugins exposent votre site à des failles de sécurité qui peuvent servir à des hackers ou compromettre les données.

Malgré toutes les actions que vous ferez pour protéger votre site, vous verrez que de nombreuses informations sur votre site et ses plugins peuvent être facilement utilisés.

 

 

Exiger une authentification forte

L’authentification d’un utilisateur est dites forte lorsqu’elle a recours à une combinaison d’au moins deux facteurs.

L’accès au site pour TOUT les utilisateurs doit se faire à minima par un mot de passe fort et peut être renforcé par différents autres moyens comme Microsoft Autentificator ou Google Authentificator qui fournit un code à six chiffres changeant toutes les 30 secondes

Les règles de Sécurité WordPress demande un minimum de complexité au niveau du mot de passe… Nous vous conseillons  les suivantes:

au moins 8 caractères comportant 3 des 4 types de caractères (majuscules, minuscules, chiffres, caractères spéciaux) si l’authentification prévoit une restriction de l’accès au compte (cas le plus courant) comme :

– une temporisation d’accès au compte après plusieurs échecs ;
– un « Captcha » ;
– un verrouillage du compte après 10 échecs ;
– 12 caractères minimum et 4 types de caractères si l’authentification repose uniquement sur un mot de passe ;
– Intégrer des caractères nationaux ou européens comme €, à, ê rendra la vie moins facile aux hackers d’un autre continent.

 

 

Changer l’ID du compte Administrateur du site

Wordpress attribue par défaut à l’administrateur du site l’ID N° 1 lors de l’installation, il est possible de changez cette ID via phpadmin ou avec un plugin de sécurité tel Secury pro de Ithemes

Avant de modifier l’ID du compte administrateur, changer l’auteur des pages créées avec ce compte en les attribuant à un utilisateur de type « Auteur »

Une fois la sauvegarde de la base de données WordPress effectué, connectez vous à votre base de données en utilisant l’outil de ligne de commande MySQL ou phpMyAdmin puis exécutez les requêtes ci-dessous sur la base de données WordPress:

UPDATE wp_users SET ID = 9999 WHERE ID = 1;

La requête MySQL ci-dessus va changer l’ID utilisateur de l’administrateur par défaut de 1 à 9999 dans la table « wp_users » puis exécutez la requête suivante sur la table « wp_usermeta » qui contient les données relatives à l’utilisateur.

UPDATE wp_usermeta SET user_id = 9999 WHERE user_id = 1

NB : Utiliser toujours une valeur élevée pour la nouvelle ID utilisateur de l’administrateur.

 

 

Changer l’emplacement de la page de connexion

On peut changer l’emplacement de la page de connexion de différentes façon, nous vous recommandons cependant un plugin très léger « WPS Hide Login » qui vous permet de changer facilement et en toute sécurité l’url de la page du formulaire de connexion par celle de votre choix sans toucher aux fichiers du noyau. La désactivation de ce plugin ramène votre site exactement dans l’état où il était avant. Le choix de l’URL est modifiable dans GENERAL.

Vous pouvez aussi réduire de manière importante les tentatives d’intrusion en modifiant l’ URL par défaut de wordpress wp-admin.php aussi via le .HTACCESS.

Pour cela, il vous faut ajouter cette ligne à votre fichier :

RewriteRule ^(/)?wp-administration/?$ /wp-login.php [QSA,L]

L’URL wp-admin.php deviendra dans ce cas wp-administration, Remplacez le slug « wp-administration » par celui de votre choix pour personnaliser votre URL de connexion en évitant wplogin, login, wp-login … 

Rapidenet applique par défaut une sécurité par Recaptcha Invisible sur les liens de connexion /wp-admin et /wp-login.php mais il est encore plus sécuritaire de changer l'emplacement.

 

 

Limiter la connexion à l’administration

Si vous avez une ip fixe, vous pouvez limiter l’accès à l’administration du site aux seules IP autorisées en plaçant dans le fichier .HTACCESS à la racine du site les lignes suivante

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111$
RewriteCond %{REMOTE_ADDR} !^222\.222\.222\.222$
RewriteRule ^(.*)$ – [R=403,L]
</IfModule>

Seules les adresses IP figurant sur la liste blanche peuvent accéder à la page d’ouverture de session ( remplacer les valeurs !^111\.111\.111\.111$ et !^222\.222\.222\.222$ par les IP autorisées

 

 

Appliquer les bons droits

Appliquer les bons droits sur les fichiers et les dossiers est primordial pour sécuriser votre site Web .

  • fixez les autorisations des dossiers à “755
  • Fixez les autorisations des fichiers à “644
  • Si vous fixez les autorisations de wp-config.php et .htaccess à 444 ainsi aucune modification sur ses fichiers ne pourra être faites hors du gestionnaire de fichiers de votre hébergement

 

 

Arrêter l’exécution du PHP dans Wp-Content

Placer un fichier .htaccess dans le dossier wp-content avec le contenu suivant :

Order deny,allow
Deny from all
<Files ~ « .(xml|css|jpe?g|png|gif|js)$ »>
Allow from all
</Files>

Cela bloquera ainsi l’exécution des fichiers PHP à l’intérieur de ce dossier.

 

 

Interdire l’accès aux répertoires sensibles de WordPress

vous devez créer un (ou ajouter au ) fichier .htaccess et le placer dans les dossiers /wp-includes , /wp-content, /uploads de votre site

<Files *.php>
deny from all
</Files>

Ceci interdira l’exécution de fichiers PHP dans ces dossiers.

 

 

Protéger .htaccess et wp-config.php

Editez dans votre fichier .htaccess et ajoutez le code suivant pour le protéger :

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

Ensuite pour protéger vos fichiers .htaccess :

<files .htaccess>
order allow,deny
deny from all
</files>

Vous pouvez aussi interdire l'accès aux fichiers cachés (fichiers avec un . devant) via:

<filesMatch "^\.">
order allow,deny
deny from all
</filesMatch>

 

Protéger le répertoire wp-admin

wp-admin est l’un des répertoires les plus important de votre site, vous pouvez « durcir » la sécurité de ce répertoire grâce à un fichier .HTACCESS placé dans le dossier wp-admin de votre site.
Pour Limiter l’accès à l’administration du site aux seules personnes autorisées via l'IP de leur bureau ou domicile, entrez dans les informations suivantes

<Limit GET POST PUT>
order deny,allow
deny from all
# IP de l’administrateur (au bureau)
allow from xxx.xxx.xxx.xxx
# IP de l’administrateur (au domicile)
allow from xxx.xxx.xxx.xxx #
</Limit>

 

 

Masquer les fichiers du répertoire wp-includes

Pour désactiver l’accès dossier Wp-includes, placer les instructions suivantes dans le fichier .HTACCESS à la racine du site :

# hide wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ – [F,L]
RewriteRule !^wp-includes/ – [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php – [F,L]
RewriteRule ^wp-includes/theme-compat/ – [F,L]
</IfModule>

 

 

Protéger le dossier  wp-content

Wordpress utilise 3 dossiers à savoir :

– wp-includes qui contient tous les fichiers dont WordPress a besoin pour fonctionner
– wp-admin qui contient tous les fichiers nécessaires à l’administration du site
– wp-content qui contient tous les fichiers propres à votre site WordPress

Une méthode simple pour protéger les fichiers dans wp-content et ses sous-dossiers consiste à placer dans wp-content un fichier .htaccess contenant les lignes suivantes :

Order Allow,Deny
Deny from all
<Files ~ « \.(css|jpe?g|png|xsl|gif|ico|js)$ »>
Allow from all
</Files>

 

 

 

Ajouter une seconde authentification à l’administration du site avec le fichier .htpasswd

Pour accèder à l’administration du dite, vous utilisez un identifiant et un mot de passe, éventuellement accompagné d’une double authentification mais vous pouvez ajouter un autre niveau de mot de passe grâce à un fichier .htaccess et à un fichier .htpasswd.

Le fichier .htpasswd sera dans le répertoire wp-admin et contient des identifiants et mots de passe cryptés,  servez vous de ce site pour vous aider :

Entrez les identifiants et leurs mots de passe à utiliser à gauche puis cliquez sur « Générer le contenu du fichier du fichier .htpasswd »

Copiez ensuite la ou les lignes qui s’afficheront dans le fichier .htpasswd qui contiendra (dans l’exemple) les lignes :

jean:$apr1$VD00TdtQ$VNQDhh.nj1NG5FD7IjmKD1
Paul:$apr1$L4XSge8X$Cs1cfarCiSeJ8FrrxgLik0

insérez ensuite le code suivant dans le fichier .htaccess :

# Seconde authentification pour l’administration
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
AuthName « Connexion à l’administration »
AuthType Basic AuthUserFile "/chemin/acces/complet/vers/fichier/.htpasswd"
Require valid-user

Attention : La protection par mot de passe de ce dossier va empêcher toutes les requêtes vers admin-ajax.php et admin-post.php et peut poser problème, malgré tout SECUPRESS propose une solution

 

 

Masquer la version de WordPress

La version de wordpress donne des indications aux hackers pour trouver d’éventuelles failles de sécurité, pour éviter cela, placer dans le fichier function.php de votre thème enfant cette ligne :

remove_action("wp_head", "wp_generator");

Ceci dit, c’est très facile de savoir quelle CMS est utilisé et quelle est sa version.

 

 

Supprimer les fichiers inutiles

Certains fichiers comme le fichier readme.html qui n’a aucune utilité, est placé à la racine du site et contient la version de WordPress.
Des sauvegardes de votre site placés lors de votre migration, des sous-dossiers ou sous-domaines contenant des vieilles versions ou des versions de développement abandonnées ne devraient pas rester dans votre hébergement Web.
Une sauvegarde de votre base de données à la racine de votre hébergement Web, c'est très dangereux de laisser ce genre de fichier en place.
Un fichier backup.zip ou fullbk.zip à la racine de votre hébergement, c'est très très très dangereux.

 

 

Masquer les erreurs de connexion

Pour éviter que WordPress donne des informations en cas d’erreur, ajouter cette ligne à votre fichier function.php du thème enfant

add_filter('login_errors',create_function('$a',"return null;"));

 

 

Empêcher l’édition des fichiers depuis le tableau de bord

Si l’édition de fichiers est activée, ce qui est fait par défaut, les administrateurs peuvent éditer directement le code des thèmes et plugins à partir du tableau de bord WordPress. Cette option présente plusieurs risques de sécurité car si un hacker parviennent à s’infiltrer dans l’administration du site, il aura accès à toutes vos données aussi il est préférable de désactiver l’édition de fichiers.

Pour cela :

– Editez le fichier WP-CONFIG.PHP
– Cherchez la ligne define('DISALLOW_FILE_EDIT',/ ;
– changer pour define('DISALLOW_FILE_EDIT', true);
   Si cette ligne n'existe pas, vous pouvez la créer vous même, tant que vous la mettez au dessus de la ligne: * C’est tout, ne touchez pas à ce qui suit ! Bonne publication. */
– Sauvegarder

 

 

Masquer le contenu des dossiers WordPress

Ces lignes ne touchent pas Rapidenet, nous bloquons l'affichage des dossiers de base sur nos serveurs.

Pour masquer le contenu du site aux navigateurs, vous pouvez ajouter dans le fichier .htaccess du site les lignes suivantes :

# Alternative pour empêcher le listage des répertoires
IndexIgnore *

ou

# Désactiver l’affichage du contenu des répertoires
Options All -Indexes

Chaque fois qu’un serveur Apache renvoie des pages d’erreur, il affiche la signature du serveur Web et des informations sur le système.
Révéler la signature du serveur Web peut constituer un risque pour la sécurité, il est donc recommandé de désactiver toutes les signatures de serveur Web dans le cadre du processus de renforcement du serveur., il faut ajouter au fichier .htaccess su site les lignes :

# Masquer les informations du serveur
ServerSignature Off

 

 

Désactivez XML-RPC

L’API REST à rendu XML-RPC obsolète, ce dernier n’étant plus utilisé, ce n’est pas utile de garder XML-RPC actif sur votre site car c’est une source potentielle de vulnérabilités et d’attaque DDoS.
On peut améliorer la sécurité wordpress en le désactivant  par l’ajout au fichier .htaccess du site des lignes suivantes :

# Désactiver les requêtes pour xmlrpc.php
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
ou dans le fichier WP-CONFIG.PHP par la ligne
add_filter('xmlrpc_enabled', '__return_false');
ou dans le fichier 'functions.php' de votre thème:
add_action("init", function() {
global $pagenow; // get current page
if ( !empty($pagenow) && "xmlrpc.php" === $pagenow ) {
header("HTTP/1.1 403 Forbidden"); // Produit une erreur 403
exit; // exit request
} return;
});

 

 

Empêcher le hotlinking

Le hotlinking, connu également sous nom de “direct linking”  consiste à voler une image, une vidéo ou une tout autre ressource d’un site concurrent en créant un lien direct vers le serveur de celui-ci.

Les personnes qui utilisent cette technique l’utilisent pour économiser de la bande passante et ne pas ralentir leur serveur (au détriment du  site tiers qui va consommer de la bande passante )

Certains  l’utilisent aussi pour améliorer leur référencement en sabotant ceux de leurs concurrents directs.

On peut le désactiver en ajoutant au fichier .htaccess du site les lignes suivantes :

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com/.*$ [NC]
RewriteRule .(gif|jpg)$ http://www.yoursite.com/hotlink.gif [R,L]

et en modifiant le nom de domaine et l’url qui est renvoyé au site responsable (image hotlink.gif dans l’exemple)

 

 

Protéger les plugins

Les plugins peuvent poser des problèmes et autoriser des accès directs aux pirates, pour s’en protéger, vous pouvez ajouter les lignes suivant au .htaccess du site

<files ~ ".(js|css)$"= "&quot;.(js|css)$&quot;">
order allow,deny
allow from all
</files>

même le meilleur plugin sécurité wordpress peut avoir des failles, alors pensez à sauvegarde votre site régulièrement et à exporter les sauvegardes

 

 

Changer les clés de Sécurité (Salt Keys) WordPress du site dans fichier wp-config.php

Le fichier wp-config.php contient une série de clés d’authentification, ces clés peuvent être changés en suivant l’url https://api.wordpress.org/secret-key/1.1/salt/

Ces clés secrètes permettent de crypter les cookies utilisateur  et ainsi de renforcer ainsi le niveau de sécurité de votre mot de passe.

define('AUTH_KEY’, '-Z UEhVnSH-,/p>}?j-zdO~Bw<<8Q*8?/pKO[ZTsg}U}7NB.3H+u`hc#CQ3vZ5P0’);
define('SECURE_AUTH_KEY’, 'Z8acB1(~_o@Wr8OCZDu{-6)[+t@{.f7aGOEwc#1#Tw~A(^wv@KH04E04-)|pFR:4’);
define('LOGGED_IN_KEY’, '361Y.3Qnga0i)DO79vZF!T4Z BESjUU0/H{<4* ?c|eHr{+#xcZp>4w@9Cq5ftQn’);
define('NONCE_KEY’, '5)v=Gt1%]bnSaC`_B+~>d/P)|GDE0~$i]GsVktX7UmMd-r-65ka#;`2A3+vU$d{~’);
define('AUTH_SALT’, '=>,|5s|TBwuq6VB*ff_q:9zO?.qVRs7r7w`I6fDA/F;rg=4JP+N7] uuK_yfEw|p’);
define('SECURE_AUTH_SALT’, '-s-Ew}@u0t|-m5d=Ds++Q>agIS>|)2n|v0jGte+v1pM(0lSGLlEqlZWXLe^+=zok’);
define('LOGGED_IN_SALT’, 'Z:$5.nK-/Ku8601kg6_}}S{u_[D$mkdtG|~%KDCE!+eLM}-$wP5b|uI+j-X#L9Qp’);
define('NONCE_SALT’, 'Saifi3y+&)25-1P8+b@b1-I4p|wMFXQ- +NKT|ecV~5tlbHotr7#b2i-Y&w=fQha’);

Les clés si dessus sont un exemple, générez vos propres clés avec le lien

 

 

Se protéger des attaques XSS et SQL injections

Cross-site scripting (XSS) est une faille de sécurité qui permet à un attaquant d’injecter dans un site web un code client malveillant. Ce code  permet aux attaquants de contourner les contrôles d’accès et d’usurper l’identité des utilisateurs.

Pour se protéger de ses attaques, vous pouvez placer dans le fichier .htaccess du site les lignes suivantes :

# QUERY STRING EXPLOITS
RewriteCond %{QUERY_STRING} ../ [NC,OR]
RewriteCond %{QUERY_STRING} boot.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag= [NC,OR]
RewriteCond %{QUERY_STRING} ftp: [NC,OR]
RewriteCond %{QUERY_STRING} http: [NC,OR]
RewriteCond %{QUERY_STRING} https: [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig [NC,OR]
RewriteCond %{QUERY_STRING} ^.*([|]|(|)||’| »|;|?|*).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%22|%27|%3C|%3E|%5C|%7B|%7C).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|config|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare|drop).* [NC]
RewriteRule ^(.*)$ – [F,L]

Attention : une ou plusieurs lignes peuvent influer sur certains plugins 

Vous pouvez optez pour une version plus simple et moins contraignante en ajoutant à votre .htaccess ces lignes :

Header set X-XSS-Protection "1; mode=block"

Pour se protéger des attaques SQL, un certain nombre de solutions existent :  Vous pouvez limiter les attaques SQL en bloquant les mots-clés est utilisé par les hackers pour exécuter leurs attaques, Pour ce faire, ouvrez votre fichier .htaccess et insérez les lignes de codes ci-dessous :

#Limit sql orders
RewriteCond %{QUERY_STRING} [^a-z](declare¦char¦set¦cast¦convert¦delete¦drop¦exec¦insert¦meta¦script¦select¦truncate¦update)[^a-z] [NC]
RewriteRule (.*) – [F]

Cette méthode des mots-clés renverra l’attaquant vers une erreur 404 mais noter que le serveur Apache vous affichera la même erreur chaque fois si une de vos URL contient ces mots-clés concernés.

 

 

Utilisez SSL

Un petit cadenas fermé qui rassure, c’est le signe que votre site possède un certificat SSL, le certificat vous permet d'utiliser un lien httpS://

Le SSL assure le cryptage des données transmises via un site Web à un serveur ou un navigateur.
Les données sensibles (mots de passe, informations bancaires, emails) sont cryptées avant d’être transmises afin qu’elles soient inutiles en cas d’interception.

La protection SSL vérifie la source et la destination des données, un site utilisant un certificat SSL à une url qui commencent obligatoirement par HTTPS, précédé d’un cadenas fermé
Internet étant un réseau ouvert, le SSL est là pour protéger les données circulant sur la toile, de plus, Google, depuis 2015 encourage activement les sites à adopter une protection SSL, et depuis 2018 indique « Site non sécurisé » sur tous les sites sans protection SSL

L’affichage ou la couleur du cadenas varieront en fonction du type de certificat SSL utilisé sur le site, mais également du navigateur web.

Les certificats SSL font plus que protéger vos données. Ils sont nécessaires pour bien se placer sur Google qui donne la priorité à ces sites plus sécurisés alors demander à votre hébergeur un certificat SSL

Une fois configuré, vérifiez l'état de votre certificat SSL ici: https://www.sslshopper.com/ssl-checker.html

 

Paramétrez le .htaccess pour le SSL

Si vous êtes client chez Rapidenet, dans votre DirectAdmin vous pouvez aller dans la section Configuration du Domaine, sélectionnez votre domaine et cochez la case : Forcer SSL avec HTTPS Redirect.

Sinon manuellement vous pouvez placer ces lignes avant # BEGIN WORDPRESS dans .htaccess

# Réécriture et redirection des URI
# Résoudre contenu mixte4 lors de la migration vers HTTPS CSP Politique de sécurité des contenus.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy « upgrade-insecure-requests; »

# BEGIN WordPress
Toute modification des directives situées entre ces marqueurs sera surchargée.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

On utilise Ici un réécriture des adresses non https pour les transformer en adresses https
Pour résoudre le contenu mixte, les adresses non sécurisées présentes dans le code source de vos pages et les convertir en adresses sécurisées. le fichier .htaccess contiendra aussi :

Header always set Content-Security-Policy "upgrade-insecure-requests;"

et pour forcer les pages d’administration de WordPress en HTTPS, on ajoutera dans wp-config.php les lignes suivantes :

/* Forcer le SSL pour l’administration */
define('FORCE_SSL_ADMIN', true) ;

 

 

 

Changez le préfixe de vos tables WordPress

Une des premières opérations de sécurité WordPress à effectuer en installant WordPress est de changer le prefixe des tables wp_ par défaut par un autre préfixe impossible à deviner.

Lors de l’installation, un compte d’administration nommé « admin » est proposé, nommer le compte avec des informations neutres … Si le site est déjà installé, modifier l’ID et le nom du compte via PhpAdmin ou un plugin de sécurité

 

 

Bloquer les bots indésirables

bloquer les bots indésirables avec ses entrées dans le .htaccess

# accepte seulement les bots connus
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !^.*AOL.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Mozilla.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Opera.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Msie.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Firefox.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Netscape.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Safari.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Google.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Slurp.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Yahoo.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*MMCrawler.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*msnbot.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*SandCrawl.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*MSRBOT.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Teoma.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*Jeeves.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*inktomi.* [NC]
RewriteCond %{HTTP_USER_AGENT} !^.*libwww.* [NC]
RewriteRule .* – [F]

Les spammeurs et les pirates utilisent des proxys pour cacher la provenance des attaques, ces lignes ajoutées dans le .htaccess permettent de bloquer la plupart d’entre eux

#Block proxies almost of all kind
RewriteEngine on
RewriteCond %{HTTP:HTTP_VIA} !^$ [OR]
RewriteCond %{HTTP:HTTP_X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:HTTP_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:HTTP_X_FORWARDED} !^$ [OR]
RewriteCond %{HTTP:HTTP_FORWARDED} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$ [OR]
RewriteCond %{HTTP:HTTP_FORWARDED_FOR_IP} !^$ [OR]
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:CLIENT_IP} !^$ [OR]
RewriteCond %{HTTP:FORWARDED_FOR_IP} !^$ [OR]
RewriteCond %{HTTP:HTTP_PROXY_CONNECTION} !^$
RewriteRule ^(.*)$ – [F]

Vous pouvez aussi vous referez à cette page

 

 

La sécurité WordPress commence avec des sauvegardes regulières

Les sauvegardes sont quelque chose d’essentiel et les négliger est impensable, au vue aux nombres de sites piratés chaque jour, aux nombreuses sources de problèmes ( mauvaises manipulations, erreurs de l’utilisateur, fichiers supprimés ou corrompus, …)

Sauvegarder en local sur l’hébergement ne suffit pas, la sauvegarde pour prendre tout son sens doit être externalisée et doublée à minima.

Même la sécurité du site vous semble optimum, la meilleure assurance contre les problèmes reste d’avoir un système de sauvegarde fiable permettant des restaurations rapides.

Il existe une multitude de plugins de sauvegarde, Gratuits ou payants, dont on citera All-In-One WP MigrationUpdraftPlus, Backup BuddyAkeeba Backup,  …
Tous les sites possèdent une base de données qui doit être sauvegardées régulièrement, même si votre site est ultra-sécurisé.

Idéalement, nous vous recommandons d’effectuer une sauvegarde hebdomadaire: Certains Plugins comme Backup Body permettent de faire des sauvegardes différenciées ( base de données, plugins, thèmes, fichiers, complete)

Assurez vous de toujours avoir suffisament d'espace dans votre forfait Web pour être en mesure de stocker temporairement votre sauvegarde (le temps de la création)
Toujours conserver une sauvegarde ailleur que chez votre hébergeur, conservez la sur un disque de sauvegarde, un disque cloud, chez votre mère, peu importe...

 

 

Supprimer ou renommer le compte admin

A l’installation de WordPress, le compte par défaut pour l’administration est « admin ». C’est une première faille de sécurité qui laisse aux pirates que le mot de passe à deviner, il convient de le changer à la création et pour protéger au maximum le compte administrateur, il est fortement conseiller d’écrire toutes les publications avec un profil de type éditeur.

Si le compte admin à été créé, pas de panique, voici comment faire :

– Se connecter avec « admin »
– Aller sur « Comptes »
– Créer un nouvel utilisateur (Utilisateurs > Ajouter) avec un identifiant neutre ne contenant pas d’information dans le libellé indiquant son rôle d’admin (exemple: JacquesT45)
– Donner le droit « Administrateur » à ce nouvel utilisateur
– Décocher « Envoi ce mot de passe au nouvel utilisateur par e-mail. »
– Se déconnecter de l’administration
– Se connecter avec le nouvel utilisateur (« JacquesT45 » dans l’exemple).
– Aller sur « Comptes »
– Dans « Utilisateurs », « Supprimer » dessous le compte « admin » en sélectionnant « Attribuer tous les articles et les liens au nouvel administrateur (JacquesT45)

 

 

Configurer les en-têtes de sécurité HTTP

Rendez la connexion https plus sûre grâce aux en-têtes de sécurité HTTP : HTTP Strict Transport Security est un en-tête qui configure le navigateur Web pour qu’il utilise toujours une connexion sécurisée valide avec l’application Web, son implémentation est nécessaire pour améliorer la sécurité du site.

Si un utilisateur tente d’accéder à votre site en HTTP, il sera automatiquement redirigé en HTTPS… Vous pouvez tester les security header  et l’implémenter dans le .htaccess du site par ses lignes :

# entete securite
<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options DENY
Header set Referrer-Policy: no-referrer-when-downgrade
</ifModule>
# fin entete securite

 

 

Tester la sécurité de votre site WordPress

Il existe de nombreux sites et plugins pour tester la sécurité d’un site, en voilà une petite sélection :
tester en ligne un site Internet :

Sucuri SiteCheck vérifiera le site Web pour détecter les logiciels malveillants connus, les virus, l’état de la liste noire, les erreurs de site Web, les logiciels obsolètes et les codes malveillants.

le scanner de wpneuron.com analysera votre site à la recherche de problèmes de sécurité tels que les problèmes de base, les plugins vulnérables et d’autres scripts non sécurisés connus. Veuillez utiliser cet outil pour améliorer la sécurité de votre site et ne pas analyser d’autres sites Web avec des arrière-pensées

Le scanner de Pentest-tools  recherche des vulnérabilités  et cherche les Injection SQL et XSS ainsi que les problèmes de configuration de serveur Web.

tester la sécurité du site via un plugin :

 

 

 

 

Conclusion

Sécuriser un site WordPress demande de mettre en oeuvre tout un ensemble de principes telles que la gestion des droits. Les modifications peuvent être faites par un ou plusieurs plugins de sécurité ou manuellement.
Ces restrictions, dans le contexte actuel, ou les attaques des sites WordPress se multiplient sont nécessaires pour dormir sur ses deux oreilles. Toutes les modifications apportées peuvent impacter la vitesse d’un site,
Il n’est pas forcement nécessaire de les appliquer toutes mais plus la sécurité du site est évoluée, plus vous diminuez le risque de voir le site endommagé par une attaque malveillante.

Nous vous conseillons pour conclure de :

– Enregistrer régulièrement la base de données du site.
– Faire des mises à jour plus souvent.
– Installer un plugin de sécurité depuis une source fiable si la manipulation des fichiers système vous fait peur
– Utiliser des mots de passe complexes.
– Mettez un Captcha pour protéger les formulaires
– Activez le HTTPS avec un certificat SSL sur votre site
– Enlevez les thèmes et plugins inutiles.
– Aller vers PHP8 qui rend la plupart des malwares anciens obsolètes et à minima php 7.4

N’hésitez pas à nous faire part de vos questions dans les commentaires et à consulter les sites en liens pour en savoir plus .

  • 2 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente?