Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

La vulnérabilité Zero Day Exim4
Installer son propre serveur de messagerie...
... et se le faire pirater
Article mis en ligne le 31 décembre 2010
dernière modification le 30 septembre 2014

par Laurent Bloch

Expédier un message électronique : comment cela marche

Pour que votre logiciel Thunderbird, Eudora, Apple Mail ou autre Outlook puisse expédier un message électronique, il doit avoir accès à un serveur de messagerie sortant (relais de messagerie, Mail Gateway) avec lequel il va communiquer selon le protocole Simple Mail Transfer Protocol (SMTP), et qui sera en mesure d’établir une communication avec le serveur entrant de votre correspondant [1]. Bien sûr, un tel serveur SMTP doit vérifier que vous êtes bien autorisé à faire appel à ses services, et dans le cas contraire il refusera d’acheminer votre message, sinon ce serait un « serveur ouvert », que tous les spammeurs de la planète pourraient utiliser pour expédier des millions de publicités pour des produits pharmaceutiques douteux.

Comment le relais de messagerie s’assure-t-il qu’il a affaire à un utilisateur légitime ? Si vous êtes sur le réseau de votre employeur et que vous utilisez son serveur, vous êtes sur un réseau réputé légitime, et il est réglé pour accepter les sollicitations qui en proviennent. C’est la même chose à votre domicile pour utiliser le serveur de votre fournisseur d’accès (FAI) : votre adresse IP atteste que vous êtes sur un réseau autorisé par construction.

Cela se complique lorsque vous êtes à l’hôtel ou dans une salle de conférences quelconque : si vous êtes dans un endroit civilisé vous avez un accès au réseau filaire ou WiFi, mais en règle générale vous n’avez pas accès au relais de messagerie du lieu, ou bien l’hôtelier ne sait pas vous l’indiquer. Vous pouvez alors vous tourner vers le Webmail : au moyen d’un navigateur Web, vous accédez au site de votre employeur ou de votre fournisseur d’accès, et là vous pouvez lire votre courrier et en émettre. Simplement ce n’est pas commode : l’interface du navigateur n’est généralement pas très confortable, et si vous avez l’habitude de charger les messages sur votre ordinateur portable pour les lire dans le train, cela ne marche pas (en attendant que la SNCF fournisse le réseau dans les trains, ce qui ne saurait tarder).

Il y a une autre solution : votre relais de messagerie préféré (celui de votre employeur ou de votre FAI) peut aussi vous identifier non plus par votre présence sur son réseau de prédilection, mais par votre identifiant et votre mot de passe. Il utilisera alors le protocole SMTPS (SMTP sécurisé), et vous pourrez ainsi, depuis Shangaï ou Valparaiso, recourir à ses services. Mon employeur, ainsi que mon FAI, m’offrent ce type de service. Mais j’avais décidé d’être indépendant.

Construire mon infrastructure réseau

J’aurais pu choisir d’être indépendant à la maison : mais laisser tourner un serveur dans mon appartement pendant les vacances d’été ne me semblait pas une idée séduisante. Il y a des gens dont c’est le métier et qui font cela très bien pour pas cher : j’ai loué un serveur (sans doute virtuel) chez OVH, pour quelque-chose comme 200 euros par an, et ce sont eux qui s’occuperont de la climatisation, de l’électricité, des cambrioleurs et du reste. On a le choix du système d’exploitation : je prends Debian. Le processus d’installation est très simple, en une heure tout est réglé.

La suite des opérations m’a bien occupé pendant une partie du mois d’août : l’installation du serveur DNS de mon domaine m’a contraint à quelques révisions, parce que là il faut vraiment comprendre ce que l’on fait. Dans l’enthousiasme du moment j’ai installé un serveur Apache parfaitement capable de propulser vers votre navigateur les pages que vous lisez en ce moment, mais je l’ai désactivé pour ne pas avoir à m’occuper de sa sécurité, mon hébergeur actuel (Nexenservices) fait cela bien mieux que je ne pourrais le faire, vingt-quatre heures sur vingt-quatre. Enfin pour le relais de messagerie j’ai installé le logiciel Exim4, chaudement recommandé par la communauté Debian, avec une configuration sécurisée par le protocole Transport Layer Security (TLS) qui me permet une authentification par identifiant et mot de passe, soit une garantie d’être le seul utilisateur de mon serveur.

Je scrute les journaux du système : comme le serveur SSH qui sert à me connecter écoute sur un numéro de port non standard, j’ai peu de tentatives de connexion parasites. Le serveur SMTP Exim4 écoute aussi sur un numéro de port différent de l’habituel 25, mais chaque jour j’ai au moins une tentative en provenance d’un grand domaine taïwanais, plus de temps en temps une tentative isolée. Toutes les tentatives frauduleuses sont correctement repoussées par le serveur. J’ajoute à chaque fois les adresses IP d’origine de ces tentatives dans la liste noire de mon pare-feu Shorewall. Je nage dans la félicité. Je me propose de faire profiter mes amis de ce merveilleux service. Mais voilà...

Piégé par un “Zero Day” !

Le second mardi de chaque mois se tient la réunion de l’Observatoire de la sécurité des systèmes informatiques et des réseaux (OSSIR). C’est un excellent groupe technique, dont les délibérations sont de très bon niveau, et de plus ouvertes gratuitement à tout un chacun. J’y assiste chaque fois que je peux.

Chacune de ces réunions se termine par une revue commentée (en général par Nicolas Ruff) des vulnérabilités publiées dans le mois écoulé. C’est un des moments les plus passionnants, on en apprend de belles.

Et là : on a découvert un “Zero Day” dans Exim4, le logiciel de relais de messagerie que j’utilise ! Un “Zero Day”, c’est une vulnérabilité qui n’a jamais été découverte, et que le malfaiteur qui la met au jour peut donc exploiter sans retenue. Bien sûr, dès qu’il commence à s’en servir il se fait repérer et la correction de la vulnérabilité ne tarde pas à sortir. Mais justement, comme tout marche comme une horloge, il y a quelques jours que je n’ai pas mis mon système à jour. Fatale erreur !

Je rentre chez moi, me connecte à mon serveur : il n’y a malheureusement aucun doute, le système a été compromis. OVH a détecté des anomalies et mis ma machine en quarantaine. Les journaux révèlent plusieurs actions du compte root à des heures où ce n’était pas moi, certaines commandes fondamentales du système ont été remplacées par des fichiers dotés de propriétaires bizarres et que je ne peux pas détruire. Bref, le plus prudent est de tout effacer et de reconfigurer la machine à partir de zéro, ce que je fais la mort dans l’âme. Heureusement j’avais une sauvegarde.

Instruit par l’expérience, je mets en place un système moins clinquant mais plus sûr : le seul service visible de l’extérieur sera SSH, et je ferai tout par redirection de port [2]. Adieu, IRC, Web, DNS ! Mais bon, j’ai toujours mon relais de messagerie privé accessible de la planète entière.