Des spammeurs m'ont rendu visite ! La solution ?

Aujourd'hui, j'ai découvert avec stupéfaction plus de 2522 pourriels dans ma boîte aux lettres ! Ces derniers m'ont été envoyés car Dotclear avait reçu le même nombre de trackbacks entre quatre heures et six heures du matin.

Le contenu du spam

Tous ces trackbacks ont été postés par un certain « Linux sux »[1]. Ils contenaient :

  • POWER SPAM ASHER (dois-je me sentir visé ?)
  • pourquoi Linux sux ?
  • CE BLOG A ÉTÉ POWER-SPAMMÉ PAR UNE ÉQUIPE DE TROLLS
  • POWER SPAM BY KROLG
  • d0s att4ck
  • dos attack

Les IP des spammeurs :

  • 212.138.64.174 (Arabie Saoudite)
  • 203.144.160.249 (Thailand)

(c'est probablement des proxies)

Pourquoi ils font ça ? Mystère... Peut-être qu'ils n'ont rien d'intéressant à faire dans leur vie ? Peut-être que c'est des jeunes, boutonneux, qui croient que ce qu'ils viennent de faire est un exploit ? :-D

Ma solution

J'ai opté pour les requêtes MySQL car Dotclear ne nous donne pas la possibilité de supprimer un groupe de commentaires en utilisant un filtre (peut-être qu'un plugin existe ?).

Comme il n'y a que deux IP qui ont posté les commentaires, je les ai utilisées pour supprimer tous les spams :

DELETE FROM `dc_comment` WHERE `comment_ip` = '212.138.64.174' OR `comment_ip` = '203.144.160.249'

Tous les spams avaient été supprimés. Malheureusement, il y avait toujours le nombre 900 trackbacks, 800 trackbacks, etc. en dessous des billets...

Pour recompter le nombre de commentaires / trackbacks de chaque billet, j'ai utilisé cette requête :

UPDATE dc_post
SET nb_trackback=0;

CREATE TEMPORARY TABLE tmp
SELECT post_id, count(*) as compt
FROM dc_comment
WHERE comment_pub=1 && comment_trackback=1
GROUP BY post_id;

UPDATE dc_post, tmp
SET dc_post.nb_trackback=tmp.compt
WHERE dc_post.post_id=tmp.post_id;

(grâce à ce topic qui m'a fait gagner du temps !)

J'ai principalement rédigé ce billet pour vous montrer cette petite astuce, en espérant qu'elle vous sera utile un jour ;-)

À bientôt !

[1] dans le jargon de l'informatique, « sux » veut dire « nul ».

Commentaires

1. Le samedi, février 3 2007, 15:13 par Andrei

pfff... j'ai eu le même problème sur mon blog y'a deux mois avec une bande de cons qui s'amusait à mettre des liens pornographiques dans les trackbacks. Apparement, ils avaient fait une boucle infinie sur le ping. Depuis, je suis passé à wordpress qui vérifie si un trackback/commentaire n'a pas déjà été posté avant de le valider.
Sinon, on peut aussi bannir les IP's ou aviser leur fournisseur internet mais comme c'est des proxy... ça neservirait pas à grande chose :)

2. Le samedi, février 3 2007, 17:44 par Lost In The Shell

Pas très jolies, les requêtes MySQL directes :s M'enfin, j'aurais pas fait mieux :)

3. Le samedi, février 3 2007, 22:05 par Asher256

> Sinon, on peut aussi bannir les IP's

Je viens de bannir leur IP finalement. J'espère que cela va les calmer !

> Pas très jolies, les requêtes MySQL directes

C'est vrai que ce n'est pas très joli, mais c'est assez pratique quand même ;-)

4. Le dimanche, février 4 2007, 19:47 par Simtris

Tu t'en ai bien tiré. Bravo
Le seul truc auquel il ne faut pas succomber dans ces cas la c'est le désespoir face à la connerie des gens.

5. Le dimanche, février 4 2007, 22:41 par JJL

Je n'aurais qu'un mot : SpamClear ! Filtre baysien faisant tres bien son travail de tri, sa dernière version vient avec un bouton indispensable : "Vider tout le spam" !

6. Le dimanche, février 4 2007, 23:09 par azmeuk

Ma solution perso contre les spams. Testée et approuvée, seul inconvéniant : utilise du javascript.
En gros, fais en sorte que <form action="xxx"> contiennent l'ip de l'utilisateur. Puis plus loin dans ton formulaire remplace le <input type="submit" /> par un <input type="button" /> dans lequel tu places un onclick="" qui apellera une fonction qui changera le xxx ( dans le <form>) par la réelle page vers laquelle tu veux rediriger la requete, et tu dinis pas un form/submit();
J'avais un forum perso qui était spammé à tout va, et depuis que je fais comme ça, plus aucun message ne passe, et à la limite si le bot est mal conçu il se spamme lui même en quelque sorte...
En esperant n'avoir pas trop été inutile

7. Le lundi, février 5 2007, 12:11 par Asher256

@Simtris: merci.

@JJL: je préfère moi aussi les filtre baysien, mais la dernière fois, le plugin SpamClear n'avait pas bien marché avec les trackbacks (j'avais pourtant fait toutes les modifications requises, dans le code source de Dotclear). Bon, peut-être que la nouvelle version marchera bien, je vais l'installer pour voir :-)

@Azmeuk: merci pour l'astuce Javascript. Je la testerai bientôt ;-) elle pourrait être utile pour les spams dans les commentaires (pour les trackbacks, j'en doute !).

8. Le lundi, février 5 2007, 13:44 par Lost In The Shell

Autre astuce (très) utilisée : rajouter un if($_POST['button']) .

9. Le lundi, février 5 2007, 13:49 par Lost In The Shell

Euh, je me corrige : ajouter if($_POST['button']) ne sert à rien... du moins dans le cas des trackbacks. Pour les commentaire, c'est par contre très pratique.

10. Le lundi, février 5 2007, 22:39 par Andrei

Bah bloquer les trackbacks reste quand-même la meilleure solution. Pour les spammers (les vrais - ceux qui viennent nous vendre entre-autres des médicaments pour les troubles érectiles) y'a Bad Behavior qui marche très bien. Mais pour ceux qui veulent seulement polluer (comme c'est le cas ici "dos attack") c'est des simples utilisateurs et non des robots.

Une solution consisterait à programmer soit même une petite vérification qui vérifie si le trackback n'a pas déjà été posté (c'est assez facile en PHP mais faut connaître le système de Dotclear) Après ça, y'a plus de boucle infinie.


Autre chose, saches qu'une IP envoyée par le $_SERVER['REMOTE_ADDR'] ça vaut rien. Des millions de proxys "anonymes" existent sur le net. Le plus efficace pour découvrir la vraie adresse d'un utilisateur c'est d'avoir une fonction qui vérifie les HTTP_X_FORWADED_FOR et CLIENT_IP (envoyés la plupart du temps)

11. Le mercredi, février 7 2007, 04:12 par Strider

J'ai installé SpamClear aujourd'hui pour me debarrasser de plus de 4000 spams (OMG! :o )
Pour l'instant ca marche bien , tout les spams recu depuis l'installation ont été reconnus comme tels.

Asher , tu utilises quoi pour localiser les IP ? Je sais qu'il existe des outils de ce type sur le web mais je cherche une version console ou mieux, en mode graphique avec une carte .

12. Le mercredi, février 7 2007, 16:45 par _Enchained

Perso j'ai fermé les trackbacks...

sinon pour ta requête (intermédiaire) un "select count(postID) ..." suffit non ?

13. Le mardi, février 13 2007, 18:58 par Asher256

@strider: j'utilise Geoip. J'en ai parlé dans ce billet asher256.tuxfamily.org/in... ;-)

14. Le lundi, février 19 2007, 18:33 par Thesa

Que de finesse ! (Et sous le billet qui va bien...)

15. Le lundi, février 19 2007, 19:08 par Asher256

@Thesa: Ils n'ont vraiment rien à faire :-D Bon, le ménage vient d'être fait (en cinq minutes).

16. Le vendredi, février 23 2007, 06:55 par SolykZ

Je pense que ceci pourrait grandement t'intéresser chef ;)

www.goodykz.123.fr/?p=103

17. Le vendredi, février 23 2007, 14:20 par Asher256

@SolykZ: Intéressant... Merci pour le lien :-)

18. Le vendredi, février 23 2007, 15:50 par SolykZ

Pas de quoi ;)

19. Le samedi, février 24 2007, 23:26 par SolykZ

Alors, déjà des changements ??

Pour ma part, j'en ai plus eu depuis 24h :)

20. Le dimanche, février 25 2007, 02:10 par Asher256

Je l'ai ajouté hier, j'attends de voir le résultat d'ici quelques jours ;-)

21. Le dimanche, février 25 2007, 02:47 par SolykZ

Ouaip j'vois ça, sauf que tu pointes le lien vers la page qui donne le lien ! C'est à dire que le lien que tu places sur ton blog, c'est le lien dont le texte "Combattez les spams" fait référence (en actualisant, tu remarqueras qu'il est re-généré)

Pour ma part, je l'ai placé sur ma sidebar de droite, qui apparaît sur toutes les pages du blog, dans un commentaire conditionnel sous la zone "Divers"...

Dis, y'a une nouvelle version de Firefox 2, la 2.0.0.2... Tu préviens quand t'as mis ton dépôt à jour ? :P (J'en ferai d'ailleurs un p'tit article sur mon blog, si j'ai ta permission ;))

22. Le dimanche, février 25 2007, 03:25 par Asher256

J'ai ajouté :

<div style="display:none">
<a href="http://french-90657683183.spampoison.com">Combattez les spams</a>
</div>

Ce n'est pas suffisant pour provoquer la boucle infinie ? Faudrait-il changer le lien ? (par exemple mettre http://www1172369759567.metroinvest.com/ )

Concernant dépôt, la mise à jour est prête, je mettrais le tout en ligne normalement demain : Firefox et Notecase ;-)

23. Le dimanche, février 25 2007, 03:33 par SolykZ

Oui, tu dois changer le lien et mettre celui où pointe le texte "Combattez les spams"... A la rigueur, je ne suis pas certain que de placer tout ça dans une div soit nécessaire, un bête commentaire (et non un commentaire conditionnel, comme j'ai dit plus haut... désolé, c'est juste le métier qui rentre) contenant l'url de la page, sans rien d'autre, ça suffit amplement ;)

Pour Firefox 2.0.0.2, dès que je vois Synaptic me dire que la mise à jour est prête, je poste sur GoodykZ :)
Pour Notecase, en fait j'avais passé 300 cartes sous Roboform (je t'avais laissé un commentaire y'a une paire de mois sur l'article ad-hoc, concernant l'import des cartes roboform ou j'sais plus trop), et j'ai la flegme de tout retaper manuellement, donc le gestionnaire propre à Firefox a pris le relais et fait, finalement, bien l'affaire :)

24. Le mercredi, février 28 2007, 12:51 par Asher256

Verdict après trois jours : spam poison est efficace !

Avant, j'avais plus de trente spams par jour. Aujourd'hui, j'en ai reçu deux :-D

25. Le mercredi, février 28 2007, 13:42 par SolykZ

Moi, j'en reçois plus aucun, à part quelques trolls de personnes humainement constituées (des spams aussi, donc) :D

26. Le dimanche, août 10 2008, 06:28 par Rachid

slt,
je crois que captcha vas resodre ce probleme des spam

cordialement.