NetCollect
Ce collecteur est intégralement inspiré de
bbnfc de Martin van den Nieuwelaar. Je n'ai gardé du source original
que la version 5 de netflow et j'ai supprimé tout ce qui correspond à
l'affichage des flux. Pour chaque flux, la date est modifiée pour ne
plus être dépendante du sysUptime et le flux est réécrit tel-quel dans
un fichier binaire.
Le code source net_collect : net_collect.cpp
Il nécessite pour la compilation l'include netflow.h de
Martin van den Nieuwelaar livré avec bbnfc
Installation :
mkdir
/usr/local/netflow
cp net_collect.cpp /usr/local/netflow
cp
netflow.h /usr/local/netflow
cd /usr/local/netflow
g++ flow_view.cpp -o
flow_view
cd /usr/local/bin
ln -s
/usr/local/netflow/net_collect
Pour le lancer en deamon au démarrage de la machine,
j'utilise (sous Linux Red Hat) le fichier net_collect
cp net_collect /etc/rc.d/init.d/
chkconfig --add
net_collect
Et j'utilise des
fichiers journaliers avec une rotation par syslog
/datas/netflow/flux_netflow.dump
{
daily
rotate 60
missingok
sharedscripts
postrotate
/etc/rc.d/init.d/net_collect stop
/etc/rc.d/init.d/net_collect start
endscript
}
flow_view
flow_view est un programme écrit en 'C++' qui permet d'extraire des
flux 'NetFlow' d'un fichier binaire créé par NetCollect.
Par réellement objet dans sa conception, il utilise néanmoins des
objets c++ iostream, strings, vector et map.
Le code source de flow_view : flow_view.cpp
Il nécessite pour la compilation l'include netflow.h de
Martin van den Nieuwelaar livré avec bbnfc
Installation :
mkdir
/usr/local/netflow
cp netflow.h
/usr/local/netflow
cp flow_view.cpp
/usr/local/netflow
cd /usr/local/netflow
g++ flow_view.cpp -o
flow_view
cd /usr/local/bin
ln -s
/usr/local/netflow/flow_view
Le fichier par défaut fixé lors de la compilation est
/datas/netflow/flux_netflow.dump
La commande suivante peut modifier simplement ce comportement :
g++
-DDEFAULT_DUMP_FILE="\"/var/log/flux_netflow.dump\"" flow_view.cpp -o
flow_view
Sinon, il est possible de modifier le code ligne 82
// DEFAULT_DUMP_FILE
#ifndef DEFAULT_DUMP_FILE
#define DEFAULT_DUMP_FILE "/datas/netflow/flux_netflow.dump"
#endif
usage:
flow_view
[-h][-l|-s|[-d][-D][-c]][-g][(-i|-e) <adresse>][(-p|-x)
<port>][-o <fichier>][-f
<fichier>]
-h Help of command usage
-l affichage des flux au format long
-d affiche la date de debut si format
court ou csv
-D affiche la date de fin si format court
ou csv
-c sortie au format csv pour import dans
base de donnée
-g enregistre dans /tmp/netflow.plot les
compteurs in et out
pour générer le graph via gnumplot. Cette option n'a de sens que si
elle est combinnée avec l'option -i
Elle permet alors de générer le graphique de flux d'une machine donnée
-s mode silencieux à combiner avec
l'option -o pour
éviter la sortie à l'écran
incompatible avec les options -l -d -D -c
-f
<fichier>
fichier dump a utiliser
par defaut : /datas/netflow/flux_netflow.dump
-i
<adresse>
extrait uniquement les
flux de l'adresse spécifiée
incompatible avec l'option -e
-e
<adresse>
ignore les flux de
l'adresse spécifiée
incompatible avec l'option -i
-p
<port>
extrait
uniquement les flux concernant le port spécifié
incompatible avec l'option -x
-x
<port>
ignore
les flux concernant le port précisé
incompatible avec l'option -p
-o
<fichier>
enregistre un dump
correspondant à l'extrait
Bugs connus :
les options -e et -x ont un comportement variables et leur usage est à
éviter.
Outils additionnels
plot_flow
permet de donner le graphique des flux d'une machine.
A placer dans /usr/local/bin :
plot_flow lance un flow_view -gsi $1 $2 ... puis exécute gnuplot
/usr/local/bin/plot_flow.cfg
top_n
Pour l'instant, le code qui n'existe que sous la forme d'un
projet KDEvelop n'est pas diffusable.
p2p_detect
Un script qui utilise flow_view et top_n pour détecter les machines qui
utilisent des logiciels de p2p.
N'est pas diffusable tant que top_n n'est pas diffusé et tant qu'il
n'est pas paramétrable