NetFlow Tools Sobre Debian Sarge
2006-04-07 14:28 - elin
Herramienta de monitoreo y análisis de tráfico de redes
Copyright© 2005 Elin Palma Aguirre/Carlos Rojas Muñoz www.gulag.org.mx Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
1. Advertencia
El siguiente documento se ofrece en buena fe. Bajo ninguna circunstancia nos hacemos responsables por cualquier daño o pérdida de datos en cualquier forma a cualquier persona o equipo como consecuencia directa o indirecta de estas instrucciones.
Este documento se distribuye bajo la licencia: GNU FDL
2. Introducción
Netflow es una herramienta de monitoreo y análisis de tráfico de redes, que trabaja sobre routers CISCO y que tienen la capacidad de generar gráficos en formato .png . Netflow trabaja en sistemas Unix/Linux solamente y permite ver qué aplicaciones, quién utiliza , y cuanto ancho de banda consumen los usuarios de una red, y cuándo ocurre. Para la descarga y posterior utilización de esta herramienta se utilizaron las guias y documentación sobre éste que están disponibles en los siguientes sitios:
http://www.dynamicnetworks.us/netflow/ http://monitor.noc.uth.gr/netflowguide.html http://net.doit.wisc.edu/~plonka/list/flowscan/
3. Requisitos
- gcc
- openc++
- libad-dev
- make
- perl
4. Procedimiento
Instalación
a) rrdtools
usuario@gulag:/aplicaciones/software$ tar -zxvf rrdtool-1.0.49.tar.gz usuario@gulag:/aplicaciones/software$ cd rrdtool-1.0.49 usuario@gulag:/aplicaciones/software/rrdtool-1.0.49$ ./configure --enable-shared --prefix=/usr/local/rrdtool usuario@gulag:/aplicaciones/software/rrdtool-1.0.49$ make gulag:/aplicaciones/software/rrdtool-1.0.49# make install gulag:/aplicaciones/software/rrdtool-1.0.49# make site-perl-install
b) flow tools
usuario@gulag:/aplicaciones/software$ tar -zxvf flow-tools-0.66.tar.gz usuario@gulag:/aplicaciones/software$ cd flow-tools-0.66 usuario@gulag:/aplicaciones/software/flow-tools-0.66$ ./configure usuario@gulag:/aplicaciones/software/flow-tools-0.66$ make gulag:/aplicaciones/software/flow-tools-0.66# make install
Aqui al momento de instalar el flow-tools se encontro el siguiente error:
make[1]: *** [flow-filter] Error 1?.
Investigando en internet nos dimos cuenta que era necesaria la instalación de dos paquetes, el flex y el bison , y se procedió a instalarlos, y así se pudo continuar con la instalación del flow tools satisfasctoriamente.
c) Modulos de Perl.
A continuación es necesario instalar algunos modulos de perl, y es necesario hacerlo como root
gulag:/aplicaciones/software# perl -MCPAN -e shell cpan> install HTML::Table cpan> install Net::Patricia cpan> install ConfigReader::DirectiveStyle cpan> exit
d) Flow-tools
usuario@gulag:/aplicaciones/software$ cd flow-tools-0.66 usuario@gulag:/aplicaciones/software/flow-tools-0.66$ cd contrib usuario@gulag:/aplicaciones/software/flow-tools-0.66/contrib$ tar -zxvf Cflow-1.051.tar.gz usuario@gulag:/aplicaciones/software/flow-tools-0.66/contrib$ cd Cflow-1.051 usuario@gulag:/aplicaciones/software/flow-tools-0.66/contrib/Cflow-1.051$ vi Makefile.PL
Configuracion
sub find_flow_tools {
my($ver, $dir);
my($libdir, $incdir);
#Se cambió a ruta completa:
if (-f '/aplicaciones/software/flow-tools-0.66/lib/libft.a') {
#Se cambió a ruta completa:
$dir ='/aplicaciones/software/flow-tools-0.66/lib'
$incdir = "-I$dir -I$dir/.."
$libdir = "-L$dir";
}
}
El directorio /aplicaciones/software/ es donde se descomprimió flow-tools.
gulag:/aplicaciones/software/flow-tools-0.66/contrib/Cflow-1.051# perl Makefile.PL gulag:/aplicaciones/software/flow-tools-0.66/contrib/Cflow-1.051# make gulag:/aplicaciones/software/flow-tools-0.66/contrib/Cflow-1.051# make install
e) pdksh
gulag:/aplicaciones/software# apt-get install pdksh
f) support files
usuario@gulag:/aplicaciones/software$ tar -zxvf support-files-1.0.tar.gz usuario@gulag:/aplicaciones/software$ cd support-files gulag:/aplicaciones/software/support-files# cp linkme /usr/local/netflow/bin/ gulag:/aplicaciones/software/support-files# chmod a+x /usr/local/netflow/bin/linkme
g) Directorios de netflow
gulag:/aplicaciones/software# mkdir -p /aplicaciones/netflow/ gulag:/aplicaciones/software# mkdir -p /aplicaciones/netflow/bin gulag:/aplicaciones/software# mkdir -p /aplicaciones/netflow/ft gulag:/aplicaciones/software# mkdir -p /aplicaciones/netflow/rrds gulag:/aplicaciones/software# mkdir -p /aplicaciones/netflow/scoreboard
Usted decide el nombre del directorio donde instala net flow, en este caso se llamó aplicaciones.
gulag:/aplicaciones/software# cd support-files gulag:/aplicaciones/software/support-files# cp flow-capture-init /aplicaciones/netflow/bin/
h) Tcpdump
gulag:/aplicaciones/software# apt-get install tcpdump
i) ConfigReader
usuario@gulag:/aplicaciones/software$ tar -zxvf ConfigReader-0.5.tar.tar usuario@gulag:/aplicaciones/software$ cd ConfigReader-0.5 gulag:/aplicaciones/software/ConfigReader-0.5# mkdir -p /ConfigReader gulag:/aplicaciones/software/ConfigReader-0.5# cp * /usr/lib/perl5/site_perl/5.8.0/ConfigReader
j) FlowScan
usuario@gulag:/aplicaciones/software$ tar -zxvf FlowScan-1.006.tar.gz usuario@gulag:/aplicaciones/software$ cd FlowScan-1.006 usuario@gulag:/aplicaciones/software/FlowScan-1.006$ ./configure --prefix=/aplicaciones/netflow usuario@gulag:/aplicaciones/software/FlowScan-1.006$ make gulag:/aplicaciones/software/FlowScan-1.006# make -n install gulag:/aplicaciones/software/FlowScan-1.006# make install gulag:/aplicaciones/software/FlowScan-1.006# cp flowscan.cf /var/netflow/bin
Instrucciones de CUFLOW:
Desempaquete el archivo que descargó previamente (tar – zxvf CUFlow-1.4.tar.gz) y después mueva los archivos CUFlow.pm y CUFlow.cf a /var/netflow/bin/. Ahora vaya a /var/netflow/bin y edite flowscan.cf. Usted necesita comentar cualquier línea existente de “ReportClasses” y agregar la línea siguiente:
ReportClasses CUFlow
El archivo flowscan.cf quedó de la siguiente forma…
gulag:/aplicaciones/netflow/bin# more flowscan.cf
# flowscan Configuration Directives ############################################ # FlowFileGlob (REQUIRED) # use this glob (file pattern match) when looking for raw flow files to be # processed, e.g.: # FlowFileGlob /var/local/flows/flows.*:*[0-9] #FlowFileGlob flows.*:*[0-9] FlowFileGlob /aplicaciones/netflow/ft/ft-v05.* # ReportClasses (REQUIRED) # a comma-seperated list of FlowScan report classes, e.g.: # ReportClasses CampusIO # ReportClasses SubNetIO # ReportClasses CampusIO ReportClasses CUFlow # WaitSeconds (OPTIONAL) # This should be <= the "-s" value passed on the command-line to cflowd, e.g.: # WaitSeconds 300 WaitSeconds 30 # Verbose (OPTIONAL, non-zero = true) Verbose 1
También será necesario cambiar el nombre del archivo listado en la variable de FlowFileGlob. Es mejor especificar la ruta completa a los enlaces del archivo del flujo (recuerda el script del linkme?) Use: FlowFileGlob /var/netflow/ft-v05. *. (No olvide el * en el extremo, si no FlowScan emitirá errores.)
Ahora que el archivo de configuración está completo, usted debe poder iniciar FlowScan. Se puede utilizar el siguiente script para comenzarlo automáticamente en el arranque. (este archivo se incluye en los archivos Tarball de la ayuda.)
#!/bin/sh
# description: Start Flowscan
# chkconfig: 2345 99 00
case "$1" in
'start')
/var/netflow/bin/flowscan >>/var/log/flowscan 2>&1 </dev/null & >/dev/null
touch /var/lock/subsys/flowscan.1
;;
'stop')
killall -9 flowscan
rm -f /var/lock/subsys/flowscan.1
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
Este script enviará todos los mensajes generados por FlowScan hacia /var/log/flowscan. Si usted utiliza este script para iniciar FlowScan, puede supervisar si está trabajando o no atando el registro (tail – f /var/log/flowscan).
Si todo está trabajando correctamente, usted debe ver registros como estos:
sleep 30...
sleep 30...
2002/06/24 03:05:09 working on file flows.20020624_03:00:00...
2002/06/24 03:05:53 FlowScan-1.020 CUFlow: Cflow::find took 44 wallclock secs
(43.57 usr + 0.11 sys = 43.68 CPU) for 8729930 flow file bytes,
flow hit ratio: 156224/158726
2002/06/24 03:05:56 FlowScan-1.020 CUFlow: report took 3 wallclock secs
( 0.00 usr 0.03 sys + 1.47 cusr 1.30 csys = 2.80 CPU)
sleep 30...
sleep 30...
sleep 30...
sleep 30...
sleep 30...
sleep 30...
sleep 30...
sleep 30...
sleep 30...
2002/06/24 03:10:28 working on file flows.20020624_03:05:00...
2002/06/24 03:11:10 FlowScan-1.020 CUFlow: Cflow::find took 42 wallclock secs
(42.72 usr + 0.08 sys = 42.80 CPU) for 8568285 flow file bytes,
flow hit ratio: 153537/155787
2002/06/24 03:11:13 FlowScan-1.020 CUFlow: report took 3 wallclock secs
( 0.00 usr 0.03 sys + 1.64 cusr 1.26 csys = 2.93 CPU)
sleep 30...
sleep 30...
sleep 30...
sleep 30...
Si usted no ve nada o el archivo no puede ser encontrado, intente iniciar FlowScan sin el script. (desde /var/netflow teclee dentro bin/flowscan) la mayoría de los mensajes de error que FlowScan genera se explican por sí mismos.
Hay una última cosa a tratar puesto que tenemos un archivo de registro aquí. Se sugiere que usted configure un proceso de logrotate para rotar el archivo de registro /var/log/flowscan. Aquí esta lo que usted necesitará hacer para rotarlo diario y para guardar 8 semanas de los registros (registro actual más los 7 últimos registros): Con su editor preferido, agregue un archivo al directorio /etc/logrotate.d llamado flowscan (ejemplo: vi /etc/logrotate.d/flowscan) y ponga lo siguiente: (este archivo también se incluye en los archivos Tarball de la ayuda.)
/var/log/flowscan {
rotate 7
weekly
}
El logrotate debe estar ya configurado para ejecutar cada uno de los archivos de configuración en este directorio diariamente. Para mas información sobre logrotate, teclee: man logrotate, en línea de comando.
En nuestro caso al iniciar el flowscan:
gulag:/aplicaciones/netflow/bin# ./flowscan-init start
y verificar con el tail -f /var/log/flowscan los mensajes
se encontró el siguiente error…
ERROR updating /aplicaciones/netflow/rrds/network_SubRed_19_192_168_128.rrd:
illegal attempt to update using time 1130795400 when last update time is 1130795700
(minimum one second step)
El cual se corrigió instalando un parche que se encuentra en Internet en la liga:
gulag:/aplicaciones/software# wget > http://net.doit.wisc.edu/~plonka/list/flowscan/archive/att-2309/01-lowScan.pm_flow-tools_patch_
wget nos sirve para hacer descargas desde la linea de comandos, el nombre del archivo es 01-lowScan.pm_flow-tools_patch_
Se descargó también el software para aplicar parches.
gulag:/aplicaciones/software# apt-get install patch
Y se aplicó asi:
gulag:/aplicaciones/software# patch -p0 /aplicaciones/netflow/bin/FlowScan.pm < lowScan.pm_flow-tools_patch
k) Presentación de Resultados

Esto es sólo una muestra de lo que se puede hacer con Netflow, esta gráfica es mensual, podemos apreciar un espacio en blanco durante la semana 45 y 46, en este caso el servicio estuvo detenido.
La parte positiva muestra el consumo de ancho de banda de nuestra red interna hacia Internet, y la negativa todo el tráfico que fluye de Internet hacia el interior de la red.
En la siguiente gráfica podemos apreciar un mayor detalle, ya que fué obtenida en un periodo de 48 hs.

5. Notas finales
En nuestro caso utilizamos un router cisco, el cual se configuró con las siguientes líneas para enviar el tráfico de la red:
router(config)# ip flow-export source FastEthernet1/0 router(config)# ip flow-export version 5 peer-as router(config)# ip flow-export destination 192.168.10.12 2055
Esperamos que el presente documento haya quedado lo suficientemente claro como para que realicen la instalación de la herramienta.
6. Acerca del autor
Dudas, aclaraciones y/o sugerencias, no duden en escribir a las direcciones:
elin(en)gulag.org.mx carlos(en)gulag.org.mx
Categorías: Redes







