Interdire et bannir site, IP ou pays spam dans WordPress

Marre du spam et des importuns qui viennent visiter, commenter votre site wordpress ? Voici quelques astuces pour les identifier et les bloquer simplement

Interdire pays, site ou IP dans wordpress
0 Flares Filament.io 0 Flares ×
Date de la dernière modification: 24 octobre 2015

Halte au spam et aux sites mal intentionnés !

Les agressions que subissent quotidiennement les sites internet sont multiples : du simple commentaire de spammeur à l'attaque « technique » en passant par des messages frauduleux sur vos formulaires de contact, tous les moyens sont bons pour essayer d'utiliser vos pages, votre notoriété, vos ressources ou simplement pour tenter de vous abuser.

De nombreux systèmes existent pour identifier et bloquer ces attaques, je ne vais pas en faire l'inventaire ici.
Je voudrais partir plutôt de mon expérience personnelle pour vous indiquer comment filtrer et bannir sélectivement certains de ces e-importuns.

Mes sites sont (je pense, j'espère!) assez bien protégés, ou du moins j'ai fait le minimum nécessaire pour qu'ils le soient : je fais confiance à mon hébergeur et à mon Webmail pour bloquer les principales attaques et messages indésirables et j'utilise sur mes sites WordPress des outils comme AntispamBee pour bloquer les commentaires bidons (voir mon article sur cet excellent plugin: WordPress – les extensions indispensables : Antispam Bee).

Mais ces outils peuvent parfois « laisser passer » quelques ennuyeux ou, au contraire, classer comme indésirable un message ou un commentaire que vous aimeriez conserver.
C'est pourquoi que je ne paramètre jamais la suppression automatique des éléments bloqués ou classés comme spams (j'y ai parfois trouvé de vraies contributions).
De fait, lorsque je me décide à « faire le ménage », je découvre de longues listes de vrais casse-ouaibe dont certains sont à la fois acharnés et identifiables.

C'est là que j'interviens pour bannir spécifiquement leur IP, leur site ou carrément le pays de provenance lorsque celui ci ne correspond pas au trafic que j'attends sur mon site.

Identifier les spammeurs

En venant sur votre site, un spammeur a toujours un objectif : vous caser un message plein de liens bien pourris pour générer du trafic ou, sous couvert d'une remarque bien bateau ou incompréhensible, poser l'air de rien un lien vers son site dans la partie identification de l'auteur.

Dans les deux cas, ils vous laissent une trace volontaire ou non, url et/ou adresse IP. Un exemple avec mon ex-commentateur acharné « alkatadar » :

Exemple de commentaire spam dans wordpress

Nous avons là un spécimen commun du spam automatisé dont j'avoue ne pas trop comprendre l'objectif. Je n'ai pas reproduit la totalité de son message qui fait environ 350 lignes(!), le début semble cibler un site de vente de dvd en Australie, le reste n'est qu'une litanie de liens biens nazes vers des centaines de sites de toute sorte, liens dont la forme fait plus penser à du negative seo qu'à du netlinking de bourrin (ce qui revient au fond un peu au même…).

Mais trêve de dissection du comportement de ce gêneur, revenons à notre objectif : son éradication (de nos sites évidemment, je suis profondément pacifiste et ne souhaite pas le moindre mal à ce foutu ☻#!Ø¡). Pour l'identifier, nous avons deux informations (que j'ai astucieusement surlignées ci-dessus comme vous l'aurez remarqué): l'url qu'il a bien voulu nous laisser et une adresse IP récupérée par WordPress.
[L'adresse IP ? pour ceux qui se posent la question, IP pour « Internet Protocol », c'est l'identifiant permanent ou provisoire de la machine (pc ou serveur) d'où est parti le message.]

Pour l'url, dans ce cas précis il y a fort à parier qu'elle n'est pas celle de notre spammeur, au mieux celle du site qu'il veut « promouvoir », au pire une url bidon.
Son adresse IP par contre nous intéresse car, même provisoire, elle nous donnera des informations importantes sur sa provenance (FAI, serveur, pays…).
Ces informations détaillées peuvent être trouvées sur un grand nombre de sites spécialisés. J'ai utilisé ici geoiptool.com, un site simple qui ne donne que la géolocalisation de l'adresse. D'autres comme dnslookup.fr vous donneront plus d'info sur le serveur, le propriétaire, la plage d'adresses utilisées…
Voici nos infos :

Exemple résultat localisation adresse IP

Hmm, la mondialisation est passée par là, notre promoteur de site australien nous écrit depuis ou via un serveur ukrainien.
Le voici donc démasqué, passons à l'action ! Je vous propose deux méthodes la première ayant l'avantage d'être plus « directe » mais l'inconvénient d'être plus technique.

Bannir IP, Pays, site dans le .htaccess du site

Le htaccess est le portier de votre site.

 

Je vous le dit tout net, si le terme htaccess vous est inconnu, passez directement au chapitre suivant car même lorsque je vous aurai expliqué que le fichier qui porte ce nom est l'équivalent du portier d'une boîte de nuit, le premier rempart à l'entrée sur votre site, vous ne serez pas plus avancé sur où, quand et comment (où est ce fichier, comment le mettre à jour… quand va-t'il nous l'expliquer).

Vous expliquer le htaccess fera peut-être l'objet un jour d'un article dédié, ce n'est pas l'objet de mon propos. Si cela urge, vous pouvez facilement trouver des explications forts satisfaisantes sur le web (ex:commentcamarche.net/7-apache-les-fichiers-htaccess)

… Bon donc, comme vous savez comment modifier un fichier htaccess, voici 3 façons de bloquer le trafic de votre enquiqui-nerd:

Si vous n'avez pas déjà utilisé de directives de restriction d'accès (cf doc apache.org/docs/2.4/fr/mod/mod_access_compat) commencez par ajouter les lignes

order allow,deny
allow from all

Ces directives indiquent:

  • dans quel ordre prioritaire doivent être traités les autorisations et les restrictions. Dans notre cas on commence par traiter les autorisations (allow) puis les interdictions (deny)
  • Comme nous allons traiter des interdictions spécifiques, nous commençons par tout autoriser (allow from all)

Cet méthode suit la logique la plus commune (« j'autorise tout sauf »), certains sites aux accès très restreints suivent la logique inverse (« j'interdis tout sauf »). Fortement déconseillé dans le cas de sites grand public puisqu'ils sont destinés avant tout à être vus et donc visités.

Bannir une adress ip spécifique ou une plage d’adresse

A la suite des deux lignes indiquées ci dessus,insérez :

deny from 91.200.12.84

où vous prendrez soin de remplacer l'adresse IP par celle(s) que vous voulez bloquer

Pour bloquer une plage d'adresse il suffit de ne conserver que la partie majeure de l'IP, ainsi, par exemple

deny from 91.200.12

aura pour effet de bannir toutes les IP (255 au total) commençant par 91.200.12

Bloquer un nom de domaine dans le htaccess

Pour interdire les visites depuis un domaine spécifique, le principe et les ordres sont les mêmes que ci-dessus:

deny from nom-du-site-de-l-envahisseur.con

Simple, non ?

Mais si nous relevions maintenant d'un (gros) cran le niveau de nos restrictions…

Interdire le trafic web en provenance d’un pays

1ère méthode : utilisation du module GeoIP

Pré-requis: l'utilisation de cette fonction nécessite que le module GeoIP de Maxmind soit installé sur votre serveur Apache. (dev.maxmind.com/geoip/legacy/mod_geoip2/#Installation)
Dans mon cas mon visiteur malvenu a une adresse IP située en Ukraine.
Même s'il se peut que ce pays ne manqua pas de charme (moins attrayant ces temps-ci), n'étant pas persuadé que les ukrainiens soient intéressés par mes propos, je peux décider de bloquer (carrément!) tout le trafic web en provenance de cette contrée.

Toujours à la suite des deux directives globales décrites au début de ce chapitre, il suffit de mettre :

GeoIPEnable On
GeoIPDBFile /
nom du dossier/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE Code Pays iso-3166 sur 2 caractères BloquerPays
Deny from env=BloquerPays

Le nom du dossier est celui où est installée la base de données GeoIP.dat
Pour connaître les codes pays iso-3166 utilisables, rendez vous ici: wikipedia.org/wiki/ISO_3166-1

Dans mon cas j'ai donc mis dans le htaccess les directives suivantes :

GeoIPEnable On
GeoIPDBFile GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE UA BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
Deny from env=BlockCountry

Vous remarquerez que, dans un esprit de totale neutralité géopolitique, j'ai bloqué les sites venant aussi bien d'Ukraine que de Russie.

2ème méthode : récupérer et interdire les IP d'un pays donné

Si vous n'avez pas la possibilité d'utiliser GeoIP, une autre solution plus fastidieuse consiste à récupérer la liste des IP venant des pays à  qui vous voulez interdire l'accès de votre site et de les coller « en masse » avec l'ordre « Deny from » décrit plus haut.
Ils existent différents sites qui vous permettent d'obtenir ces adresses IP, je vous propose d'essayer le formulaire du site Ip2location (http://www.ip2location.com/blockvisitorsbycountry.aspx) qui est assez simple (en anglais).
Les listes des IP sont générées sous forme de contenu texte qu'il vous faudra ensuite coller dans votre htaccess… Des listes souvent très longues, cette méthode est donc à utiliser avec nos célèbres amis corses et arméniens (parcimonie et a-bon-escient).

 

Plugins WordPress pour bannir un site, un pays ou une IP

Pour ceux que le chapitre précédent n'a pas passionné, ou qui n'ont tout simplement pas les ressources pour gérer eux-même leur fichier htaccess, il existe sous WordPress de nombreuses alternatives par l'intermédiaire des plugins.

Je ne les ai pas testés, je vous renvoie simplement à la liste de ceux qui proposent le blocage d'IP, de sites ou de pays :

Avec toujours le même avertissement : choisissez de préférence des plugins bien notés, pas trop récents et mis à jour fréquemment.

 

Ces méthodes pour bloquer ou bannir des sites indésirables ne sont pas les seules, n'hésitez pas à m'indiquer celles que vous utilisez, au sein de WordPress ou ailleurs.

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Email -- Pin It Share 0 Filament.io 0 Flares ×

7 réflexions au sujet de “Interdire et bannir site, IP ou pays spam dans WordPress

  1. Christophe

    Bonjour,
    J’ai ce site de vente en ligne en wordpress accessible en europe, qui ne doit être visible, dans un pays, que par les distributeurs. Pour cela je cherche une solution pour bloquer le pays et permettre un accès via login (il y a 5 distributeurs pour ce pays). J’ai bien trouvé « country block », mais comment pourrais-je donner l’accès à ces distributeurs qui n’ont pas d’adresse ip fixe?

    • Thierry Couteau Auteur

      Bonsoir,
      Désolé, ce message s’est retrouvé perdu dans les spams…
      Je ne suis pas un expert mais si ils n’ont pas d’IP fixes, cela me semble difficile à mettre en place. Si vous avez trouvé une solution entre temps, merci de la partager !
      Cordialement,
      Thierry

  2. pile poil

    J’en est essayé pas mal et dure de s’en débarrasser. En fait même les plugins qui soit disant montre l’IP d’un utilisateur enregistré ne fonctionnent pas sur les spammeurs (pour les réguliers oui). Grâce à ta liste, suis tombé sur « Ban Subdomain Emails » car effectivement mes spammeurs utilisent toujours des sous domaines. Avec ça, plus aucun soucis, aucun paramétrage à faire, juste merveilleux. Les 5 inscriptions à la minutes : terminé !! Après si on veut faire gonfler la liste de ses membres et dire qu’on est un site à 10 millions de membres, faut dire que les spammeurs aident pas mal, mais aucun intérêt, on est bien d’accord. Je ne comprend même pas pourquoi un tel acharnement quand ces mecs s’inscrivent sur mon wordpress mais ne font strictement rien derrière. Perte de temps et de place dans la bdd. Donc franchement merci pour Ban Subdomain Emails, ça aide énormément pour les spammeurs en masse (pour les autres, ça se fait au cas par cas avec les plugins que tu donne).

  3. Er.V

    Bonjour,
    Il y a aussi les plugins de sécurités qui bloquent les IP comme wordfence .

    ps: pourquoi avoir la version 1.0 de votre thème NewsPlus et non la dernière version 3.0.2 ? (qui est plus compatible PHP5.4), un thème acheté sur Themeforest, on a les mises à jour à vie, sans repayer.
    labs.saurabh-sharma.net/themes/newsplus/demo-3/changelog/

    • Thierry Couteau Auteur

      Bonjour Er.V,
      Merci pour cette contribution. Wordfence apparaît en effet en bonne place sur le 3ème lien du chapitre « Plugins WordPress pour bannir un site, un pays ou une IP » de mon article.
      Les plugins sont je vous l’accorde de bonnes solutions pour qui veut s’éviter de mettre les mains sous le capot.

      Quand à vos interrogations sur mon site et le thème utilisé… j’ai plusieurs réponses mais je ne suis pas sur qu’elles vous satisfassent… Ce site est figé par manque de temps, je le crois (à tort ?) robuste tel qu’il est maintenu (à priori pas de faille grossière actuellement), je suis un cordonnier donc forcément mal chaussé… Que des mauvaises raisons, je sais. Ça y est, je culpabilise… Je fais une sauvegarde et je tente une mise à jour asap, promis ! 🙂
      Cordialement,
      Thierry

Laisser un commentaire

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

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Email -- Pin It Share 0 Filament.io 0 Flares ×