Procesando flujos Netflow mediante Nfdump
Nfdump es un conjunto de herramientas para capturar y procesar datos Netflow en línea de comandos.
Las aplicaciones recogidas dentro del proyecto Nfdump son las siguientes:
- nfcapd: Demonio que captura los datos netflow.
- nfdump: Aplicación para procesar el conjunto de datos (ficheros) netflow capturados.
- nfprofile: Filtra los datos netflow guardados en función de los perfiles definidos.
- nfreplay: Lee los datos netflow guardados en ficheros por nfcapd y los reenvia a otro equipo.
- nfclean.pl: Script para borrar datos antiguos.
- ft2nfdump: Lee y convierte datos de flow-tools a nfdump. Flow-tools es otro conjunto de herramientas para tratar con datos netflow.
Aunque hay multitud de herramientas para leer, procesar y representar datos Netflow, tanto en línea de comandos como en formato gráfico, pocas de ellas tienen la flexibilidad y potencia que tiene Nfdump a la hora de procesar los datos, lo que puede ser muy útil a la hora de detectar ataques hacia nuestra red, realizar análisis forenses o sacar estadísticas diversas. Todo ello de forma muy flexible y adaptada a nuestra red y necesidades.
De las herramientas anteriores, las más utilizadas en la prácica son las dos primeras: nfcap y nfdump.
El nfcapd es la herramienta que nos permite capturar los flujos netflow provenientes de nuestros routers. Se trata de un proceso que debe estar siempre ejecutándose y que va escuchando en el puerto indicado los datos que llegan de los routers y los va grabando en el directorio indicado. Su ejecución es muy sencilla y no requiere ninguna configuración. No obstante, puede convenir crear un script de arranque automático en la máquina en la que se instala para seguir escuchando en caso de reinicio de ésta. Un ejemplo de ejecución podría ser el siguiente:
nfcapd -w -D -l /var/data/netflow/router_A/ -p 9995
Este comando ejecutaría el proceso en background (-D) y guardaría los flujos que está escuchando en el puerto 9995 (-p 9995) en el directorio /var/data/netflow/router_A/ (-l /var/data/netflow/router_A/) en ficheros que iría rotando cada 5 minutos (-w).
La configuración de nuestro router Cisco sería algo tan sencillo como el siguiente ejemplo:
interface FastEthernet0/0
ip route-cache flow
ip flow-export version 5 origin-as
ip flow-export destination 192.0.2.1 9995
ip flow-aggregation cache as
ip flow-aggregation cache protocol-port
ip flow-aggregation cache source-prefix
ip flow-aggregation cache destination-prefix
ip flow-aggregation cache prefix
Los ficheros que guarda el nfcapd son archivos binarios y a medida que van rotando van recibiendo un nombre que dependerá de la hora en la que se han generado. Por ejemplo, nfcapd.200908301800 podría ser un fichero generado el 30 de agosto de 2009 a las 18:00.
Una vez que tengamos estos ficheros es cuando se pueden empezar a analizar mediante nfdump.
Las posibilidades que ofrece nfdump son muchas. A continuación se muestran algunos ejemplos, pero se puede encontrar mucha más información al respecto en la página web del proyecto.
Ejemplo 1: Procesa todos los ficheros del directorio actual y saca el top 30 de los AS con más tráfico:
nfdump -R . -n 30 -s as/bytes
Ejemplo 2: Analiza el tráfico generado entre las 10:00 y las 12:00 y ordénalo de mayor a menor tráfico en función de la IP y del puerto utilizados:
nfdump -R nfcapd.200908301000:nfcpad.200908301200 -s ip/bytes -s port/bytes
Una de las mayores ventajas de la herramienta es que se puede filtrar utilizando el mismo formato que se utiliza para el tcpdump.
Ejemplo 3: Analiza el tráfico generado entre las 10:00 y las 12:00 y ordénalo de mayor a menor tráfico en función de la IP y del puerto utilizados, pero solo para la IP 129.0.2.10:
nfdump -R nfcapd.200908301000:nfcpad.200908301200 -s ip/bytes -s port/bytes 'host 129.0.2.10'
Esta funcionalidad de filtrado es la que nos permitirá hacer análisis más complejos, como se puede ver en el siguiente ejemplo.
Ejemplo 4: Análisis de un ataque de SYN flood generado contra la IP 129.0.2.34 entre las 8:20 y las 8:50:
nfdump -R nfcapd.200908300820:nfcpad.200908300850 -s ip/packets -s ip/bytes 'dstip 129.0.2.34 and flags S and not flags AFRPU'
Ejemplo 5: Análisis del mismo ataque anterior pero mostrando todos los flujos; lo que también puede resultar muy interesante:
nfdump -R nfcapd.200908300820:nfcpad.200908300850 'dstip 129.0.2.34 and flags S and not flags AFRPU'
Bueno, y a partir de aquí nuestra imaginación y experiencia ponen los límites.
Aclaraciones sobre el artículo
Aunque la puesta en marcha de la herramienta es tan fácil como se muestra, hay muchos conceptos y aclaraciones que he obviado en este artículo con el ánimo de no aburrir mucho al lector. El principal propósito de éste es presentar la herramienta para todo aquel que no la conozca y que la considere seriamente si quiere implementar un sistema de análisis de tráfico en tiempo de routing. Tampoco he analizado las ventajas y desventajas de este tipo de análisis frente a otras basada en análisis de paquetes (e.g. tcpdump), lo que dejo para otro artículo futuro.
Notas
Por cierto, veo en tiempo de redacción que no hay ninguna entrada en la Wikipedia española para Netflow, así que si alguien se quiere animar…

