[Précédente] [Suivante] [Sommaire]

3. Les approches techniques et leurs limites

Les services Web sur le spam, les listes de diffusions ou les groupes de News sur ce sujet sont nombreux. On y parle en général souvent de solutions techniques, même partielles, à ce problème. Voyons-les.

3.1 Les représailles (« mail-bombing »)

uuencode /vmunix /vmunix | Mail -s "Fuck you" spammer@cyberpromo.com

Cette technique est souvent suggérée. Son principe est de donner aux spammeurs « le goût de leur propre médecine ». Cela a plusieurs inconvénients :

Mais surtout, cette « solution » nous ramène au Far-West. À une époque où seule l'habileté d'un homme à manier le revolver pouvait assurer sa protection. Cela n'est normalement plus nécessaire.

3.2 Interdire le relayage

Une technique fréquemment utilisée par les spammeurs est le relayage. La plupart des serveurs de courrier sur le réseau relaient aveuglément tout message, parfois sans noter dans les en-têtes Received la vraie origine. Cela permet à un spammeur de faire relayer son message par un innocent, qui attirera ainsi la foudre sur sa tête et donnera, bien involontairement, ses ressources à la transmission et retransmission des spams.

Par exemple, le message suivant a été relayé par une machine autrichienne (ns1.via.at) dont le client avait donné une fausse adresse (194.41.60.10 au lieu de la vraie 38.12.48.239). Heureusement, ns1.via.at a noté la vraie adresse. (Rappelez-vous que les en-têtes Received se lisent de bas en haut, que leur format varie selon les logiciels et qu'ils peuvent être fabriqués.)

  
Received: from ns1.via.at (ns1.via.at [194.41.60.10])
          by fermi.cnam.fr (8.8.6/jpm-070797)  with ESMTP id RAA18058
          ; Fri, 8 Aug 1997 17:48:07 +0200 (MET DST)
Received: from 194.41.60.10 (ip239.sarasota3.fl.pub-ip.psi.net [38.12.48.239]) by 
    ns1.via.at (8.7.5/8.7.3) 
    with SMTP id RAA28328; Fri, 8 Aug 1997 17:21:03 +0200 (MET DST)
Received: from mailhost.mlcirrumert.comalt1.mlcirrumert.com(277.1.55.85)) by 
    mlcirrumert.com (8.8.5/8.6.5) 
    with SMTP id GAA02177 for <>; Fri, 08 Aug 1997 11:16:49 -0600 (EST)

Rappelons un peu le fonctionnement de SMTP. La machine qui souhaite envoyer un message se connecte (par TCP) au port SMTP de la machine suivante. La machine expéditrice s'annonce (elle peut annoncer ce qu'elle veut) et va indiquer le nom de l'expéditeur et celui du destinataire. C'est ce que l'on appelle l'enveloppe. Le nom de l'expéditeur peut être complètement mensonger. Le destinataire peut ne pas être local au serveur de réception (c'est le relayage). Cette enveloppe est suivie du message lui-même, composé d'en-têtes (From, To, Subject, Date, etc) et d'un corps (le texte). Ces en-têtes peuvent être déjà mensongers à ce stade.

La machine réceptrice, recevant le message, va y ajouter un en-tête Received et, si elle est correctement configurée, mettra dans cet en-tête la vraie adresse IP de la machine expéditrice, et pas seulement ce que celle-ci a annoncée.

Il est donc nécessaire, pour la grande majorité des serveurs de courrier, d'interdire le relayage. (Rares sont les serveurs qui en ont vraiment besoin et ce sont en général ceux de très gros réseaux.) Sur Unix, c'est la configuration par défaut de qmail, avec lequel il est particulièrement facile de limiter le relayage (ce qui donne parfois des résultats désagréables avec des clients SMTP légitimes, comme Eudora). Mais avec sendmail, il faut prendre des précautions particulières.

Cela n'interdit pas totalement le spam, mais le jour où tout le monde mettra en oeuvre cette politique, le spam sera direct : on verra mieux les responsables. Et le filtrage IP (ci-dessous) deviendra plus efficace.

3.3 Filtrer les domaines spammeurs

Il est de plus en plus courant de filtrer les domaines spammeurs (le spammage est en effet une véritable industrie, avec des sociétés spécialisées dont le représentant le plus connu est l'entreprise états-unienne CyberPromo).

Cela peut se faire par le serveur de courrier (en utilisant les règles check_* de sendmail, par exemple ou le badmailfrom de qmail) ou par le routeur (en bloquant toutes les adresses des spammeurs).

Les deux méthodes ont leurs avantages et leurs inconvénients. Bloquer par adresse IP met fin à toute tentative d'agression ou de sondage. Votre serveur de messagerie est complètement déchargé de tout travail « anti-spam ». Mais c'est inefficace si le spammeur se fait relayer (c'est une des raisons pour lesquelles il est essentiel de bloquer le relayage).

De plus, la plupart des logiciels de messagerie ne vont pas interpréter correctement ce blocage (à leur décharge, le routeur filtrant ne transmet pas toujours la bonne information et TCP/IP ne la passe pas toujours aux programmes) et vont réessayer régulièrement de transmettre les messages. Cela chargera la machine du spammeur (traiter une grosse file d'attente de messages est un lourd travail) mais aussi tout le réseau.

Bloquer via votre serveur de messagerie permet de mettre un point final à la tentative (si on renvoie le code d'erreur SMTP commençant par 5 ce qui veut dire « erreur permanente ») mais charge davantage votre serveur (si vous êtes sadique et bien connecté, vous pouvez renvoyer un code d'erreur commençant par 4, « erreur temporaire »).

En pratique, vous devrez sans doute utiliser les deux techniques.

Exemple de filtrage IP sur un Cisco :

  
! CyberPromo
access-list 101 deny ip 205.199.2.0 0.0.0.255 any log
access-list 101 deny ip 204.137.222.0 0.0.0.255 any log

Et sur une machine Linux :

ALL=0.0.0.0/0  
# Bulk E-mail
ipfwadm -I -a reject -P tcp -S 205.199.4.0/24 -D $ALL

Les deux méthodes ont le même inconvénient : le spammeur peut utiliser une adresse IP ou un domaine encore jamais rencontré. En prime, si des sites autorisent le relayage, le paquet viendra de leur adresse IP et passera les filtres du routeur.

En outre, il est difficile de garder ses listes à jour (le spammeur change souvent de domaine et parfois d'adresse IP). Les listes deviennent vite très grosses.

Un contrôle supplémentaire peut être de vérifier que le domaine annoncé par l'expéditeur existe bien : cela l'oblige à acheter de nombreux domaines pour ne pas être repéré trop vite.

3.4 Filtrage sémantique

Bien que cette solution soit tentante, elle n'est pas encore opérationnelle, comme tout ce qui nécessite de l'intelligence artificielle. Il n'existe aucun algorithme pouvant reconnaitre un spam d'un non-spam, même s'il est tentant de se dire qu'un message avec « free », « sex » et plus de trois points d'exclamation dans le sujet est sans doute un spam :-)


[Précédente] [Suivante] [Sommaire]