Et vous, comment vous bloquez le spam « propre » ?

spamContre le spam, j’utilise tout l’arsenal de greylisting, quelques listes RBL, les outils tels spamassassin agrémenté de filtre plus avancés (je regrette feu l’outil SARE qu’il ne faut plus utiliser maintenant).
Côté RBL, je ne trouve pas mon bonheur complet, soit trop violent dans le blocage, soit pas assez.

Bilan, ceux que j’appelle les spammeurs propres continuent de me polluer (pas beaucoup, mais un peu quand même), surtout sur des adresses visibles que j’héberge et qu’on peut retrouver par exemple sur les pages jaunes. C’est bien du spam puisque le destinataire n’a rien demandé.

Ces spammeurs sont « propres » en ce sens où ce sont des sociétés bien définies, dont le métier est de faire chier par e-mail et de ramasser le pognon en promettant aux clients des campagnes ultra-larges, avec des batteries parfois impressionnantes de serveurs.
Ca ruse à tout va pour éviter d’être blacklisté :

  • avoir des plages d’IP disparates
  • utiliser des noms des serveurs plus ou moins variables

Tout ça à mon avis pour qu’on évite de blacklister trop facilement des noms ou des plages d’IP.
Contre ça, j’en suis venu à simplement me semi-automatiser des traitements pour récupérer au maximum toutes les IP de ces rigolos.

Alors on trouve :

  • parfois du srvXX.grosspammeurpropre.com, avec XX allant de 1 à 1000,
  • on a ceux qui ont préféré noyer le poisson en ayant des domaines (et pas sous-domaines) différents : abc1.com, abc2.com etc
  • les gros porcs louant à l’arrache un serveur bon marché (merci OVH, vous etes forts mais vous acceptez vraiment trop n’importe qui, résultat votre turn-over de location vous coince. Bon maintenant je vous ai quitté du coup… dommage
  • Et des gens raisonnables qui utilisent des noms type srv1.supermailer.com srv2.supermailer.com

J’en suis venu, lorsque je reçois un mail d’un serveur propre (admettons toto.com, dont l’IP est a.b.c.d), à tenter tout ça :

  • tester toute la plage d’IP où il traîne : for i in `seq 254`; do host a.b.c.$i ; done ; suivant ce qu’on y voit, je bloque tout ou partie de la plage. Sans hésitation lorsque c’est une plage chinoise, polonaise etc (sans racisme aucun, sauf informatique), ou plus finement si je vois qu’il peut y avoir des expéditeurs légitimes pas loin, qui pourraient avoir à me contacter (j’ai vu comme ça certaines grosses boîtes louer un serveur pourri à une « société de spam propre » pour déléguer leur spam… bravo les admins en carton
  • Contre ceux qui ont des noms qui se suivent, on tentera de tous les choper avec une boucle genre for i in `seq 1 50`; do host srv${i}.supermail.com`; done puis de voir comment bloquer leurs IP
  • Et récemment, je viens de penser à contrôler l’enregistrement SPF du serveur (lorsque son nom est fixe), car on y trouve quelques fois avec bonheur l’intégralité des IP utilisées, justement puisqu’ils sont « propres » et donc font tout pour être le moins vu comme spammeur. Quoique de mieux qu’un champ ipv4:a.b.c.d/27 qui te dit exactement qui bloquer 😀
    Pour ce faire un bon host -t TXT toto.com

Bon, pourquoi je vous raconte ça ? Bah, la liste obtenue et mise à jour régulièrement est téléchargeable ici, si ça vous branche : https://michauko.org/blacklist
Reste à faire un wget et un reload de shorewall, par exemple – une fois par jour ou par semaine, ce sera laaargement suffisant.
Attention, ce qu’elle contient ne vient que de mes propres réflexions, je bloque peut-être à tord du monde. Il m’arrive d’en enlever parfois (enfin c’est rare). J’ai commenté en général d’où ça sort.
Le début du fichier contient parfois un tas d’IP unitaires, c’était avant que je ne pense à trouver les plages d’IP grâce aux enregistrement SPF ; j’arrangerai au fil du temps, certainement.

edit 2013-10-14 :
J’oublias, un truc pour repérer les gros lourds dans les logs de connexion mail, à faire tourner une fois par semaine :
grep "LOGIN FAILED" /var/log/mail.info.1 | awk -F ':' '{print $7}' | tr -d ']' | uniq -c | mutt -s "login failed mail a controler" mon@email.fr

Et aussi :
grep "SASL LOGIN authentication failed" /var/log/mail.info.1 | awk -F '[' '{print $3}' | awk -F ']' '{print $1'} | uniq -c | mutt -s "sasl auth. failed a controler" mon@email.fr
Et vous obtiendrez un rapide décompte des gens les plus bourrins à tester des dictionnaires. Je me poste ça via crontab le lundi matin et je vire les plages des gens qui dépassent les quelques unités de tentatives ratées.
C’est bricolé, j’en conviens, un fail2ban serait plus intéressant sûrement

tcho

16 comments

  1. Attention, ça peut avoir des effets secondaires très gênants, tu peux bloquer des confirmations de commandes par exemple. D’une façon générale, mieux vaut ne jamais rien bloquer comme ça sans avoir d’abord contacter l’abuse de l’expéditeur, puis celui de l’hébergeur.

    1. Evidemment. Mais ce ne sont pas des serveurs à qui j’ai demandé quelque chose. Juste des pollueurs qui m’envoient des pubs non ciblées, non sollicitées etc…
      Si un jour je ne reçois pas tel ou tel mail de confirmation car ils se trouvent être sur une plage où j’ai eu la main leste, je regarde quel serveur utilise la boîte en question.
      Je préfère réduire un peu et analyser en gros un problème par an, que me faire emmerder toute l’année pour ne pas rater un pauvre mail

  2. Autre effet secondaire, ces émetteurs étant souvent hébergés avec d’autres chez un même fournisseur : bloquer un émetteur tout à fait réglo en même temps qu’un vrai spammeur.

    Pour ceux qui font tout ce qu’il faut au niveau technique pour être réglo (SPF, DKIM…), mais qui spamment tout de même, c’est bien simple : ce sont des sociétés aux pratiques internes qui sous-traitent leur service d’envoi de courrier publicitaire à un fournisseur tout à fait sérieux. Dans ce genre de cas tu peux être sûr d’une chose : l’abuse du fournisseur écoute et répond aux plaintes. Et d’une autre chose : l’abuse de l’émetteur lui-même non, d’ailleurs avec ce genre de boulets l’abuse n’existe probablement pas.

    Pour info, je travaille chez un fournisseur de services d’envois de ce genre, et certains de nos clients sont connus pour envoyer du spam. Comme nous n’avons pas la main sur leurs processus marketing, on ne peut rien faire à part leur signaler qu’ils font n’importe quoi, répondre aux plaintes qu’on reçoit et leur transférer pour qu’ils… fassent quelque chose, ou pas, ça dépend à quel point ce sont des boulets.

    1. oui oui, merci pour la leçon

      Je répète :
      – si un serveur, peu importe son nom, situé à un endroit genre roumanie, me spamme, je benne toute la plage d’ip /24 sans hésitation compte tenu que ce que j’héberge ne les intéresse pas
      – si une société envoie un mail avec un serveur xxx.leprodumail.com, c’est une société qui ne fait que ça, je benne toute la plage avec plaisir
      – enfin, lorsqu’une IP isolée me pollue mais est hébergée au milieu d’autres trucs potentiellement légitimes, genre un gros con qui fait n’importe quoi depuis le réseau OVH, dedibox et autres hébergeurs connus pour louer leurs serveurs à n’importe qui, je ne benne que lui, autant que possible

      Tout ça me paraît bien sensé et je n’ai raté jusqu’à présent qu’un mail vaguement sollicité, rien de méchant donc.
      C’est dans cet esprit qu’est créé ce fichier, que je ne force personne à utiliser ; pas plus que ceux qui fournissent des RBL ne forcent les gens

      voilà voilà, je ne vois aucun effet de bord à cette manière de procéder

  3. intéressant je vais voir à l’intégrer dans spamassassin pour voir ou dans postfix pour avoir un drop propre avec la raison ce qui permettra aux potentiels faux positifs de savoir pourquoi

  4. Est-ce que quelqu’un sais s’il est possible de faire croire à l’expéditeur spammeur que le destinataire à qui il envoie le courriel n’existe pas ? Faire en sorte d’envoyer des « Delivery Status Notification (Failure) » en somme.

    1. Pourquoi faire de la charge à ton serveur ?
      Qui te dit que la personne en face trie les mails d’erreurs ?
      J’en doute même très fort. Pourquoi trieraient-ils plus un refus qu’un timeout de connexion ? pour eux c’est pareil : base de données avec des emails mauvais, ils devraient l’enlever pour économiser et prétendre avoir une base « propre » de « clients »…

      Bon au pire, avec un bon gros procmail, tu dois pouvoir intercepter un tel mail et renvoyer ce que tu veux, mais c’est beaucoup d’effort, certainement, pour rien 🙂

  5. Normalement de nos jours tout le spam propre et pas le spam crade qui se prend des notes à plus de 25 dans Spamassassin, ils gèrent tous les retours avec les messages d’erreurs, certains sont radicaux genre le moindre bounce l’adresse est dégagée, d’autres gèrent plus finement pour pas dégager trop d’adresses.

    Ex de bounce qui est géré différemment les over quota, même si on sait que le mec a pas du lire sa boite depuis longtemps, avec l’imap beaucoup de gens explosent les quotas et sont pourtant actifs.

    Donc renvoyer un bounce disant clairement l’utilisateur n’existe pas voir mieux je drop en faisant une raison explicite : domaine / ip bannie merci d’entrer en contact sur telle adresse web. Personne ne m’a jamais contacté 🙂 mais en cas de faux positif la personne en face devrait normalement me contacter.

    1. OK
      Et que font-ils d’une non réponse du serveur ?
      Ca pourrait etre un client potentiel qui n’existe vraiment plus ?
      Donc ils devraient traiter aussi le timeout, même s’il intervient 2 ou 3 jours plus tard
      non ?

  6. C’est une bonne question, ça m’arrive des fois d’avoir des serveurs qui refusent ou qui partent en timeout et souvent c’est un souci réseau, une mauvaise configuration.
    Donc dans le temps de file d’attente je contact si je le trouve facilement les admins des serveurs distants.

    Néanmoins je pense que c’est moins franc un drop de connexion, car même en 2013 des serveurs de mails tombent en panne sans solution de secours et n’ont pas forcément de mx secondaire (à cause de tous les soucis d’attaque spam dessus) du coup il me viendrait pas à l’idée de supprimer un mail si j’ai pas eu de réponse du serveur distant.

  7. Tant qu’on est dans le partage d’astuces en tout genre.
    Pour ma part je fais cela sur Postfix avec des règles pcre pour les headers et je met dedans les domaine du from et du return path. Seul souci les domaines créés spécialement pour l’envoie et le retour bounce genre quelques lettres aléatoires et deux chiffres sur des tld variés.

    /(…|ragixxxxxxces.com|ragxxxxxws.com|revexxxxxion.com)/ REJECT Your domain name has been definitely banned … blabla allez sur telle url si c’est pas normal …

    Du coup ta technique est intéressante pour compléter cela en bloquant les ip de ceux dont les domaines changent souvent.

    Puis surtout va falloir que je script un peu car pour le moment c’est fait à la main.

  8. Oui pour les adresses totalement bidons émises des serveurs que je ne peux pas blacklister, j’en viens à faire du « blacklist_from ducon@lajoie.fr » dans spamassassin si je vois que ducon@lajoie.fr revient un peu trop souvent. Mais bon c’est vraiment pas terrible pour bloquer largement et c’est rare

  9. Je pense que c’est rare parce que tu bloques déjà pas mal de relayeurs officiels et quelques serveurs vérolés mais dans mon cas, chaque semaine j’arrive à recevoir de nouvelles offres super pas alléchante et du coup j’ajoute 3/4 domaines chaque semaine.

    Je vais voir à scripter un petit bot qui irait prendre les mails que je lui forward dans sa bal et qui puisse faire d’un côté la liste d’ip et de l’autre des adresses quand certains arrivent encore à polluer avec du gmail ou yahoo.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.