Sécuriser WordPress avec htaccess

WordPress est un formidable outils pour concevoir et mettre en ligne un site internet. Cependant les tentatives de piratages par force brute sont nombreuses. Dans un premier temps, j’ai installé l’extension Limit Login Attemps Reloaded, une très bonne extension mais, même en configurant un verrouillage de 24h après 2 tentatives infructueuses, je comptabilisais plus de 100 blocages par jour. Afin de renforcer la sécurité j’ai décidé de sécuriser mon WordPress avec htaccess. Le but est d’ajouter une couche de sécurité indépendante à WordPress et ses extensions.

Sécuriser WordPress avec htaccess

Comment sécuriser WordPress avec htacess

A savoir que cette méthode n’est valable que avec apache. Dans un premier temps, il vous faudra créer un fichier .htpasswd, dans l’idéal, placez ce fichier à un emplacement autre que le www.
Dans mon cas, je l’ai placé dans /var/www/files/psw/.htpasswd

Ce fichier contient le nom des utilisateurs et les mot de passe ayant droit sous la forme :
utilisateur:mot de passe crypté par exemple utilisateur:$apr1$w4pvkst9$FS36kGNzqp4oeAjVCftB7.
il existe des générateurs sur internet tel que web2generators.

Une fois ce fichier créé, il faudra se rendre à l’emplacement des fichiers WordPress accessible depuis internet (pour ma part /var/www/html), vous y trouverez le fichier wp-login.php xmlrpc.php et le dossier wp-admin

Afin de sécuriser le fichier wp-login.php, éditez ou créez un fichier .htaccess à la racine de votre site.
A la fin de ce fichier, ajoutez :

<FilesMatch "wp-login.php">
AuthName "Member Only"
AuthType Basic
AuthUserFile /var/www/files/.htpasswd
require valid-user
</FilesMatch>

Profitez en aussi si vous n’utilisez pas de communications avec d’autres applications, pour ajouter ces lignes afin de rendre inaccessible le fichier xmlrpc.php :

<Files xmlrpc.php>
order allow,deny deny from all
deny from all
</Files>

Ensuite, placez vous dans le dossier wp-admin (ici /var/www/html/wp-admin) éditez ou créez un fichier .htaccess et ajoutez à la fin de ce fichier :

AuthName "Member Only"
AuthType Basic
AuthUserFile /var/www/files/.htpasswd
require valid-user

Validation, résultats et conclusion

Pour vérifier l’efficacité de l’opération, rendez vous sur l’url de votre site et vérifiez que vous avez toujours accès à l’espace public.

Ensuite rendez vous à l’url https://www.votresiteinternet.com/wp-login.php
Puis https://www.votresiteinternet.com/wp-admin/ afin de vérifier qu’avant même d’accéder à l’authentification de WordPress, vous aurez une autre authentification complètement indépendante.
Enfin, rendez-vous à l’url https://www.votresiteinternet.com/xmlrpc.php, vous devriez obtenir une erreur 403 Forbidden : Access is forbidden to the requested page.

Voici les résultats après n’avoir bloqué que l’accès à wp-login.php et au dossier wp-admin/

Résultat après avoir bloqué  l'accès à wp-login.php et au dossier wp-admin/

Et les résultats après avoir bloqué l’accès à xmlrpc.php

Résultat final afin de sécuriser les tentatives d'attaque par force brut de WordPress avec htaccess.

Ainsi si vous avez des alertes de Limit Login Attemps Reloaded, cela devrait réduire les tentatives d’intrusion considérablement ! De plus, l’avantage de sécuriser WordPress avec htaccess est qu’elle supportera parfaitement les mises à jour des extensions, des templates et de WordPress lui même.

Faites régulièrement et fréquemment des sauvegardes de votre site wordpress et ses mises à jour !

Vous pouvez retrouver également nos autres Astuces ici