Protocol-discovery et filtrage du traffic Peer-to-Peer

Si il y a bien une nuisance courante dans un réseau et qui plus  est qui est difficile à endiguer, c’est le traffic généré par les applications basées sur le principe du Peer-to-Peer (Bittorrent, Gnutella, eDonkey, …). Hormis le fait que certaines applications sont souvent utilisées pour du téléchargement illégal, le principe même de leur fonctionnement perturbe aisément une structure, et tout particulièrement en ce qui concerne le point de vue de la connexion Internet.

Pourquoi ? Simplement par ce que dans la plupart des cas, la connexion « Internet » du réseau est de type asymétrique, donc que la bande passante pour le trafic descendant (entrant) est largement supérieure à celle pour le traffic ascendant (sortant) et qu’une application Peer-2-Peer ne se content pas de récupérer des données … mais elle en émet également beaucoup.

Si l’on veut empêcher le traffic Peer-to-peer, on butte généralement rapidement sur le fait que le panel des ports utilisés par ces applications est énorme, et qu’il est difficilement envisageable de les bloquer tous, sous peine d’empêcher d’autres applications de fonctionner correctement.

Cisco apporte un outil efficace sur ses routeurs (pour autant que l’IOS le permette bien entendu). Il s’agit de NBAR « Network-Based Application Recognition », une fonctionnalité qui va analyser les données au delà de la couche réseau ou de la couche de transport afin d’identifier un flux et de pouvoir le catégoriser.

Lorsqu’on utilise NBAR conjointement avec des « class-map » et « policy-map », on peut alors filtrer le traffic identifié.

Voici un configuration simple mais fonctionnelle (basée sur un routeur Cisco 2801 IOS IPBase 15.0M)…

1 – Activer la découverte de protocol sur l’interface où l’on veut appliquer le filtrage

Si on ne l’active pas, le filtrage n’aura pas lieu, simplement parce que le routeur n’ira pas inspecter les flux de données.

Router> enable
Router# configure terminal
Router(config)# interface fastethernet 0/1
Router(config-if)# ip nbar protocol-discovery
Router(config-if)# exit
Router(config)#

2 – Créer une « class-map » de sorte à identifier le traffic généré par les applications P2P

On va ici faire en sorte que le traffic identifié comme provenant d’applications utilisant les protocoles Bittorrent, eDonkey, Gnutella ou encore Fasttrack soient catégorisés.

Router(config)# class-map match-any P2P
Router(config-cmap)# match protocol bittorrent
Router(config-cmap)# match protocol edonkey
Router(config-cmap)# match protocol gnutella
Router(config-cmap)# match protocol fasttrack
Router(config-cmap)# exit
Router(config)#

Attention à bien créer une class-map « match-any » … celà signifie que dès qu’une des conditions (ici un des protocoles) est remplie, le traffic est mis dans la classe « P2P ». Par défaut la commande class-map crée une classe « match-all » qui demande que tous les « match » soient vérifiés pour que le traffic soit associé à la classe.

3 – Définition de la police à appliquer sur l’interface

Avant de configurer, ayez bien en tête qu’une police s’applique sur une interface, soit en entrée, soit en sortie ou les deux. Mais qu’une interface ne peut avoir qu’une seule police applique par interface et par sens du traffic.

On va ici créer une police qui filtrera tous les traffic de la classe P2P. Le traffic reconnu par la classe « P2P » sera purement et simplement jeté.

Router(config)# policy-map DROP-P2P
Router(config-pmap)# class P2P 
Router(config-pmap-c)# drop 
Router(config-pmap-c)# exit
Router(config-pmap)# exit
Router(config)#

4 – Appliquer la police à l’interface

L’interface utilisée ici est l’interface côté LAN, on va donc filtrer le traffic qui entre sur cette interface

Router(config)# interface fastethernet 0/1
Router(config-if)# service-policy input DROP-P2P
Router(config-if)# ^Z
Router#

5 – Remarques

  • La commande « show policy-map interface fastethernet 0/1 » afficher les stats de la police active sur l’interface.
  • Tout le traffic P2P ne sera pas droppé, après quelques tests certains torrents passent, mais à un taux de transfert proche 0 et généralement il s’agissait de torrents « légaux », par exemple pour un téléchargement d’une ISO Ubuntu alors que des tests de téléchargements de torrents « douteux » quant à eux ne démarraient jamais. Toujours est-il que c’est un grand pas vers la suppression de cette nuisance.
  • La commande « show ip nbar protocol-discovery » vous en apprendra beaucoup sur les protocoles utilisés et identifiés sur l’interface ou nbar est activé. (traffic HTTP, Skype, ftp …).

1 Comment on “Protocol-discovery et filtrage du traffic Peer-to-Peer