Mise en place d’un script bloqueur de bots sur votre blog WordPress.

Suite à la lecture de différents articles sur l’excellent blog dsfc.net, notamment sur la sécurité et l’optimisation d’un site sur WordPress, je me suis mis dans l’idée de bloquer tous les bots qui polluent et hits mon blog.

Tout d’abord je me suis rendu dans mes statistiques Awstat sur mon compte Cpanel de mon hébergeur afin de vérifier l’étendue du trafic non-vu pour un mois sur mon blog.

block_bot_wordpress_1

  • 1: Les hits correspondent au nombre d’actions effectuées par le serveur d’hébergement du blog, l’affichage d’une page génère habituellement plusieurs hits, car elle contient des images, des accès aux bases de données, des feuilles de styles, etc..
  • 2: Bande passante consommée par les bots.

Après un petit calcul savant :

  • les hits des bots représentent environ 12% du total de tous mes hits.
  • la bande passante des hits représentent environ 7% du trafic total de mon blog.

Depuis quelques temps il y a une recrudescence de visites provenant de sites comme darodar, semalt, free-share-buttons, … dans Google Analytics. Je n’ais qu’une seule chose à dire : Analytics, Halte aux spams referrer qui polluent nos statistiques bien aimées.

Fort de ce constat, je me me suis donc décidé à mettre en place un script bloqueur de bots (Ne vous inquiétez pas le bot de Google, Bing, Yahoo, … ne seront pas bloqués, on a aussi la possibilité de gérer une liste blanche, dans mon cas j’ai rajouté alexa).

Je vais utiliser le script de Jeff Starr du blog Perishable Press : Download

block_bot_wordpress_2

Une fois dézipper, vous devriez avoir 4 fichiers :

  • blackole.dat : fichier de logs qui enregistre les IP des bots fraudeurs.
  • blackhole.php : script php qui vérifie si le bot est dans la blacklist et bloque le bot si nécessaire.
  • index.php : script qui permet d’afficher les différents messages d’alertes et qui permet d’envoyer des mails lorsqu’un bot est bloqué.
  • .htaccess : fichier qui protège le répertoire blackhole.

L’installation du script sur votre blog se déroulera en 6 étapes.

Si vous paramétrez mal les fichiers de configuration votre blog peut se retrouver bloqué. Il est donc prudent de bien suivre les étapes ci-dessous et de bien vérifier à la fin que tout fonctionnement correctement.

Si vous utilisez un plugin de cache, n’oublier pas de vider le cache puis de tester après sinon vous pourriez avoir une désagréable surprise.

  • Etape 1 : Installation des fichiers.

Copier le répertoire blackhole à la racine de votre site (généralement dans le répertoire public_html). Vous n’êtes pas obligé de le mettre à la racine mais il faudra ensuite adapter le chemin dans la configuration.

block_bot_wordpress_3

  • Etape 2 : Modification des permissions.

Modifier les permissions sur le fichier blackhole.dat, pour que le serveur ait la possibilité d’écrire dans le fichier. La gestion des droits étant différent sur chaque hébergement, rapprochez vous de votre hébergeur si vous avez un souci.

block_bot_wordpress_4

Pour ma part j’ai du mettre la permission 760 sur le fichier blackhole.dat.

Afin que le script fonctionne, il faut mettre la permission 755 au niveau du répertoire blackhole.

block_bot_wordpress_5

Si vous avez une erreur du type : Warning: fopen(blackhole.dat): failed to open stream: No such file or directory in /home/quicktut/blackhole/blackhole.php on line 28 Error opening file.

Il faudra peut-être demandé à votre hébergeur de remplacer l’outil d’exécution des scripts PHP. Généralement suPHP est utilisé pour cloisonner l’exécution des scripts PHP et certaines autorisations ne sont pas supportées

  • Etape 3 : Insertion du script sur le blog.

Le script doit être placé dans le fichier header.php de votre thème, juste en dessous de la balise <head>. La ligne à rajouter est la suivante :

<?php include($_SERVER['DOCUMENT_ROOT'] . "/blackhole/blackhole.php"); ?>

Le script vérifie si l’IP est présente dans le fichier et le cas échéant bloque le bot en affichant un message.

block_bot_wordpress_6

  • Etape 4 : Ajout d’un lien piège dans le footer de votre thème.

Afin de piéger les crawlers (bots) qui ne respectent pas les informations du fichier robots.txt et qui consomment inutilement des hits et de la bande passante sur votre hébergement, vous devez rajouter un lien piège dans le footer de votre thème.

<a style="display:none;" href="http://example.com/blackhole/" rel="nofollow">Do NOT follow this link or you will be banned from the site!</a>
Remplacer le lien example.com par votre nom de domaine.

block_bot_wordpress_7

  • Etape 5 : Ajouter une directive Disallow dans le fichier robots.txt de votre blog.

Si ce fichier n’existe pas, créer le (à la racine de votre blog) puis copier le code suivant dedans :

User-agent: *
Disallow: /blackhole/

Il est primordial de rajouter cette directive, sinon tous les robots seraient bannis. Si un bot veut explorer votre site, il doit respecter les règles.

block_bot_wordpress_8

Vous voilà maintenant prêt à affronter les vilains crawlers de votre blog.

  • Etape 6 : Personnalisations.

Afin que le script soit parfaitement opérationnel, vous devez modifier quelques petites choses dans les fichiers de configuration :

  • index.php, ligne 27/28, vous devez ajouter votre adresse mail pour recevoir les alertes lorsqu’un bot qui ne respecte pas le fichier robots.txt sera banni.
  • index.php, ligne 30, dans certain cas on doit indiquer le chemin absolu, pour accéder à votre fichier blackhole.dat
  • index.php, ligne 149/161, modifier le chemin pour contacter l’administrateur en cas de problème. Généralement on indique la page de contact de votre blog
  • blackhole.php, ligne 25, dans certain cas on doit indiquer le chemin absolu, pour accéder à votre fichier blackhole.dat
  • blackhole.php, ligne 30, rajouter sur cette ligne les bots qui font partie de la liste blanche (donc sans restriction). Comme vous pouvez le voir ci-dessous, j’ai rajouté le robot alexa. Les autres sont ajoutés par defaut.

block_bot_wordpress_9

  • blackhole.php, ligne 39, modifier le chemin pour contacter l’administrateur en cas de problème. Généralement on indique la page de contact de son blog

Ensuite pour faire un test, aller sur votre blog et rajouter derrière votre nom de domaine, /blackhole/ (par défaut). Si tout fonctionne bien, vous devriez avoir une page de ce type :

block_bot_wordpress_10

Si vous faites un rafraichissement, vous allez être banni de votre blog.

block_bot_wordpress_11

Maintenant pour retrouver un accès normal à votre blog, il faut supprimer la ligne avec votre IP publique, dans le fichier blackole.dat.

block_bot_wordpress_12

Ensuite dès qu’un bot est banni, vous recevez un mail avec plein d’information sur le bot.

Exemple avec le bot megaindex :

block_bot_wordpress_13

Outre le fait de bloquer les bots « malveillants », vous savez maintenant un peu plus ce qui se qui se passe et qui analyse votre blog.
Si cela s’avère insuffisant vous pouvez toujours faire appel à un consultant Web Analytics pour vous aidez dans votre stratégie de sécurité de votre blog.

That’s All.

4 Potins

  1. Bonjour,

    Si vous êtes sûr des droits et du chemin du fichier, il faut contacter votre hébergeur et lui demander de remplacer suphp pour l’exécution des scripts par un autre qui autorise des droits plus permissif.

    @+

  2. Bonjour,

    j’ ai tout paramétré comme il le fallait, cependant quand je me rend ssur la page de mon site je me retrouve avec une page blanche indiquée « error opening file »….

    Une idée? merci

  3. Merci pour ce partage ,Wordfence a détecté de très nombreuses tentatives d attaque de bots …heureusement bloquées…. je teste et je vous tiens au courant …

  4. Pour ma part, j’ai tout fait dans un 1er temps au .htaccess. Puis, j’ai fini avec Iptables. Merci pour le coup de phare. J’en ai passé des heures !!! ;+)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *