Archives de catégorie : Sécurité

Protéger l’accès à l’interface d’administration de WordPress

Je constate de plus en plus de tentatives de connexion sur l’interface d’administration de mon WordPress.

Plus étrange encore, depuis plusieurs mois la même adresse IP essaie de se connecter sur le wp-login.php, j’ai résolu le problème en mettant une règle iptables. Il s’agit peut-être d’un robot, mais bon qui essaie de se connecter avec une demande de login/pass, c’est plutôt louche. Le problème reste toujours présent pour des tentatives de connexion d’internautes malveillants. Il existe des plugins disponibles avec WordPress, mais il suffit d’une faille de sécurité dans le plugin en question et c’est encore pire.

Dans les logs d’apache, on voit que l’accès au fichier se fait de façon directe, comme le fait de tapez l’url directement dans la barre d’adresse du navigateur.

xxx.xxx.xxx.xxx - - [09/Nov/2012:21:52:00 +0100] "POST /wp-login.php HTTP/1.1" 200 3684 "-"

La solution que j’ai mis en place, c’est de refuser les accès directs, en utilisant le referer. Pour cela je dis que l’accès au fichier wp-login.php ne peut se faire que si le referer est www.mbardot.com, ce qui revient à cliquer sur le lien connexion de la page d’accueil de WordPress. Je mets le referer  dans une variable d’environnement et j’interdis tout le monde sauf www.mbardot.com. Je combine tout cela avec la protection par .htaccess. Dans mon cas la protection est mise dans le vhost d’apache. Cette protection n’est bien sûr pas limité uniquement à WordPress, il suffit de l’adapter à ses besoins.

Ps: il faut que le mod env d’apache soit chargé.
/etc/apache2/mods-enabled/env.load

Pour la config c’est par là.

SetEnvIf Referer "^http://www.domaine.autorisé/" protection_wordpress
<Directory "/repertoire/du/wordpress/">
<files wp-login.php>
Order Deny,Allow
Deny from all
Allow from env=protection_wordpress
</files>
</Directory>

Un petit reload d’apache et c’est tout bon.

[Sat Nov 10 14:15:18 2012] [error] [client xxx.xxx.xxx.xxx] client denied by server configuration: /chemin/vers/fichier/wp-login.php