Sécuriser WordPress wp-login.php

par | 3 Déc 2021 | Tutoriels, WordPress

La sécurité informatique, et celle de WordPress en particulier, repose sur différentes approches, mais surtout différentes philosophies ou manières d’aborder les problèmes. Sécuriser le fichier wp-login.php de WordPress peut s’avérer assez simple. Par contre, il n’est pas forcément conseillé de suivre les recommandations les plus courantes.

 

 

 

1. Sécurité par l’obscurité

La sécurité par l’obscurité est un principe qui consiste à masquer des informations aux yeux du public et donc de pirates potentiels. Elle possède des avantages en apparence, mais de manière générale, elle ne constitue pas une méthode de défense suffisamment robuste.

Selon nombre d’expert.e.s, s’appuyer sur la non-divulgation d’une information pour sécuriser un système ne se révèle pas efficace. Il est plus intéressant de protéger une entité en plaçant une barrière, réelle ou virtuelle, entre des pirates et leur cible.

 

Sécuriser WordPress wp-login.php par l’obscurité n’est pas recommandé
Sécuriser wp-login.php par l’obscurité n’est pas recommandé

 
Dans le cas du fichier wp-login.php, l’une des recommandations habituelles consiste à en changer l’adresse par défaut et par conséquent à masquer son emplacement. Il existe même des extensions pour réaliser cette tâche. Cependant, ceci peut créer des problèmes non seulement dans WordPress, mais également à l’échelle de l’expérience sur votre site. Par ailleurs, les pirates restent malgré tout capables de trouver cette URL modifiée.

Il reste néanmoins possible et parfois important de renforcer la sécurité de wp-login.php. Par conséquent, les techniques proposées dans cet article se concentrent sur la protection du fichier par mot de passe et la restriction de son accès à certaines adresses IP. Ces deux méthodes sont d’ailleurs recommandées sur les pages officielles de WordPress.

 

2. Protéger wp-login.php par mot de passe

La protection par mot de passe offre une seconde barrière pour protéger votre site, après le mot de passe de votre compte, voire une troisième barrière si vous avez activé la double authentification. D’après les concepteurs de l’extension Wordfence, les attaques par force brute se révèlent peu efficaces et, en réalité, la majorité des piratages sur WordPress font usage de vulnérabilités découvertes dans une extension ou dans un thème.

Néanmoins, une attaque peut rapidement épuiser les ressources de votre serveur jusqu’à mettre votre site hors ligne. Dans ce cas, il peut s’avérer nécessaire de recourir à ce procédé. Par ailleurs, il reste indispensable d’utiliser des mots de passe forts et si possible d’activer la double authentification.

Avant de procéder aux modifications suivantes, il est primordial de réaliser une sauvegarde complète de votre site. Notez aussi que nous allons protéger par mot de passe le fichier wp-login.php et non l’ensemble du dossier d’administration de WordPress, wp-admin. En effet, certaines extensions nécessitent un accès au fichier admin-ajax.php localisé dans wp-admin. Protéger l’ensemble du dossier par mot de passe entraverait donc le bon fonctionnement des ces extensions.

 

2.1 Créer un fichier .htpasswd

La première étape consiste à créer un fichier .htpasswd dans lequel seront consignés, de façon cryptée, l’identifiant et le mot de passe pour accéder à wp-login.php. Pour élaborer ce fichier, il vous suffit de vous rendre sur un générateur de fichier htpasswd et de choisir un identifiant et un mot de passe.

Ensuite, dans un éditeur de code, par exemple Notepad++, il faudra créer un nouveau fichier et y coller la chaîne de caractères retournée par le générateur. Celui-ci doit être uniquement une extension, sans nom. Autrement dit, il devra être nommé .htpasswd lorsque vous l’enregistrez. Voici un exemple du code qui devrait se trouver dans le fichier .htpasswd.


    identifiant:$2y$10$5xLTigKyn/iZX0zIRh16pO6nWopfuLIGZD68Fj8MdmqVA.DURgYDO

 
Après avoir créé ce fichier, il faudra le téléverser sur votre serveur par FTP, SFTP ou le gestionnaire de fichier de votre hébergeur. Idéalement, il ne doit pas se situer dans un répertoire public. Évitez donc de le mettre dans le dossier racine de votre site WordPress ou dans public_html. Il pourrait, par exemple, se trouver à la racine de votre serveur.

 

2.2 Modifier .htaccess

Enfin, il faudra modifier le fichier .htaccess pour lui signaler l’emplacement de .htpasswd et lui donner l’instruction de solliciter l’identifiant et le mot de passe se trouvant dans ce dernier. Le code à ajouter à .htaccess dépend de la configuration de votre serveur. Voilà les morceaux de code respectifs recommandés officiellement par WordPress.

 
Apache

La plupart des hébergeurs WordPress utilisent Apache. Dans le morceau de code suivant, le fichier .htpasswd se trouve dans le répertoire racine et l’identifiant est nomdutilisateur.


    # Empêcher Apache de transférer les fichiers .ht*
    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
    </Files>
        # Protéger wp-login.php
    <Files wp-login.php>
        # Le chemin d’accès au fichier .htpasswd ci-dessous doit être absolu
        AuthUserFile ~/.htpasswd
        AuthName "Private access"
        AuthType Basic
        # Modifiez l’identifiant de la ligne suivante par le vôtre
        require user nomdutilisateur
    </Files>

 
Nginx

Vous pouvez configurer la protection par mot de passe sur Nginx en utilisant HttpAuthBasicModule. Ce bloc doit se trouver à l’intérieur de votre bloc serveur.


    location /wp-login.php {
        auth_basic "Administrator Login";
        auth_basic_user_file .htpasswd;
    }

 
Le chemin d’accès au fichier .htpasswd est relatif au répertoire du fichier de configuration de Nginx, nginx.conf.

Et le fichier doit avoir le format suivant :


    utilisateur:pass
    utilisateur2:pass2
    utilisateur3:pass3

 

3. Restreindre l’accès par adresse IP

Parallèlement à la protection par mot de passe, il est également possible de restreindre l’accès à wp-login.php à certaines adresses IP. Ce procédé se montre efficace lorsque votre adresse IP ne change pas ou pas souvent. Vous pouvez aussi ajouter plusieurs adresses IP, notamment si d’autres personnes nécessitent un accès à votre site. Retenez que si l’une de ces adresses IP change, son utilisateur.rice n’aura plus accès à WordPress jusqu’au remplacement de celle-ci dans .htaccess.

Vous pouvez trouvez votre adress IP grâce au site What is my IP. Voici les morceaux de code à ajouter à .htaccess pour réaliser cette tâche. Dans tous les exemples, il faut modifier 123.4.567.01 par votre adresse IP.

 
Apache


    # Restreindre l’accès à wp-login.php.
    <Files wp-login.php>
        order deny,allow
        allow from 123.4.567.01
        deny from all
    </Files>

 
Pour ajouter davantage d’adresses IP, vous pouvez modifier ce code de la manière suivante.


    # Restreindre l’accès à wp-login.php.
    <Files wp-login.php>
        order deny,allow
        allow from 123.4.567.01
        allow from 123.4.567.02
        allow from 123.4.567.03
        deny from all
    </Files>

 
Et si vous utilisez Apache 2.4 et le module Apache mod_authz_host, la syntaxe doit être différente.


    # Restreindre l’accès à wp-login.php.
    <Files wp-login.php>
        Require ip 123.4.567.01
    </Files>

 
Enfin, pour ajouter plusieurs adresses IP, voilà le code.


    # Restreindre l’accès à wp-login.php.
    <Files wp-login.php>
        Require ip 123.4.567.01 123.4.567.02 123.4.567.03
        # ou pour tout le réseau :
        # Require ip 123.4.567.0/255.255.255.0
    </Files>

 
Nginx

Pour Nginx, vous pouvez ajouter un bloc d’emplacement à l’intérieur de votre bloc serveur qui fonctionne de la même manière que l’exemple Apache ci-dessus.


    error_page  403  http://example.com/forbidden.html;
    location /wp-login.php {
        allow    123.4.567.01
        # ou pour tout le réseau :
        # allow    123.4.567.0/24;
        deny    all;
    }

 

4. Autres solutions plus durables et moins intrusives

Lorsque vous sécurisez wp-login.php au moyen des méthodes décrites plus haut, les connexions seront aussi plus lourdes pour vous. Il vous faudra saisir un identifiant et un mot de passe supplémentaires ou corriger les adresses IP dans votre fichier .htaccess lorsque quelqu’un ne pourra plus se connecter.

Si ces étapes vous semblent dégrader de manière trop importante votre expérience sur le site, je vous recommande plutôt de vous concentrer sur les points suivants pour sécuriser wp-login.php et, plus largement, vos connexions à WordPress.

 

4.1 Désactiver XML-RPC

La plupart des attaques par force brute tirent parti de ce protocole pour tenter de s’introduire sur votre site. Tant que vous n’utilisez pas des identifiants par défaut, notamment admin, et des mots de passe faibles, elles n’auront pas d’effet sur votre sécurité. Par contre, comme déjà évoqué, elles peuvent avoir un impact négatif sur les ressources de votre serveur. Pour désactiver XML-RPC, vous pouvez installer une extension comme Wordfence ou insérer le morceau de code suivant dans votre fichier .htaccess.


    # Désactiver les requêtes pour xmlrpc.php
    <Files xmlrpc.php>
        order deny,allow
        deny from all
        # La ligne suivante est optionnelle
        allow from 123.4.567.01
    </Files>

 
La troisième ligne permet d’autoriser l’accès au fichier à une adresse IP définie, que vous devez remplacer dans le code. Si vous n’en avez pas besoin et que vous souhaitez complètement désactiver le protocole, vous pouvez supprimer cette ligne.

 

4.2 Utiliser des mots de passe forts

Votre mot de passe reste un des points faibles majeurs de WordPress. Le meilleur moyen d’utiliser des mots de passe forts, uniques et longs reste le gestionnaire de mots de passe. Ce dernier les génère et les enregistre pour vous. Par ailleurs, par mot de passe faible, on entend toute combinaison de votre nom, nom d’utilisateur, nom d’entreprise ou nom de votre site ; un mot du dictionnaire dans n’importe quelle langue ; un mot trop court ; ou encore un mot qui n’emploie que des lettres ou que des chiffres.

 

4.3 Utiliser des identifiants complexes

De même, les identifiants courants posent un problème de sécurité. Il s’agit notamment des identifiants par défaut tels que root, admin ou system. Si vous manquez d’inspiration, ici aussi, le gestionnaire de mots de passe peut s’avérer précieux. En effet, vous pouvez le détourner pour créer des identifiants uniques et complexes aux allures de mots de passe.

 

4.4 Activer la double authentification

La double authentification représente une solution essentielle pour la sécurité de WordPress, mais également de n’importe quel système. Elle ajoute une couche de protection supplémentaire au moyen d’un mécanisme différent de la combinaison “identifiant – mot de passe” et s’est révélée, jusqu’ici, une excellente méthode de protection.

 

4.5 Utiliser un certificat SSL

Si à ses débuts l’utilisation d’un certificat SSL était optionnelle, aujourd’hui ce dernier est absolument indispensable sur tous les sites sérieux. Le certificat permet d’utiliser le protocole HTTPS sécurisé au lieu de HTTP non sécurisé. Grâce à l’organisation Let’s Encrypt, il peut être installé facilement et gratuitement sur votre site.

 

4.6 Limiter le nombre de tentatives de connexion

Grâce à une extension de sécurité, il est possible de limiter les tentatives de connexion après un certain nombre d’échecs. Ceci se montre efficace pour protéger votre site et préserver les ressources de votre serveur. Mais il faut garder à l’esprit que certain.e.s utilisateur.rice.s auront peut-être aussi besoin de plusieurs tentatives avant de retrouver leur identifiant et leur mot de passe. Il devient donc judicieux de ne pas définir une limite trop faible.

 

4.7 Installer une extension de sécurité

Enfin, il reste indispensable d’installer une extension de sécurité dotée d’un pare-feu. Ce dernier bloquera le trafic malveillant provenant d’adresses IP connues avant même qu’il n’atteigne votre site. Deux des meilleures solutions en la matière sont Wordfence et Sucuri.

 

5. Conclusion : sécuriser wp-login.php dans WordPress

Lorsque vous cherchez à sécuriser wp-login.php dans WordPress, il est d’abord important de définir votre but. En effet, vous découvrirez peut-être qu’il existe de meilleures méthodes pour l’atteindre qui ne touchent pas directement à ce fichier. En revanche, la protection par mot de passe et la restriction par adresse IP peuvent se révéler très efficaces selon la situation. De plus, il peut s’agir de solutions temporaires si votre site ne fait plus l’objet d’attaques après quelque temps.

Quel est le problème de sécurité qui vous pousse à sécuriser wp-login.php de WordPress ? Dites-le moi dans les commentaires !

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Réservez votre audit SEO gratuit et recevez un rapport personnalisé sur la santé de votre site web