Ca faisait longtemps que je cherchait un autre moyen de bloquer le trafic msn sur un réseau, j'avais découvert une technique il y a de cela au delà d'un an mais depuis la venu de msn 7 beta, je me suis retrouvé sans solution juste qu'a aujourd'hui. J'étais très malheureux.

Pour vous mettre en contexte, msn c'est une vermine. Un programme qui n'accepte pas de se faire bloquer son port 1863 alors dans ces cas la il retombe sur le port 80 qui lui est connu sous le nom de http. En fait pour ceux qui ne sont pas très technique c'est le même port et protocole utilisé que ce que votre navigateur web utilise. On appelle cela du http tunneling. Très pratique d'en capsuler des données de cette manière car peu de gateway analyse les données juste qu'a ce niveau. Ce qui arrive c'est que le firewall, à la première vue crois que c'est quelqu'un qui navigue nonchalament sur l'internet, donc ce n'est pas un comportement anormal et tout passe sans problèmes. Cependant il y a plusieurs façon de déceler cela. On peut utiliser un logiciel comme snort pour le détecter ou bien on peut faire comme ce que je fais pour le bloquer.

Ma technique est très simple, il s'agit de bloquer tout le trafic sortant de votre réseau en destination du port 1863, ce qui est le port officiel de msn messenger. Donc sans rancune, on bloque son port de communication sachant qu'il va utiliser son fameux plan B, qui consiste a communiquer via un tunnel http. Rendu la, le fun comment, Si on veux analyser le contenu http, on peut le faire facilement via un serveur proxy. Moi j'utilise squid car il est très fiable, flexible et il est gratuit. Avec squid, on peux prendre des décisions et bloquer ou accepter de relayer des requêtes web selon tout plein de critères comme, adresse source, de destination, user agent ( ah oui on peux décider de bloquer Internet Explorer d'un réseau pour forcer les gens a une bonne pratique et d'utiliser Firefox ) mais ça c'est une autre histoire. Donc moi ce que je fais c'est que je me créé une ACL sur le mime-type utilisé pour la communication. Donc le but de l'opération est de détecter s'il y a du trafic http contenant le mime-type application/x-msn-messenger. Pour s'assurer que tout le monde utilise le serveur proxy sur le réseau il suffit de créer une règle de Prerouting dans la table NAT d'iptables pour créer un Transparent Proxy et faire en sorte que les gens passent par ce serveur proxy sans avoir à le configurer. Il y a aussi une petite configuration à faire au niveau de squid.conf que je n'ai pas inscrit ici car cet article ne traite pas le Transparent Proxy.

Firewall /sbin/iptables -I FORWARD -s 192.168.x.y/24 -p tcp -m tcp --dport 1863 -j DROP

  1. Squid.conf
   # Règles pour le mime-type "application/x-msn-messenger" 
   acl reqmsn req_mime_type -i ^application/x-msn-messenger
   acl repmsn rep_mime_type -i ^application/x-msn-messenger
   acl permis src 192.168.x.y/16
   # Section http_access
   http_access deny permis reqmsn
   http_access allow permis
   # Section http_reply_access
   http_reply_access deny permis repmsn
   http_reply_access allow permis

Avec cela, on est prèt pour voir quel autre passe passe les gens de bureau vont trouver pour passer à travers cela. Rapidement comme ça, je pense à un SOCK proxy mais heureusement c'est très facile à ne pas autoriser l'utilisation de ce type de proxy. Il y a des moyens très simple, peut-être un autre fois je vous en ferai part.