Objectif du tutoriel NetFlow - logiciel pfSense®

Alors que les affaires d’écoutes massives sur le cœur du réseau Internet (affaire Snowden, Prism, BigBrother à la Française, Echelon, …) sont chaque jour révélées, il nous a semblé intéressant de nous pencher sur LE protocole qui est très certainement entré en jeux dans la collecte des informations réseau… En effet, si les outils utilisés pour permettre une analyse sémantique des trames réseaux ont probablement été développés sur mesure par les différents services de renseignement, le protocole NetFlow est probablement entré en jeux au moins pour la partie collecte des trames. 

Après tout configurer une interface 10G spécifique sur un Cisco 12000 et la dédier à la collecte des trames est à la portée de la plupart des administrateurs IOS de la planète… 

 

Nous allons donc tenter de vous expliquer : 

  1. comment ce protocole fonctionne 
  2. comment utiliser NetFlow avec le logiciel pfSense®
  3. comment le mettre en œuvre sur votre réseau 
  4. comment exploiter les donnés collectés 

 

L’objectif n’est pas de vous transformer en barbouze au service d’une puissance occulte ou d’espionner les moindres faits et gestes de vos utilisateurs… mais bien d’avoir un niveau de contrôle de votre réseau qui vous permettra de passer d’une analyse de l’étonnement : «Il paraît que lundi matin nous avons eu une coupure réseau de 5 minutes… qu’a-t-il bien pu se passer ?» à une présentation nettement plus détaillée du type «lundi matin à 11h32 nous avons eu une coupure réseau de 4’23“ car l’ordinateur bobby22.bigbiz.local qui dispose de l’IP 192.168.23.234 a initié plus de trois cents connexions vers l’extérieur principalement vers le site mongros.torrent.com la personne a téléchargé 4Go de données». 

 

Ayant eu l’occasion d’aller voir un «bobby22» en question avec un tableau imprimé et les résultats de son transfert sur l’effondrement des performances réseau, je vous garantie que c’est : 

  1. très drôle (se prendre pour l’Edward Snowden de son LAN c’est marrant comme tout !). 
  2. très efficace (l’utilisateur sait que nous savons ce qui est redoutablement dissuasif !). 
  3. la preuve d’une grande maîtrise sur votre réseau (vous êtes peut-être finalement payé pour cela ?). 

 

Comment le protocole fonctionne :

NetFlow c’est tout d’abord un collecteur de trames IP qui fonctionne depuis les routeurs ou commutateurs qui disposent de ce protocole en leur sein. 

L’équipement réseau va récupérer les trames de l’ensemble des flux qui transitent par lui et les renvoyer (généralement en UDP) vers le «collecteur». Le collecteur va organiser et stocker les traces des trames de façon structurée suivant les indications qui lui sont transmises par l’administrateur système. Ces données seront donc disponibles pour faire l’objet d’une analyse à postériori des évènements qui se sont déroulés sur votre / vos réseaux. 

Les principales marques haut de gamme de commutateur ou routeurs disposent de leur implémentation maison (compatible avec NetFlow) : 

  • Jlow ou cflowd pour Juniper
  • NetStream pour 3Com/HP
  • NetStream pour Huawei
  • Cflowd pour AlcatelLucent 
  • Rflow pour Ericsson 
  • AppFlow pour Citrix 

 

Sans oublier pfSense qui est capable de générer des flux NetFlow dans les différentes versions du protocole (jusqu’à la version 9). Linux et les différentes variantes de BSD supportent NetFlow, idem pour VMWare. 

 

Comment utiliser NetFlow avec le logiciel pfSense®

pfSense dispose d’un support de NetFlow grâce au package pfflowd qui permet la collecte des trames et leur exportation vers un collecteur. Il vous suffit d’installer le capteur pfflowd qui est disponible dans les packages pfSense. 

pfFlowD

Une fois installé, le paquet nécessite le paramètrage de cinq variables : 

  • L’IP du collecteur 
  • Le port utilisé par le collecteur 
  • L’IP source utilisée par le collecteur 
  • Le sens des trames filtrées 
  • La version du protocole NetFlow souhaitée (jusqu’à la version 9) 

 

Le déploiement sur le logiciel pfSense® est la partie la plus simple de la mise en œuvre : il suffit finalement de trois clicks pour installer un package et c’est terminé ! 

 

Comment le mettre en œuvre sur votre réseau 

Nous avons donc décidé d’utiliser un Linux pour déployer notre Collecteur NetFlow et plus particulièrement Ubuntu Serveur 12.0.4. LTS qui va nous permettre de bénéficier d’un collecteur patché et sécurisé pendant 5 ans ! 

Une fois votre Ubuntu 12.04.LTS installé - dois-je préciser que c’est un serveur headless sur lequel vous n’avez activé que SSH avec une authentification par Clé Publique. Après tout ce collecteur va regrouper l’ensemble des trames ayant transitées par votre réseau. Il convient donc de prendre les mesures nécessaires pour sécuriser cette boîte noire ! 

Vous aurez pris soin de déployer ce capteur dans une DMZ d’administration afin de l’isoler le mieux possible. Enfin son accès sera limité par des règles de firewalls adéquats… La routine quoi ! 

 

Installation de flowviewer

Nous avons choisi d'installer flowtools qui va nous permettre de disposer d'un collecteur (flow-capture) et flowviewer comme graphique d'analyse des trames. Flowviewer necessite d'installer apache aussi 

# apt-get install apache2 flowviewer flow-tools libgd-graph-perl rrdtool

 

Il vous faudra ensuite configurer de façon adéquat ces différents packages.
Pour la partie collecteur nous avons utilisé le paramètrage suivant :

# cat /etc/flow-tools/flow-capture.conf

# Configuration for flow-capture
#
-w /var/flows/chabanais -n 287 -N 3 0/10.20.50.1/3002

 

Ici flow-tools va créer 287 fichier par jour soit environ un fichier de capture toutes les cinq minutes.
Ensuite il va stocker cela à partir du répertoire défini par la variable -w "/var/flows/chabanais"
Après la varibale -n défini la structure de stockage qui va avoir la forme YYYY/YYYY-MM/YYYY-MM-DD/flow-file
Enfin on défini les adresses sur lequel le collecteur va écouter de la forme IP locales/IP distantes/port

 

Après il n'y a plus qu'à lancer le collecteur et vérifier qu'il tourne bien avec les commandes : 

# /etc/init.d/flow-capture start
# ps auxwww | grep flow-capture
root      1402  0.0  0.0  11796  1268 ?        Ss   Jul08   0:17 /usr/bin/flow-capture -w /var/flows/chabanais -n 287 -N 3 0/10.20.50.1/3002

 

Comment exploiter les donnés collectées

Là cela devient nettement plus complexe car il existe une multitude d’outils permettant de faire une exploitation de vos donnés NetFlow. Du plus basic en ligne de commande à des outils payant qui coûtent plusieurs dizaines de milliers d’euros. 

Nous nous intéresserons ici plutôt à une approche OpenSource de l’implémentation des outils d’analyse NetFlow. 

L’approche du stockage et d’analyse des trames réseau par NetFlow est par bien des aspects toujours réservée à une élite de l’administration Système et Réseau qui a déjà gagné un contrôle suffisant sur son environnement et souhaite passer à un niveau supérieur en prenant réellement le contrôle des évènements en main ! Une fois de plus l’approche OpenSource permet de s’affranchir de coûts de licence excessif en choisissant des produits de bonne qualité !

 

Maintenant que vous disposez de votre routeur pfSense et d’un collecteur, il vous suffit de faire une exploitation correcte des données stockées. Nous avons choisi le programme flowviewer qui nous permet de disposer d’un bon outil d’analyse et qui pourra aussi être mis en œuvre pour réaliser un bon reporting sur l’activité de votre réseau.

Je passerais sur l'installation qui s'apparente au déploiement d'un serveur HTTP avec la configuration de CGI. 

Après l'installation de ce prograrmme vous allez avoir à votre disposition un outil complet d'analyse de trames capable de générer des graphes sur mesure ou de restituer des données suivant vos besoins. 

Voici la première page de votre interface. Prenez bien soin de défini votre routeur pfSense dans les fichiers de configuration. Vous pourrez ensuite simplement le sélectionner dans le pop-up adéquat. 

Voici le type de graphe sur mesure que l'outil est ensuite capable de vous générer. 

 

Comme vous pouvez le voir : c'est extrêmement précis et très très efficace. Il existe de multiple façon de configurer votre sonde et d'afficher les résultats souhaités… 

 

Si vous ne voulez pas perdre de temps avec la configuration de votre sonde, nous proposons des sondes NetFlow prêtes à l'emploi pour  vos réseaux !