NetFlow: Prérequis et configuration

Le plugin Netflow  permet de surveiller le débit moyen généré sur une période définie par une application, une ip source ou une ip de destination et générer des alertes en cas de dépassement des seuils définis, il remonte également des données et des graphiques de performance de la même manière que les autres plugins.

Cas d’usage et bonnes pratiques d’utilisation des plugins :

Le plugin a été spécifié de sorte de pouvoir répondre à des besoins bien précis. Il présente différents champs à renseigner permettant de cibler la consommation de la bande passante

Dans l’idéal, chaque plugin instancié doit répondre à un besoin, par exemple, la mesure du débit généré par le service de messagerie. Dans ce cas, l’utilisateur renseignera les différents champs nécessaires à cette mesure (ip de destination du serveur de messagerie, port SMTP 25….).

NetFlow

Introduction

Netflow est un protocole réseau utilisé pour comptabiliser le trafic du réseau IP. Il a été développé par Cisco Systems. De nos jours, NetFlow est devenu une norme industrielle pris en charge par de nombreux périphériques. Il existe plusieurs versions du protocole, mais les versions les plus courantes sont les versions 5 et 9.

Les flux réseau

NetFlow utilise le concept d’un flux pour capturer des données sur le comportement du réseau, telles que la source et la destination du trafic réseau, les applications utilisant le réseau et la quantité de bande passante allouée à ces applications.

Un flux est une séquence unidirectionnelle de paquets entre une source et une destination donnée, définie par une clé de 7-tuple comprenant les champs suivants:

  • Adresse IP source
  • Adresse IP de destination
  • Source Port
  • Le port de destination
  • Protocole IP
  • Interface de saisie
  • Type de service IP

Enregistrements NetFlow

Les informations NetFlow collectées par Flow Publisher sont gérées en créant des enregistrements pour chaque flux. Chaque enregistrement est géré dans le cache NetFlow. Lorsque les paquets sont capturés, les statistiques relatives aux flux actifs sont mises à jour. Une fois qu’un flux a été créé et placé dans le cache NetFlow, il reste actif jusqu’à ce qu’il expire. Une fois l’écoulement écoulé, l’enregistrement de flux est ajouté à un datagramme d’exportation NetFlow pour transmission au collecteur NetFlow.

Prise en charge de NetFlow

En plus de Cisco, de nombreux constructeurs d’équipements réseau offrent une prise en charge de NetFlow sur leurs boitiers. La liste comprend Juniper, Alcatel-Lucent et Nortel, entre autres. En ce qui concerne les plates-formes logicielles, il y a une prise en charge sur serveurs VMWare et sous Linux.

Certains constructeurs utilisent un autre nom pour cette technologie:

  • Jflow ou cflowd chez Juniper Networks
  • NetStream chez 3Com/HP
  • NetStream chez Huawei Technologies
  • Cflowd chez Alcatel-Lucent
  • Rflow chez Ericsson
  • AppFlow chez Citrix

Architecture

Des éléments réseau (commutateurs et routeurs) établissent des statistiques sur les données des flux réseau qu’ils exportent vers des collecteurs. Ces statistiques détaillées peuvent porter sur les nombres de paquets et d’octets, les ports applicatifs, les adresses IP, les champs de qualité de service, les interfaces par lesquelles ils transitent, etc.

L’architecture permettant de  collecter les informations sur le trafic du réseau IP est la suivante:

  • NetFlow exportateur: Observe les données par paquets, créé des enregistrements du trafic réseau surveillé et transmet ces données au Collecteur NetFlow.
  • Collecteur NetFlow: Collecte les enregistrements envoyés par l’exportateur, les stocke dans une base de données locale.
  • ServiceNav BOX: Récupère les informations collectées par le Collecteur NetFlow en fonction du besoin entré en paramètres du plugin NetFlow
  • SNP (Plateforme de supervision) permet de configurer le service NetFlow est d’exploiter les données remontées par la ServiceNav BOX

Configuration des prérequis

Mise en place du NetFlow Collector Storage

Le master proposé peut-être mutualisé et collecter les exports NetFlow et sFlow.

Procedure sFlow: https://coservit.com/servicenav/fr/documentation/sflow-prerequis-et-configuration/ 

En fonction de besoin d’analyse réseau, Il est possible de dédier un serveur NetFlow Collector Storage ou d’utiliser une de vos ServiceNav Box déjà en service.

Dimensionnement du NetFlow Collector Storage

Quelle quantité d’espace disque un déploiement NetFlow moyen devrait-il consommer? L’une des plus grandes préoccupations est que l’exportation de NetFlow aura un impact sur la bande passante disponible, les frais généraux du processeur sur les périphériques ou sur les disques durs qui le stockent.

Il est important de noter qu’une exportation de données de flux réseau peut contenir des enregistrements contenant jusqu’à 30 conversations ou flux . Ceci est important car le volume moyen de NetFlow est directement proportionnel au nombre de sockets TCP / UDP uniques créées par les clients et les serveurs du réseau.

Cette nature agrégée de NetFlow et le fait que les paquets NetFlow sont composés uniquement d’informations d’en-tête IP (c’est-à-dire pas la charge utile de paquets elle-même), expliquent pourquoi l’exportation ne consomme que 1-2% du débit d’interface. Depuis 2004, les experts de NetFlow de Cisco ont maintenu une règle de base selon laquelle NetFlow créera seulement 1 à 1,5% de débit sur l’interface sur laquelle il est exporté.

Quel est le volume de flux typique par PC? La réponse est: cela dépend, la tendance semble être d’environ 100 flux / minute par ordinateur, avec un pic de 350

par exemple, une entreprise compte 1000 noeuds et que chaque noeud génère 200 flux par minute. Cela équivaut à environ 200000 flux en une minute, soit environ 3300 flux par seconde.  Pourquoi tant de flux ?

Les applications engendrent beaucoup de flux uniques, en particulier les navigateurs web et la plupart des applications. Voici quelques applications typiques très bavardes:

  • Java, Adobe, Anti-virus, navigateurs web
  • Skype est très bavard et provoque du trafic vers le DNS
  • Flux de pages Web générant des images, des annonces, etc.
  • Email vérifiant constamment la boîte de réception
  • NetBios

Un flux stockés sur le NetFlow Colletor Storage occupe 150 octets d’espace disque, il est donc préconiser de provisionner 2 Go par jour et par tranche de 100 nœuds:

 Cpu(s)  4 vCPU
 RAM  8 Go
 Espace disque  20 Go + 2 Go par jour et par  tranche de 100 nœuds
 Interface réseau  1 gbps

Configuration du NetFlow Collector Storage :

Le NetFlow Collector Storage sera créé à partir d’un master SNB, ce serveur doit être dédié à la collecte des exports NetFlow et ne dois pas être utilisé en tant que boitier de supervision.

  • Télécharger le master SNB:
    • Site FTP : software.servicenav.io (contacter le support pour les identifiants d’accès)
    • Sélectionner le master SNB dans le répertoire SNB-SNM – ServiceNav Box/4.0/SNM_MASTER_OVF_2019_01_24_V4_0.0.zip
  • Cibler les interfaces réseau répondant à vos besoins d’analyse
  • Connectez-vous en SSH au Netflow Collector Storage
  • Créer un répertoire de destination des exports NetFlow, par exemple vous pouvez créé un chemin générique ~/network_analysis/netflow et créé sous celui-ci autant de répertoire que d’interface réseau à monitorer, ces répertoires seront destinés à stocker les exports (NetFlow Exporter). Attention le compte ssh de supervision ssh utilisé sera le compte coadmin, il est donc recommandé de créer les répertoire s de destination avec l’utilisateur coadmin. Vous pouvez les nommer en fonction des ip d’interface ou le nom des équipements:
    • Ex : mkdir ~/netflow/ROUTEUR_A_WAN
  • Définir un port d’écoute pour le listener par équipement réseau sur lesquels NetFlow sera activ,  par exemple le 9995 pour le Routeur A et 9996 pour le Routeur B
  • Créer une ACL autorisant la connexion au Netflow Collector Storage sur les ports d’écoute:
    • # iptables -A INPUT -p udp –dport 9995 -j ACCEPT
    • # iptables -A INPUT -p udp –dport 9996 -j ACCEPT
  • Lancer le listener via la commande suivante :
    • nfcapd -p 9995 -l /home/coadmin/netflow/RouteurA_WAN -D
    • nfcapd -p 9996 -l /home/coadmin/netflow/RouteurB_WAN -D
      • -p fixe le port UDP d’écoute (9995 dans notre configuration du routeur Cisco)
      • -l fixe le répertoire ou les données seront stockées (emplacement du collector)
      • -w permet de s’assurer que la collecte sera faite toutes les n minutes (n=5 par défaut) avec des valeurs ,5,10…
      • -D permet de demander à nfcapd de se lancer comme un daemon (en tache de fond)

Par défaut, les exports aux formats nfcapd.YYYYMMddhhmm sont supprimés toute les 24h via une tâche planifiée lancée tous les jours à 0h00:

/root/crontabRoot
0 0 * * * /usr/local/nagios/libexec/nfcapd_deleteCache.sh > /dev/null 2>&1

Vous devez spécifier le chemin où se trouve les données à supprimer, pour cela:

  • Éditer le fichier /usr/local/nagios/libexec/nfcapd_deleteCache.sh => vi /usr/local/nagios/libexec/nfcapd_deleteCache.sh
  • Modifier la ligne    « find /usr/local/nagios/Network_Analysis/ -name nfcapd.\* -type f -mmin +180 ! \( -name « *.current.* » \) -delete » en remplacement « /usr/local/nagios/Network_Analysis/ » par le chemin où se trouve les données à supprimer. Exemple qui reprend la configuration ci-dessus: « find /home/coadmin/netflow/ -name nfcapd.\* -type f -mmin +180 ! \( -name « *.current.* » \) -delete » pour supprimer les données relatives aux RouteurB_WAN  et RouteurA_WAN

Configuration des équipements réseaux

La configuration ci-dessous est un exemple et n’est pas forcément adaptée à votre périphérique. Notre procédure NetFlow, Device Configuration vous met à disposition un grand nombre de procédure d’activation Netflow selon votre périphérique.

Se connecter sur l’équipement réseau sur lequel NetFlow doit être activé et effectuer ces différentes étapes pour configurer NetFlow et NetFlow Data Export.

Ci-dessous un exemple de configuration pour un Switch/Routeur  CISCO à l’aide du format d’exportation de la version 9:

  1. enable

  2. configure terminal

  3. ip flow-export destination {ip-address | hostname} udp-port

  4. Repeat Step 3 once to configure a second NetFlow export destination.

  5. ip flow-export version 9

  6. interface interface-type interface-number

  7. ip flow {ingress | egress}

  8. exit

  9. Repeat Steps 6 through 8 to enable NetFlow on other interfaces

  10. end

Détails des étapes

 Étape Commande ou action Objectif
 Étape 1   activer

  Exemple:

Router> enable

  (Obligatoire) Active le mode EXEC privilégié.

  • Entrez votre mot de passe si vous y êtes invité.
 Étape 2   configurer le terminal

  Exemple:

Router# configure terminal

  (Obligatoire) Permet d’accéder au mode de configuration globale.
 Étape 3   ip flow-export destination { ip-address |  hostname } udp-port

  Exemple:

Router(config)# ip flow-export destination 172.16.10.2 9995

  Adresse IP ou nom d’hôte du Netflow Collector Storage le port d’écoute      UDP.
 Étape 4  Répétez l’étape 3 une fois pour configurer une deuxième  destination d’exportation NetFlow.   (Facultatif) Vous pouvez configurer un maximum de deux destinations d’exportation pour NetFlow.
 Étape 5   ip flow-export version 9

  Exemple:

Router(config)# ip flow-export version 9

  (Facultatif) Permet l’exportation d’informations dans les entrées du cache NetFlow.

  • Le mot clé de la version 9 indique que le paquet d’exportation utilise le format de la version 9.
 Étape 6   interface numéro d’interface type d’interface

  Exemple:

Router(config)# interface ethernet 0/0

  (Obligatoire) Spécifie l’interface sur laquelle vous souhaitez activer NetFlow et passe en mode de configuration d’interface.
 Étape 7   ip flow { ingress | egress }

  Exemple:

Router(config-if)# ip flow ingressRouter(config-if)# ip flow egress

  (Obligatoire) Active NetFlow sur l’interface.

  • ingress – Capture le trafic reçu par l’interface.
  • egress – Récupère le trafic transmis par l’interface.
 Étape 8   exit

  Exemple:

Router(config-if)# exit

  (Facultatif) Quitte le mode de configuration de l’interface et retourne au mode de configuratio globale.

 Remarque:  

 

Vous devez uniquement utiliser cette commande pour activer NetFlow sur une autre interface.

 Étape 9   Répétez les étapes 6 à 8 pour activer NetFlow sur d’autres interfaces.   (Optionnel) —
 Étape 10   end

  Exemple:

Router(config-if)# end

  (Obligatoire) Quitte le mode de configuration actuel et retourne au mode d’exécution privilégié

 

Vérification du fonctionnement de NetFlow et affichage des statistiques NetFlow

Vérifier que NetFlow est correctement configuré.

Utiliser la commande show ip flow interface pour afficher la configuration NetFlow pour une interface. Voici un exemple de sortie de cette commande:

Router# show ip flow interface Ethernet0/0 ip flow ingress

Utilisez la  commande show ip cache flow pour vérifier que NetFlow est opérationnel et pour afficher un résumé des statistiques NetFlow. Voici un exemple de sortie de cette commande:

Router# show ip cache flow

IP packet size distribution (1103746 total packets):

   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480

   .249 .694 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608

   .000 .000 .027 .000 .027 .000 .000 .000 .000 .000 .000

IP Flow Switching Cache, 278544 bytes

  35 active, 4061 inactive, 980 added

  2921778 ager polls, 0 flow alloc failures

  Active flows timeout in 30 minutes

  Inactive flows timeout in 15 seconds

IP Sub Flow Cache, 21640 bytes

  0 active, 1024 inactive, 0 added, 0 added to flow

  0 alloc failures, 0 force free

  1 chunk, 1 chunk added

  last clearing of statistics never

Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)

——–         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow

TCP-FTP            108      0.0      1133    40      2.4    1799.6       0.9

TCP-FTPD           108      0.0      1133    40      2.4    1799.6       0.9

TCP-WWW             54      0.0      1133    40      1.2    1799.6       0.8

TCP-SMTP            54      0.0      1133    40      1.2    1799.6       0.8

 

Vérification que l’exportation de données NetFlow est opérationnelle

Vérifier que l’exportation des données NetFlow est opérationnelle en affichant les statistiques relatives à l’exportation des données NetFlow.

Utiliser la commande show ip flow export pour afficher les statistiques relatives à l’exportation de données NetFlow, notamment ip/port udp du Netflow collector storage et les statistiques du cache principal et de tous les autres caches activés. Voici un exemple de sortie de cette commande:

Router# show ip flow export

Flow export v9 is enabled for main cache

  Exporting flows to 172.16.10.2 (9995) (ip/port udp du Netflow collector storage)

  Exporting using source interface Ethernet0/0

  Version 9 flow records

  0 flows exported in 0 udp datagrams

  0 flows failed due to lack of export packet

  0 export packets were sent up to process level

  0 export packets were dropped due to no fib

  0 export packets were dropped due to adjacency issues

  0 export packets were dropped due to fragmentation failures

  0 export packets were dropped due to encapsulation fixup failures

 

Vérification que les données NetFlow sont bien stockées sur le Netflow Collector Storage

Se connecter sur le NetFlow Collector Storage, se positionner sur le répertoire dédié à stocker les export nfcapd correspondant et vérifier présence de fichier au format nfcapd.YYYYMMddhhmm (nfcapd.201709181140).

Attention les fichiers nfcapd sont créés périodiquement par le processus nfcapd même si ceux-ci ne sont pas alimentés par les netFlow Exportateur (swich, routeur…).

Pour s’assurer que la configuration soit opérationnelle, ces fichiers doivent être alimentés par les netFlow Exportateur (swich, routeur…). Un fichier vide (non alimenté) a une taille de 276 octets. La présence de fichier d’une taille de 276 octets indique que les fichiers ne sont pas alimentés et que la configuration doit être revue.

Les fichiers doivent contenir de la données avec une taille supérieur à 276 octets comme le montre l’exemple ci-dessous:

Si c’est le cas, votre configuration est opérationnelle, vous pouvez passer à l’étape suivante sinon reprendre les étapes de configuration précédentes.

Mise en supervision du NetFlow Collector Storage

Le Netflow Collector Storage est central dans votre architecture NetFlow, il est donc essentiel de superviser la charge et les processus en cours d’exécution.

Utiliser le modèle d’équipement modèle-serveur-linux:

  • CPU
  • LIN-DiskIO
  • LIN-Diskspace
  • LIN-Network_Traffic
  • LIN-RAM
  • LIN-Swap

A ces modèles de service déjà intégrés au modèle d’équipement modèle-serveur-linux, utiliser les modèles de service suivant:

  • LIN-DirectorySize pour surveiller la taille de vos répertoires de destination.
  • Lin-ProcessName  pour surveiller la bonne exécution des processus nfcapd

Enfin utiliser les modèles d’action pour relancer les processus nfcapd en cas d’interruption en suivant la procédure suivante: https://coservit.com/servicenav/fr/documentation/utilisation-des-modeles-daction/

Configuration du modèle de service NetworkAnalysis-NetFlow

Dans les bonnes pratiques, le modèle de service  NetworkAnalysis-NetFlow doit être lié au NetFlow Exporter (le switch ou le routeur qui exporte les données NetFlow) mais vous pouvez également le lié à tout autre équipement ou un Système Up si besoin.

Après avoir instancié le service NetworkAnalysis-NetFlow, il vous faudra configurer le service en fonction du besoin d’analyse. Pour rappel, le plugin a été optimisé pour permettre de monitorer le débit généré par une application.

Les champs obligatoires suivants doivent être renseignés :

  • Collector Storage : Adresse du Collector Storage
  • Bande passante allouée : Valeur dans l’unité choisie
  • Unité : Unité de sortie : kbps, Mbps, Gbps
  • Seuil d’alerte : Seuil d’alerte en %
  • Seuil critique : Seuil critique en %
  • Nom du Répertoire : Chemin d’accès au répertoire contenant les exports liés à une interface
  • Statut d’absence: Statut à donner en cas d’inactivité, ex: 0 pour OK

Les autres champs à renseigner permettent de cibler le flux à monitorer en fonction du besoin.

Exemple de configuration ciblant le débit généré par un serveur de messagerie :

 

Le service vous permettra d’obtenir les informations suivantes :

  • Un statut en fonction des seuils positionnés
  • Le débit généré dans l’unité choisie
  • Des données de performances
  • Des métriques en valeurs absolues et en pourcentage d’utilisation

Métriques en valeurs absolues :

Métriques en pourcentage d’utilisation :

Configuration des tableaux de bord

Après avoir instancié autant de service NetworkAnalysis-NetFlow que de flux à monitorer, vous pouvez créer un ou plusieurs tableaux de bord ciblant l’utilisation de la bande passante par métier et être alerté en fonction des seuils définis.

Voici un exemple de tableaux de bord:

Consultant ServiceNav, mes connaissances générales de l’IT me permettent de répondre aux problématiques de mise en œuvre de la supervision sur des technologies spécifiques.