Comment protéger son blog contre le spam

Posté par francevoyage le 7 avril 2009 - 1:01 | Catégorie: astuces internet.

Depuis quelques jours, mon blog est la cible d’un spam intensif en provenance de 3 adresses IP. Vous n’en avez rien vu car WordPress a équipé son système d’une extension bien utile Akismet qui intercepte les messages indésirables et les place en quarantaine jusqu’à approbation ou suppression. Néanmoins, ce sont plus de 60 longs commentaires rédigés en anglais, bourrés de liens pour des médicaments qui ont envahi ma base de données ces trois derniers jours. J’ai heureusement trouvé une parade dont je vais vous livrer le secret ci-dessous.

Il faut tout d’abord savoir que les blogs réalisés (”propulsés” comme on dit) avec WordPress sont très répandus. C’est pourquoi, ils sont malheureusement la cible privilégiée des spammeurs. Pour ceux qui l’ignorent encore (est-ce possible?), les spams, ce sont de faux messages, rédigés en anglais, bourrés de pub et de liens qui n’ont rien à voir avec votre site et qui envahissent votre mailbox, votre livre d’or ou les commentaires de votre blog. C’est juste de la publicité intrusive, du marketing sauvage et forcé, une véritable prise d’otage de votre blog. Bref c’est horripilant.

WordPress a eu la bonne idée d’incorporer à sa plateforme d’administration une extension appelée Akismet qu’il faut absolument activer quand vous installez WordPress sur votre serveur ou votre hébergeur. Cette extension vous débarrasse de tous les messages indésirables en empêchant leur affichage sur votre blog. Néanmoins, ces messages restent bel et bien stockés dans votre base de données, bouffant de la place inutilement. Normalement, dans l’interface d’administration WordPress, après avoir consulté les messages indésirables pour s’assurer qu’ils ne contiennent pas un vrai message arrivé là par accident, il y a un bouton à cliquer “tout supprimer”. Chez moi, ce bouton ne marche pas. Je dois donc aller les effacer à la main dans ma base de données en les sélectionnant dans la table wp_comments.

C’est une manoeuvre délicate qui n’est pas à la portée de tous. Il faut maîtriser l’interface phpMyAdmin, les bases de données MySQL et les tables. La moindre erreur et vous risquez de perdre tous vos commentaires ou vos articles. Bref, à réserver uniquement aux initiés. Par contre, il y a une manière assez facile d’interdire l’accès de votre blog à ces moteurs de spam en bannissant les adresses IP envahisseuses.

En installant votre blog WordPress, un fichier .htaccess a été créé automatiquement à la racine du blog. Téléchargez-le en local. Pour pouvoir l’ouvrir, il faut changer son nom. Renommez le fichier .htaccess en htaccess.txt. Du coup, il peut s’ouvrir avec WordPad. Le contenu ressemble à ceci :

# BEGIN WordPress

RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

# END WordPress

Rajoutez les lignes suivantes au dessus ou en dessous, cela n’a pas d’importance :

deny from 194.8.75.163
deny from 194.8.75.149
deny from 194.8.74.220

Vous pouvez rajouter autant d’adresses IP à bannir que vous le voulez. Eviter de tester avec votre propre adresse IP, vous n’auriez plus accès à votre blog (c’est con, hein ?).

Sauvez ce fichier texte (htaccess.txt). Réexpédiez-le sur votre serveur distant. Effacez le .htaccess existant et renommez immédiatement le htaccess.txt en .htaccess. Vous pouvez essayer de le renommer en local mais votre PC risque de refuser c’est pourquoi il vaut mieux le faire sur le serveur distant.

C’est la solution la plus simple. Si ça marche pas, tentez ce code suivant (toujours à ajouter dans le fichier .htaccess) :

<limit GET POST>
order allow,deny
deny from 194.8.75.163
deny from 194.8.75.149
deny from 194.8.74.220
allow from all
</limit>

C’est le langage des serveurs Apache, les plus utilisés par les hébergeurs. Traduit en jargon compréhensible, ça veut dire : Limiter le postage des messages. Commencer par les accès autorisés puis traiter les accès refusés. Bloquer tous les messages provenant des adresses IP mentionnées après “deny from” et autoriser tous les autres. Ainsi, le spam n’atteindra même plus votre base de données. Il sera stoppé avant même d’arriver.

Si malgré ces lignes, vous recevez encore des messages de ces adresses IP, voici la dernière possibilité (assez méchante d’après ce que je comprends) :

RewriteCond %{REMOTE_ADDR} ^194\.8\.74\.[0-9]{1,3}$
RewriteRule .* http://127.0.0.1 [R,L]
RewriteCond %{REMOTE_ADDR} ^194\.8\.75\.[0-9]{1,3}$
RewriteRule .* http://127.0.0.1 [R,L]

C’est une règle de réécriture. Elle renvoie le spammeur vers son serveur local. Comme cela, il se spamme lui-même. Et pan dans la g… ! Le code ci-dessus va bannir toutes les adresses 194.8.74.0 à 256 et 194.8.75.0 à 256. C’est un peu expéditif comme solution car elle condamme certains visiteurs dont le seul crime est d’avoir le même fournisseur d’accès que les 3 spammers qui sévissent en ce moment. A vous de voir si les solutions présentées précédemment suffisent.

PS. Vous trouverez les adresses IP des expéditeurs de spams dans l’entête du message bloqué par Akismet, à côté de leur nom et fausse adresse email.

En tout cas, aujourd’hui, je n’ai plus eu le moindre message indésirable. Le système fonctionne !

1 Réponse à Comment protéger son blog contre le spam

  1. francevoyage

    Je tiens à préciser que l’astuce fournie n’est pas réservée aux blogs WordPress. Tout webmaster hébergeant ses pages sur un serveur Apache, peut créer un fichier .htaccess à la racine de son site ou de son blog et y programmer des instructions telles que bannir l’accès aux indésirables, réécrire l’adresse url en rajoutant www devant le nom de domaine et /index.php après celui-ci, histoire d’éviter le duplicate content durement sanctionné par Google.