miércoles, junio 28, 2017

Configurando Cisco NetFlow y usándolo con ntop

NetFlow es una característica del sistema operativo IOS bajo el que funcionan los routers de Cisco que permite la recolección de toda una serie de características relativas al tráfico IP que pasa por el router donde lo hayamos configurado. Nos permite hacer toda una estadística de uso de la red según protocolos, destinos, puertos y muchos otros parámetros que, usada correctamente, nos permitirán optimizar y securizar la red que estemos analizando.

La unidad básica de NetFlow es el flujo (flow), que consiste sencillamente en una corriente unidireccional de paquetes que van de una fuente a un destino y que comparten ciertos campos como IP destino, IP fuente, número de puerto fuente y destino, el protocolo de capa 3 que utilizan... Una arquitectura típica de monitorización de NetFlow consta de un exportador de NetFlow (el router), un colector de NetFlow (el servidor al que se envían los datos de los flujos) y un software de análisis para procesar y presentar los datos. Una aplicación popular y gratuita para recolección y análisis sencillos de flujos es ntop, que funciona como recolector de flujos entre otras muchas cosas. Se puede descargar para varios sistemas operativos en Get Started.

Veamos un ejemplo de configuración de NetFlow en un router Cisco para prepararlo para el envío de flujos a un servidor y la posterior configuración de ntop en sí para analizar el tráfico recibido.

Configurando NetFlow


Los comandos se aplican por interfaz para decidir si se van a transmitir flujos entrantes, salientes o ambos, y en modo global para indicar a qué IP se van a enviar, a qué puerto UDP (en el que va a estar escuchando el servidor al que enviemos los flujos) y la versión de NetFlow con la que queremos transmitir la información.

En nuestro ejemplo el receptor de NetFlow será el servidor con IP 192.168.1.33 y el puerto UDP al que enviar el tráfico será 2055, usado por defecto por ntop para escuchar NetFlow. Usaremos la versión 9. Aunque es obvio, no sobra recordar que desde el router debemos poder llegar al servidor a nivel de red. Los comandos serían los siguientes:

R3#conf t
 

Enter configuration commands, one per line.  End with CNTL/Z.

R3(config)#interface fastEthernet 1/0
R3(config-if)#ip flow ingress
R3(config-if)#ip flow egress
R3(config-if)#exit
 

R3(config)#ip flow-export destination 192.168.1.33 2055
R3(config)#ip flow-export version 9


Con estos comandos elegimos enviar flujos de entrada y salida hacia 192.168.1.33, puero 2055, mediante la interfaz fastEthernet 1/0 (que tiene la IP 192.168.80.129) y usando la versión 9 de NetFlow.

Podemos verificar la configuración y algunos parámetros más, como flujos enviados hasta el momento, con el comando "show ip flow export":

R3#show ip flow export
Flow export v9 is enabled for main cache
  Export source and destination details :
  VRF ID : Default
    Destination(1)  192.168.1.33 (2055)
  Version 9 flow records
  22 flows exported in 8 udp datagrams
  0 flows failed due to lack of export packet
  0 export packets were sent up to process level
  0 export packets were dropped due to no fib
  0 export packets were dropped due to adjacency issues
  0 export packets were dropped due to fragmentation failures
  0 export packets were dropped due to encapsulation fixup failures


Configurando ntop


Tras instalar y poner en marcha ntop podemos acceder a la interfaz de gestión abriendo en un navegador la IP de loopback contra el puerto 3000: http://127.0.0.1:3000

Aunque la configuración de ntop se sale de este artículo, la versión que hemos probado e instalado es la 3.0.170606 sobre Windows 10 x64. Para arrancar ntop es necesario arrancar primero el servidor Redis (redis-server.exe):

cd C:\Program Files\Redis

C:\Program Files\Redis>redis-server
[6236] 28 Jun 02:35:09 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'
[6236] 28 Jun 16:35:09 * Server started, Redis version 2.4.6
[6236] 28 Jun 16:35:09 # Open data file dump.rdb: No such file or directory
[6236] 28 Jun 16:35:09 * The server is now ready to accept connections on port 6379
[6236] 28 Jun 16:35:10 - 0 clients connected (0 slaves), 1179896 bytes in use
[6236] 28 Jun 16:35:15 - 0 clients connected (0 slaves), 1179896 bytes in use
[6236] 28 Jun 16:35:20 - 0 clients connected (0 slaves), 1179896 bytes in use
.
.
.


 Luego es necesario arrancar el servicio ntopng que se instala en Windows:



Arrancamos finalmente ntopng.exe por línea de comando:

C:\Program Files\ntopng>ntopng.exe /h

Unrecognized option: /h
Available options:
/i [ntopng options] - Install ntopng as service
/c                  - Run ntopng on a console
/r                  - Deinstall the service
/h                  - Prints this help

Usage: type ntopng /c -h

C:\Program Files\ntopng>ntopng.exe /c
Starting ntopng
Running ntopng.
28/Jun/2017 16:41:24 [Prefs.cpp:1143] Logging into C:\Users\Documents\ntopng\ntopng.log
28/Jun/2017 16:41:24 [Ntop.cpp:1359] Setting local networks to 127.0.0.0/8
28/Jun/2017 16:41:24 [Redis.cpp:109] Successfully connected to redis 127.0.0.1:6379@0
28/Jun/2017 16:41:24 [NtopPro.cpp:144] [LICENSE] Read license from Redis []
28/Jun/2017 16:41:24 [NtopPro.cpp:196] ERROR: [LICENSE] Invalid or missing ntopng License [Empty license file]
28/Jun/2017 16:41:24 [NtopPro.cpp:209] WARNING: [LICENSE] ntopng will now run in enterprise edition for 10 minutes
28/Jun/2017 16:41:24 [NtopPro.cpp:211] WARNING: [LICENSE] before returning to community mode
28/Jun/2017 16:41:24 [NtopPro.cpp:212] WARNING: [LICENSE] You can buy a permanent license at http://shop.ntop.org
28/Jun/2017 16:41:24 [NtopPro.cpp:213] WARNING: [LICENSE] or run ntopng in community mode starting
28/Jun/2017 16:41:24 [NtopPro.cpp:214] WARNING: [LICENSE] ntopng --community
28/Jun/2017 16:41:25 [PcapInterface.cpp:86] Reading packets from interface .

.
.
.
28/Jun/2017 16:41:27 [NetworkInterface.cpp:2045] Started packet polling on interface {F40B0BE5-8486-492C-8C68-FE386AA20A4E} [id: 0]...
28/Jun/2017 16:41:27 [NetworkInterface.cpp:2045] Started packet polling on interface {73A04791-3A11-4D3A-B39F-DCAEBDDC1E59} [id: 1]...
28/Jun/2017 16:41:27 [NetworkInterface.cpp:2045] Started packet polling on interface {B79A43B6-5612-441A-8CD1-9A53DC90BDC0} [id: 2]...
28/Jun/2017 16:41:27 [NetworkInterface.cpp:2045] Started packet polling on interface {809C3614-1C19-4042-B021-8A9CFB35B4EA} [id: 3]...

.
.
.

Si ahora accedemos a http://127.0.0.1:3000/ veremos la intefaz de login de ntop:



Entramos con las credenciales por defecto (admin - admin). Nos pedirá cambiar la clave por defecto. Le ponemos cualquiera que queramos:




Ya estamos dentro de ntop. Podemos generar algo de tráfico de la manera que queramos (ICMP, mediante ftp, telnet, cualquier otra aplicación/protocolo...) y ver cómo se refleja en la interfaz gráfica, donde podremos seleccionar los flujos por host, protocolo...



No hay comentarios:

Publicar un comentario