Sonda Netflow con Raspberry y Pandora FMS

Netflow es un protocolo de red creado por Cisco, pensado para recolectar métricas del tráfico IP. Actualmente constituye un estándar ampliamente utilizado en monitorización de redes. Permite monitorizar y analizar el tráfico generado por una determinada IP, protocolo, software, etc., ya que permite aplicar filtros basados en dirección IP de origen y destino, y puerto de origen y destino. Su funcionamiento se basa en la utilización de varios componentes:

  • Un dispositivo con compatibilidad netflow, generalmente un hardware de red tipo switch o router, que genera paquetes de información, o bien una sonda netflow.
  • Un colector netflow, que recibe los paquetes generados por el dispositivo anterior, almacenándolos y procesándolos. Suele ser una herramienta o servidor con estas capacidades.

raspberry

En el artículo de hoy vamos a explicar cómo montar un entorno similar para la monitorización de netflow, utilizando como sonda un dispositivo Raspberry y como colector un servidor de Pandora FMS, que incluye las herramientas necesarias para el almacenamiento y análisis de información netflow, logrando así una estructura totalmente funcional de monitorización de red mediante el protocolo netflow por menos de 100€.

Instalación y preparación Raspberry

La Raspberry trae una ranura para tarjeta microSD, que utilizaremos para la instalación del sistema operativo Raspbian. Si hemos adquirido la microSD con la imagen NOOBS, podremos instalar el sistema raspberry1operativo directamente desde aquí. En caso contrario, debemos descargarlo de la web oficial y preparar una microSD por nuestra cuenta.

Cuando arrancamos la Raspberry con nuestra microSD preparada, un wizard nos guiará a través de la instalación, de forma muy sencilla avanzando por los pasos del wizard y completando la información necesaria (passwords, conexión wifi,etc.) en pocos minutos tendremos listo el sistema operativo y nuestro dispositivo para empezar a trabajar.

De momento, sea mediante cable o mediante wifi, vamos a dejar que la IP de nuestro dispositivo sea automáticamente otorgada por DHCP: nuestro router nos da una IP libre de forma automática. Más tarde explicaremos detalladamente la configuración de red que debemos seguir para trabajar en este escenario.


raspberry3

La versión utilizada en este artículo es Raspbian PIXEL, la versión de escritorio más reciente de Raspbian:

raspberry4

Una vez instalado nuestro sistema Raspbian y con acceso a Internet, vamos en primer lugar a actualizar los paquetes y repositorios, descargando nuevas versiones mediante:
apt-get update && apt-get upgrade

A continuación vamos a instalar los componentes necesarios para que pueda funcionar como sonda netflow: el paquete nfdump, que contiene fprobe, nfcapd y nfdump. Cada uno de estos componentes tiene una función específica que veremos a continuación.

Previamente descargaremos algunas herramientas necesarias:
apt-get install gcc flex librrd-dev make

Descargamos e instalamos el paquete nfdump (https://sourceforge.net/projects/nfdump/); vendrá comprimido en formato .tar.gz Debemos descomprimirlo y realizar la instalación tal y como se describe a continuación:

wget http://downloads.sourceforge.net/project/nfdump/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz
tar –zxvf nfdump-1.6.13.tar.gz
cd nfdump-1.6.13
./configure
make & make install

Ya tendremos todos los componentes necesarios para montar una sonda netflow en nuestra Raspberry, pero ¿qué hay del colector netflow? Será un servidor de Pandora FMS, cuya preparación describiremos más adelante en este artículo.


Monitorización de redes con Pandora FMS, el software de monitorización flexible

¿Quieres descubrir aún más acerca de la monitorización de redes?

Redes remotas, monitorización unificada, umbrales inteligentes… conoce la monitorización de red en la versión Enterprise de Pandora FMS


Configuración de la red y el entorno

En primer lugar habríamos situado la sonda en un punto de paso del tráfico de nuestra red, por lo que nos garantizaríamos recolectar todo el tráfico posible.

En nuestro caso, hemos conectado la raspberry a un puerto del switch de la oficina, que tiene hecho un “port mirroring” para que todo el tráfico pase por ahí, y así poder monitorizarlo. En el caso de nuestro switch Cisco Catalyst configurar esto es sencillo, pero se puede preparar un entorno igual conectando nuestra Raspberry a diferentes dispositivos como routers, firewall u otros switches, y cada aparato y tecnología tienen su propia forma de implementar esto, por lo que deberemos informarnos de cómo hacerlo para nuestro caso.

El esquema de red que vamos a preparar será el siguiente:

esquema_antonio

Para el switch Cisco debemos localizar el puerto al que está conectado nuestro router, y al que hemos conectado la raspberry; en nuestro caso, el Gi0/8 para el router y Gi0/16 para la sonda netflow.

Nos conectaremos al router por línea de comando mediante telnet:

telnet 192.168.50.252

<introducir credenciales>

enable

<introducir credenciales de administrador>

Y realizaremos el port mirroring de este modo:

configure terminal
monitor session 1 source interface Gi0/8
monitor sesión 1 destination interface Gi0/16

raspberry5

Podremos comprobar que ha quedado correctamente configurado ejecutando:

show monitor sesión 1

raspberry6

Además, si ejecutamos show interfaces status veremos el puerto de monitorización con la etiqueta “monitoring”:

raspberry7

Al estar utilizando la conexión Ethernet de nuestra raspberry para escuchar y recolectar información del tráfico, no podremos utilizar esta interfaz para conectarnos a ella y realizar las configuraciones y consultas que necesitemos, además de que no podrá utilizarla para reenviar la información de netflow al servidor de Pandora FMS que queramos. Es por esto que necesitaremos configurar también la conexión wifi para poder acceder por ssh y permitir a la raspberry comunicarse con el servidor de Pandora FMS.

raspberry8

Para facilitar el acceso y la gestión de nuestro dispositivo raspberry, vamos a configurar una IP estática para la interfaz wlan0, mientras que la dirección IP de la interfaz eth0 quedará deshabilitada para evitar cualquier tipo de conflicto, aunque la interfaz permanecerá escuchando.

En primer lugar configuraremos la IP estática de nuestra interfaz wlan0 editando el fichero /etc/network/interfaces de la siguiente forma (sustituir los parámetros para nuestra red):

raspberry9

Y deshabilitaremos la IP de la interfaz eth0 con el comando:

ip addr flush dev eth0

raspberry10

Preparadas las dos conexiones de nuestra raspberry, habilitaremos ip_forward mediante la siguiente ejecución:

echo “1” > /proc/sys/net/ipv4/ip_forward

Ahora ejecutaremos fprobe para que nuestra raspberry empiece a actuar como sonda de netflow. La ejecución en nuestro caso será:

fprobe –ieth0 –fip 192.168.70.114

En el primer parámetro, -ieth0, debemos sustituir eth0 por el nombre de la interfaz por la que pasará el tráfico, y en el segundo parámetro –fip utilizaremos la dirección IP hacia la cual queremos redirigir la información recolectada por la sonda.

Es importante implementar algún automatismo que garantice que nuestra sonda permanece funcionando en todo momento ante reinicios o detenciones de los procesos por cualquier motivo. Para lograrlo en este caso nos hemos valido de un pequeño script que comprueba que fprobe está corriendo, y si no está, lo ejecuta de nuevo. Este script lo situaremos en una tarea cron que se ejecute cada 5 minutos. El script netflow.sh tiene este contenido:

#!/bin/bash
check=`ps aux | grep fprobe | grep -v grep | wc -l`
if [ $check -eq 0 ]; then
/usr/sbin/fprobe -ieth0 -fip 192.168.70.41:9995
fi

Y para automatizar su ejecución cada 5 minutos:

echo "*/5 * * * * root /home/pi/netflow.sh" >> /etc/crontab

Es importante dar permisos de ejecución al script, o en su caso indicar el motor de ejecución a utilizar (sh).

Aunque este método ya nos garantiza la ejecución aunque el proceso se detenga de forma manual o en el arranque, podemos añadir la ejecución del script al fichero /etc/rc.local para que se lance al arrancar la raspberry.

Preparación colector netflow, Pandora FMS

Ahora debemos preparar el punto de recepción de paquetes netflow, que será un servidor de Pandora FMS con capacidad de procesar y utilizar esta información para presentarla en forma de gráficas.

Necesitaremos instalar el paquete nfdump del mismo modo que hicimos en la Raspberry, en primer lugar las utilidades necesarias:

yum install gcc flex librrd-dev make

En segundo lugar el paquete nfdump:

wget http://downloads.sourceforge.net/project/nfdump/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz
tar –zxvf nfdump-1.6.13.tar.gz
cd nfdump-1.6.13
./configure
make & make install

En caso de que nuestro Pandora FMS haya sido instalado mediante la ISO oficial, estos pasos no serán necesarios al venir ya estos componentes instalados por defecto.

Una vez instalado, nos valdremos de la utilidad nfcapd para abrir una vía de escucha y recibir la información de netflow enviada por nuestra sonda raspberry. El comando a emplear será el siguiente:

nfcapd –l /var/spool/pandora/data_in/netflow –D

Con el parámetro –l indicamos la ruta en la que almacenar esta información, que deberá coincidir con la configuración del apartado netflow en nuestra consola de Pandora, y el parámetro –D nos permite que se ejecute en segundo plano (modo daemon) para que siempre permanezca a la escucha de información netflow recibida desde la sonda.

Tras cierto tiempo, ya deberíamos poder ver información netflow en nuestro servidor de Pandora. Para comprobarlo basta con ejecutar:

nfdump –R /var/spool/pandora/data_in/netflow

Y veríamos algo así:

raspberry11

raspberry12

También debemos habilitar la visualización de netflow en el setup de nuestra consola de Pandora FMS para poder hacer uso de esta información, se encuentra en el apartado Setup ->

General:

raspberry13

Aparecerá una nueva sección en el Setup, para indicar algunos de los parámetros de netflow:

raspberry14

Es fundamental que el “Data storage path” coincida con el indicado al ejecutar nfcapd, ya que será este directorio del que Pandora leerá la información y construirá las gráficas.

Tendremos un nuevo elemento en el menú de vistas, “Netflow Live View”:

raspberry15

Desde aquí podremos observar y analizar toda la información disponible recibida desde nuestra sonda netflow, y podremos aplicar diferentes filtros para obtener información detallada. Los filtros básicos tienen una serie de campos tales como IP o puerto destino y origen, los filtros avanzados soportan expresiones de filtrado pcap:

raspberry16

raspberry17

La información puede mostrarse en diferentes tipos de gráficos y tablas. En la imagen anterior vemos la gráfica por defecto con el formato estándar de gráficas de Pandora FMS.

Pie graph:

raspberry18

Tablas:

raspberry19

raspberry20

Gráfica detallada, llevando el ratón sobre cualquier elemento mostrará detalles adicionales:

raspberry21

Cualquier filtro que utilicemos puede guardarse para utilizar posteriormente,  y serán también utilizados para construir los informes de netflow. Podemos poner estos filtros a disposición de usuarios con perfiles de visualización que no tengan acceso a realizar filtrados de forma manual.

Ejemplos prácticos

1. Mostrar tráfico de IPs con dirección destino 192.168.50.252, en un día:

raspberry22

2. Mostrar protocolos utilizados con dirección destino 192.168.50.252, en un día:

raspberry23

3. Mostrar 5 resultados de tráfico con puerto destino 80, en 1 hora:

raspberry24

4. Mostrar tráfico con puerto destino 80, en 1 hora, mostrar protocolo utilizado:

raspberry255. Mostrar 5 resultados de direcciones destino con origen 192.168.70.1, en un día:

raspberry26

Shares