Dans ce article précédent Je vous ai montré les premières étapes pour réaliser un WordPress sécurisé, en créant des mots de passe sûrs et en rendant difficile pour un "ami de l'étranger" de trouver facilement quel est l'utilisateur administrateur de votre site web.
Aujourd'hui, je vais me concentrer sur deux points importants : Protéger le dossier wp-admin et le fichier wp-config, deux des clés de toute installation WordPress. Et, en supplément, un plugin très intéressant pour ajouter plus de sécurité à notre site web : Limiter les tentatives de connexion
Table des matières
Protéger le dossier wp-admin
Nous allons commencer par sécuriser l'accès à notre panneau d'administration WordPress.
Nous sommes face à l'une des principales cibles de tout pirate qui veut attaquer un site web, s'il obtient un accès, et plus encore dans le cas où il le fait avec des privilèges d'administrateur, il peut faire ce qu'il veut, donc sa protection doit être une tâche prioritaire pour nous.
Comme nous en avons parlé dans l'article précédent, nous pouvons protéger l'accès à la zone d'administration de notre WordPress avec des plugins ou du code. Ici, je vais être un peu plus prudent, car ce que nous allons toucher avec du code est plus délicat et affecte directement notre serveur.
Pour ne pas permettre un accès indésirable à l'administrateur de notre WordPress nous devons toucher un fichier qui n'en fait pas partie, mais qui est "la mère de l'agneau" de tout serveur Web monté sur Apache, c'est important, vous ne le trouverez que si votre serveur Web est Apache, mais détendez-vous, la plupart des hébergements sont montés sur Apache, et nous en avons déjà parlé à de précédentes occasions. Nous parlons du fichier .htaccess.
Pour accéder à ce fichier et le modifier, les étapes à suivre sont les suivantes :
1 - Accédez à votre serveur via FTP avec un client tel que Filezilla ou Coda (le premier est gratuit et le second coûte 99 $).
2 - Une fois que vous accédez par FTP, dans le dossier wp-admin de notre installation WordPress, nous devons créer, s'il n'existait pas auparavant, un fichier avec le nom .htaccess (le point de départ avant le h n'est pas une erreur, il est nommé de cette façon pour qu'il reste caché). Si ce fichier existe déjà, nous en faisons une copie de sauvegarde, de sorte que si quelque chose ne va pas, nous pouvons revenir à la version précédente.
Quelque chose d'important, nous créons ce fichier dans le dossier wp-admin, oui je sais qu'il est possible qu'il y ait un autre .htaccess à la racine, mais on n'y touche pas, pour le moment. Les fichiers .htaccess fonctionnent de manière hiérarchique, la préférence allant à celui qui est le plus proche du dossier dans lequel nous nous trouvons, c'est-à-dire celui qui se trouve dans le dossier wp-admin, et non celui qui se trouve à la racine.
3 - Pour revenir à notre sujet, nous essayons de protéger le répertoire wp-adminpour éviter tout accès non désiré. Pour ce faire, dans le .htaccess du dossier wp-admin, nous écrirons les lignes suivantes.

4.- Vous verrez que j'ai mis en évidence la ligne 5, il y a une raison. Le chemin que nous devons mettre dans cette ligne et qui définit où se trouve le fichier .htpasswd doit être un chemin absolu dans votre serveur. Normalement, ce chemin est home/login_user_in_your_panel/public_html/your_WordPress_folder/wp-admin/.htpasswd. Si vous ne l'avez pas bien compris, vous pouvez créer un fichier avec les lignes que je laisse en dessous de ce paragraphe dans votre dossier wp-admin/.htpasswd via FTP et exécuter dans le navigateur l'url suivante http://Tu_Web/wp-admin/.htpasswd/ruta_absoluta.php en modifiant évidemment "Tu_Web" par votre domaine, qui renverra le chemin absolu de votre dossier wp-admin, ou tout autre où vous téléchargez ce fichier. IMPORTANT, une fois que vous avez obtenu le chemin, supprimez le fichier.
<?php
/* Devuelve la ruta absoluta en el servidor del archivo*/
Echo dirname(__FILE__);
Nous n'avons pas encore terminé, il nous reste une dernière étape à franchir.
Avec ce que nous avons fait, nous avons complètement bloqué l' accès au dossier wp-admin, maintenant il s'avère que si nous avons un thème, un plugin ou un widget dans notre WordPress qui doit faire des appels à l'API Ajax de WordPress ne sera pas en mesure de le faire, puisque cette API est dans ce dossier, donc il s'arrêtera de fonctionner, nous avons fait un pain avec quelques gaufres. Calmez-vous, cela peut être corrigé et il s'agit d'ajouter quelques lignes supplémentaires à notre .htaccess pour permettre à ces éléments d'avoir accès à ce fichier.
# Establece una restricción a la carpeta wp-admin mediante un archivo .htpasswd
AuthName "Sin acceso"
AuthType Basic
AuthUserFile /home/jfougtnp/public_html/carpeta_wordpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
require valid-user
# Permite a los archivos css, js, jpg, jpeg, gif y png de Themes, Widgets o plugins en acceso al archivo admin-ajax.php para poder ejecutar llamadas a la API Ajax de WordPress
<FilesMatch “\.(css|js|jpg|jpeg|gif|png)$”>
Order Allow,Deny
Allow from All
Satisfy Any
</FilesMatch>
<Files admin-ajax.php>
Order Allow,Deny
Allow from All
Satisfy Any
</Files>
Enfin, vous pouvez également restreindre l'accès au dossier par IP, c'est-à-dire n'autoriser l'accès qu'à l'IP ou aux IP (fixes) que vous souhaitez, et restreindre l'accès à ce dossier au reste des IP. Cependant, si nous sommes dans le cas précédent, nous devons activer l'accès des thèmes, plugins et widgets à l'API AJAX.
Dans les lignes ci-dessous que vous devez ajouter à votre fichier .htaccess, les lignes de restriction d'accès IP sont commentées, afin que vous puissiez décider de la méthode à utiliser (protection par mot de passe ou restriction d'adresse IP).
Utilisation d'un fichier .httpasswd
# Establece una restricción a la carpeta wp-admin mediante un archivo .htpasswd o mediante restricción de IP.
#Opción 1. MEDIANTE UN ARCHIVO .HTTPASSWD
AuthName "Sin acceso"
AuthType Basic
AuthUserFile /home/jfougtnp/public_html/capeta_wrodpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
require valid-user
# Permite a los archivos css, js, jpg, jpeg, gif y png de Themes, Widgets o plugins en acceso al archivo admin-ajax.php para poder ejecutar llamadas a la API Ajax de WordPress
<FilesMatch “\.(css|js|jpg|jpeg|gif|png)$”>
Order Allow,Deny
Allow from All
Satisfy Any
</FilesMatch>
<Files admin-ajax.php>
Order Allow,Deny
Allow from All
Satisfy Any
</Files>
Grâce au contrôle d'accès par les IP
# Establece una restricción a la carpeta wp-admin mediante un archivo .htpasswd o mediante restricción de IP.
#Opción 2. MEDIANTE CONTROL DE ACCESO POR IPS
#Habilita el acceso a wp-admin desde una dirección IP concreta y deniega el acceso desde cualquier otra IP que no este en el listado
#Dejo estas líneas comentadas para que, en caso de no querer habilitarlas, no afecten al acceso
#order deny,allow
#allow from XXX.XXX.XXX.XXX (tu ip)
#allow from XXX.XXX.XXX.XXX (tu otra ip)
#deny from all
# <Files admin-ajax.php>
# Order Allow,Deny
# Allow from all
# Satisfy Any
# </Files>
Ne vous inquiétez pas, comme je vous l'ai dit au début, cela peut être fait avec des plugins.
Deux d'entre eux vous permettent de configurer votre fichier .httacces de WordPress et de limiter certains aspects : WP Éditeur .htaccess est en fait un éditeur du fichier .htaccess, avec pour seul avantage de vous permettre de faire une sauvegarde du fichier.
Protéger le fichier wp-config
Situé à la racine de notre hébergement, ou dans le dossier où nous installons notre WordPress, wp-config est l'un des premiers fichiers à être modifié lors de l'installation et l'un des plus sensibles en termes de sécurité.
Ce fichier contient la configuration de base de WordPress, notamment quatre paramètres fondamentaux :
- Ceux qui font référence à la base de données MySQL, le véritable cœur de notre site.
- Les préfixes des tables qui composent notre base de données (11 dans une installation propre sans plugins, 12 à partir de WordPress 4.4).
- Les clés secrètes de notre serveur, les fameux Keys and Salts.
- Le chemin absolu vers notre installation, qui est appelé ABSPATH.
Parmi celles-ci, les trois premières sont critiques et, compte tenu du fait que ce fichier est stocké et enregistre des données en texte clair sans aucun type de cryptage, il constitue l'une des cibles prioritaires pour quiconque souhaite obtenir un accès malveillant, car, comme vous pouvez le voir dans l'image ci-dessous, les informations qu'il fournit sont assez exhaustives et profitables pour quelqu'un qui a des connaissances... et de mauvaises intentions.

Je parlerai plus tard de la façon de générer de nouvelles clés et un nouveau sel, ainsi que du préfixe de la table, et de la façon de le changer si vous avez déjà installé WordPress et que nous ne l'avons pas fait au début. Je vais maintenant me concentrer sur la manière d'empêcher ces informations d'être accessibles aux "amis des autres".
Comme toujours, nous avons plusieurs façons de protéger ce fichier :
- Protégez-le à partir du fichier .httaccess.
- Attribuez des droits de lecture seule au fichier wp-config.
- Changez l'emplacement du fichier.
Protégez-le à partir du fichier .htaccess.
La première option et la plus simple. Grâce à cette règle insérée dans le fichier .htaccess de la racine ou du dossier où se trouve l'installation de WordPress, nous désactivons l'accès à tous les utilisateurs. Si, à un moment donné, nous devons modifier quelque chose, il suffit d'entrer et de commenter les lignes, de modifier ce dont nous avons besoin et, une fois enregistré, d'enlever le "#" du commentaire dans la règle.
# Deshabilita el acceso al archivo wp-config
<files wp-config.php>
order allow,deny
deny from all
</files>
Attribuez des droits de lecture seule au fichier wp-config.
Par défaut, ce fichier a une configuration de 644 permissions (lecture et écriture pour l'administrateur et lecture seule pour le reste des utilisateurs, les utilisateurs connectés qui ne sont pas administrateurs, ainsi que le reste du monde). Il est conseillé de changer ces permissions en 444 (lecture pour tous). Si nous devons le modifier, nous ferons comme précédemment, en changeant à nouveau ces permissions en 644.
Pour modifier les permissions, nous devons accéder au site web via FTP et, une fois le fichier sélectionné, aller dans le menu contextuel et sélectionner l'option "permissions" dans Filezilla ou "get info" dans Coda (dans d'autres clients FTP, l'option sera assez similaire). Une fois la fenêtre apparue, nous pouvons modifier les permissions, soit à partir des contrôles disponibles, soit en modifiant les chiffres.

Changez l'emplacement du fichier.
La dernière option pour protéger le fichier wp-config est de le "supprimer" du chemin d'installation de WordPress.
Comme je l'ai dit au début, ce fichier est situé à la racine de notre installation WordPress (html_public/nom_web par exemple). Nous pouvons le déplacer vers la racine html_public. WordPress le détectera et il fonctionnera parfaitement.
Limiter les tentatives de connexion
Et enfin, un plugin hautement recommandé, que nous restreignions ou non l'accès au dossier wp-admin, Limit Login Attemps, qui nous permettra de configurer le nombre de tentatives de connexion échouées dans notre WordPress, bloquant l'accès à cet utilisateur et définissant également le temps pendant lequel cet utilisateur sera désactivé pour réessayer la connexion.

Ne partez pas encore.
Sur ce, je vous laisse réfléchir jusqu'au prochain article. Il nous reste encore quelques étapes à franchir, pour savoir :
- Changez le préfixe de la base de données.
- Programmez un système de sauvegarde.
- Désactivez l'éditeur de fichiers de WordPress.
- Attribuez les permissions appropriées aux dossiers et aux fichiers de notre serveur Web.
- Ajouter les en-têtes de sécurité HTTP à notre serveur.
- Définissez des clés et des sauts de sécurité pour renforcer les cookies.
- Faites en sorte que votre WordPress ne ressemble pas à un WordPress, et ne donne pas d'indices.
Je vous invite à laisser vos impressions et/ou vos doutes dans le formulaire de contact et à me suggérer de nouveaux sujets que vous souhaiteriez voir abordés dans ces tutoriels. Je serai heureux de vous répondre par courriel et d'écrire dans ce blog.