Installation d’une sonde NetFlow sous FreeBSD

Publié le 20 janvier 2010 par Nicolargo

Nous allons dans ce billet voir comment installer une sonde Netflow (protocole propriétaire de Cisco) sur une machine FreeBSD. On pourra ensuite collecter les informations de type bande passante, délais, gigue de chaque flux réseaux transitant par notre machine BSD et les remonter à un collecteur avant analyse. Pour en savoir plus sur le protocole Netflow, je vous conseille la lecture de ce billet.

Nous allons utiliser la sonde libre fProbe qui a le bon goût d’être disponible dans les dépôts de FreeBSD.

Installation de fProbe

On installe le logiciel fProbe (version 1.1 au moment de l’écriture de ce billet):

pkg_add -r fprobe

Utilisation de fProbe

Imaginons que votre routeur sous FreeBSD est 2 interfaces réseaux (ce qui est un minimum pour un routeur…): em0 et em1. em0 est votre interface coté LAN et em1 celle coté WAN. Pour capturer les flux transitant sur l’interface WEN et remonté via le protocole NetFlow (sur le port UDP/9991) les mesures vers une machine collecteur ayant pour adresse IP 192.168.0.100, il faut saisir la ligne de commande suivante:

fprobe -i em1 -f ip 192.168.0.100:9991

Il est ensuite facile de récupérer les mesures sur la machine 192.168.0.100 en installant NFDump ou en utilisant NTop et son plugin NetFlow.

Vous pouvez bien évidemment lancer autant de sonde fprobe que nécessaire (par exemple si votre routeur dispose de plusieurs interfaces à surveiller).

Il est également possible d’envoyer les mesures Netflow à plusieurs collecteurs. Pour celà il faut ajouter les couples adresse IP/port UDP à la ligne de commande. Dans ce cas, il faut modifier le script de démarrage de la manière suivante:

vi /usr/local/etc/rc.d/fprobe

#!/bin/sh

#

# $FreeBSD: ports/net-mgmt/fprobe/files/fprobe.sh.in,v 1.1 2006/11/24 07:23:24 clsung Exp $

#

# PROVIDE: fprobe

# REQUIRE: NETWORKING

# KEYWORD: shutdown

# Add the following lines to /etc/rc.conf to enable fprobe:

#

#fprobe_enable="YES"

#

# See fprobe(8) for fprobe_flags

#

. "/etc/rc.subr"

name="fprobe"

rcvar=`set_rcvar`

command="/usr/local/sbin/fprobe"

command_args1="-i em0 -f ip 192.168.0.100:9990"

command_args1="-i em4 -f ip 192.168.0.100:9994"

pidfile="/var/run/$name.pid"

load_rc_config "$name"

: ${fprobe_enable="NO"}

start_cmd="echo \"Starting ${name}."\; ${command} ${command_args1}; ${command} ${command_args2}"

run_rc_command "$1"

Quand vous avez validé votre chaine de mesure (sonde / collecteur), vous pouvez automatiser le lancement de la sonde en modifiant le fichier /usr/local/etc/rc.d/fprobe pour l’adapter à vos besoins et ajouter la ligne suivante au fichier /etc/rc.conf:

fprobe_enable="YES"