j2c-s2c.com » Informatique » Linux » Postfix : Lutter contre le SPAM

Lutter contre le spam avec postfix

Objectif

Faire en sorte de rejeter le spam "évident" avant qu'il n'arrive dans les boites aux lettre

Contexte de l'article

Celà fait maintenant plus d'un an que je constate l'efficacité des méthodes que je vais vous présenter. Observer le contenu d'un spam jusqu'à la source m'a permi de comprendre l'origine de 90% du spam.

La mise en place d'une greylist m'a aussi permi de relever les sources évidente de spam

Prérequis

Une installation Debian Stable.

Une installation de postfix opérationnel.

Detection du spam

Envois d'un mail normal

Pour envoyer un mail à un correspondant il existe 3 cas de figures :

Dans le premier cas, l'envois d'un mail de son poste client passe par le serveur de mail smtp.de-l-entreprise.com (le serveur de son entreprise).. puis le mail se retrouve sur les réseaux publique.

Dans le deuxième cas, l'envois d'un mail de son poste client passe par le serveur de mail du FAI smtp.fai.com

Il ne faut en AUCUN cas essayer de contacter d'autres serveurs SMTP sur la planette en direct, mais toujours passer par un serveur mendaté à envoyer des mails. (sur un serveur dédié, le serveur mandaté est soi-même..)

Dans le 3ème cas, ça revient à être connecté sur le serveur mandaté..

Un serveur de FAI a l'obligation de délivrer le courier.. il se débrouillent comme il veullent mais il doivent transmettre le courrier.

Dans tous les cas, les serveurs de mails sont mandatés pour envoyer du courier.

Comment les serveurs de mails mendatés (serveurs relais) savent quel serveur contacter

Chaque destinataire a une adresse mail du genre nom.prenom@domain.com.

Le nom de domaine domain.com correspond à une adresse IP résolue à l'aide d'un serveur de nom.

Ce serveur de nom en plus de l'ip correspondant à la machine domain.com contient un enregistrement MX (Mail eXchange) qui donne la machine qui est mandaté à recevoir les mails à destination de "n'importequelnom"@domain.com

Comportement d'un serveur mail face à une erreur

2 grands type d'erreur existent en SMTP.. les erreur 4xx : temporaires et 5xx : définitives.

Une erreur temporaire indique que le serveur est indisposé à délivrer le courier pour une erreur qui sera résolue dans le futur.. il faut retenter de réexpédier le courier au bout d'un certain temps.

Une erreur définitive indique que le serveur ne pourra jamais délivrer le courier : l'adresse de destination n'éxiste probablement pas.. ou il n'est pas mendaté pour délivrer le courier pour cette adresse.

Un serveur de mail normalement constitué (les serveurs de vos FAI et entreprises) retente au bout d'un certain temps.. Les spameurs ne tentent pas de réexpédier car ils n'écoutent pas les message d'erreur.. ils tirent à vue dans la masse sans regarder s'il y a encore quelqu'un a descendre..

Qu'est ce qu'une grey list

Une grey list est une "liste grise en français".. une liste de serveur qui ne sont pas banni, mais pas acceptés non plus

Nous avons vu tout à l'heure qu'un client est une machine qui se connecte à un serveur de mail

La grey list va regarder si le client est connu.. par défaut elle lui envois une erreur 4xx lui demandant de renvoyer le mails dans x minutes

Le spameur ne renvoit pas le mail.. le mail n'arrive jamais à déstination

Le serveur mendaté renvois le mail .. le mail est accepté et est relayé au destinataire

Au bout d'un certain nombre d'envois réussi, la grey list passe le serveur en white list .. pour gagner du temps : plus de retard de mails

Une grey list, c'est bien ça tri bloque le spam de manière très efficace.. je n'ai encore jamais eut de mails détruits.. mais.. vis à vis de quelqu'un qu'on a au téléphone .. on lui dit "envois moi un mail.. mais attention.. je ne le recevrai pas tout de suite.. faudra attendre au moins 15 minutes.. " là je passe pour un con..

Alors là on se dit HALTE AU FEU !! si on a un serveur qui est beaucoup solicité.. on va générer plein de trafic.. et bah non :).. la greylist plus y a de mails à traiter plus c'est efficace.. à cause du fait que les serveurs de mails qui sont connus sont auto-whitelistés... plus on traite de mails.. plus on whitelist de serveurs.. du coup au bout de pas très longtemps.. seuls les serveurs de mails bizaroïdes sont greylistés.. = impacts moindre

Pour installer une greylist.. howtoforge.com/greylisting_postfix_postgrey en attendant un article sur ce site.

Mais pourquoi tout ce baratin ?

Pendant le fonctionnement de la grey list, je regarde les logs pour vérifier qu'aucun mail légitime n'est détruit : travail de barjo

Parmi les éléments que j'ai pu relever :

Avant la mise en place de la greylist, j'ai concervé TOUT les spams dans un repertoires me demandant si un jour je n'arriverais pas à exploiter le contenu qu'il me donne : bingo.. j'obtiens les même résultats

Ma grey list est toujours en place.. mais n'intervient quasiment plus. Partant du principe qu'une connection en provenance d'une machine résidentielle : client sur l'ADSL .. est un client neuneu qui s'est fait pourrir la machine avec un virus qui s'amuse à envoyer des spams..

Pendant les vacances d'été.. à certaines heures.. le serveur rejetait des 100aines de mails en provenance d'inde et de chine.. = heure auxquel les gus allumaient leurs PC.

Remarque : Peu de mail proviennent de PC adsl français .. pourquoi ? pas que nos pc ne sont pas vérolés.. (surtout qu'on me raconte pas de conneries ou je me fâche..) mais que les FAI français en on assez de voir le fouilli dans leurs réseaux. (avec les rapports ABUSE que j'ai déjà écrit.. ils devaient être content). et ont bloqué leurs client à l'envoi unique vers le relais du FAI. ça ne doit déranger personne vu que.. normalement un utilisateur normal utilise le serveur relai du FAI.

Free laisse encore la possibilité d'ouvrir se port.. mais les utilisateurs qui l'ouvrent pour s'en servir savent que leurs mails sont souvent rejetés par les serveurs mendatés pour les raisons que j'ai évoqué au dessus.

Pour les utilisateurs de serveurs dédiés.. il existe un autre port le port de soumission 587, qui est réservé à la relation entre l'expéditeur et son relai.. le port 25 ne devrait pas être utilisé pour ça. Ce port n'est pas fermé ouf :)

Comment rejeter les mails de SPAM ?

En bloquant les clients ADSL : 90 du SPAM en moins.

Dans main.cf :

# restriction client pour virer les pc zombies
smtpd_client_restrictions = hash:/etc/postfix/access_client

Comment ça marche.. le fichier contient une liste de classe d'IP qui font parti des réseaux résidentiel

Pour plus de sureté, vous pouvez supprimer toute les IP qui font partie du réseau "unknown" c'est un filtrage assez bourin qui peut poser problème chez vous

une fois le fichier en place..

postmap /etc/postfix/access_client

Ainsi qu'à chaque modification..

Le système en place, il faut inspecter régulièrement ces logs afin de vérifier qu'il n'y a pas destruction massive de mails légitimes suite à l'apparition d'un serveur mendaté dans une classe d'IP banni.. (j'ai un gros doute là dedans)

grep RESIDENTIAL /var/log/mail.log | tail -50

Autre méthode en place sur le serveur

Une astuce efficace contre les mails sauvages "undisclosed recipient" et autre "destinataires inconus"

Ce genre de mails partent d'un bon sentiment mais étant donné que cette méthode est surtout utilisée par des SPAMMEUR pour empêcher à un utilisateur (comme moi qui a une bonne 10aine d'adresses virtuelles) de savoir par quelle adresse il est passé.

J'ai donc décidé de réagir en obligeant mes contacts à passer par des mails un peu plus personnels

Le fichier header_checks sera à inclure dans le fichier de config main.cf de postfix :

header_checks = regexp:/etc/postfix/header_checks
/^To: .*destinataires inconnus:/ REJECT Votre mail ne respecte par les règles de transparence et sera détruit sans distribution
/^To: .*undisclosed-recipients:/ REJECT Votre mail ne respecte par les règles de transparence et sera détruit sans distribution

Une source d'inspiration

http://fr.wikipedia.org/wiki/Machine_zombie

Aucun commentaire - VOUS NE POUVEZ PAS POSTER DE COMMENTAIRES = votre IP n'est pas valide (spam ?)

.: Dernière mise à jour le 22/10/2008

Conception et design Jérôme CROCHET © 2000 - 2008 · j2c-s2c.com · Tous droits réservés.

Votre IP : 38.103.63.59 () - Page générée en 0,5683 s

Toute diffusion, même partielle de ce document, doit être soumise à une autorisation écrite préalable de son auteur.

Attention : Toutes les tentatives d'attaque envers ce serveur sont enregistrées, une plainte pourra être déposée.

miam