Capturar el Tráfico de Red con Tcpdump y Wireshark

aff i?offer id=131&file id=2668&aff id=3675

¿Qué es tcpdump?

tcpdump es un software de código abierto disponible en todos los sistemas Linux con el cuál podremos capturar todo el tráfico de red de nuestro servidor. Tcpdump puede rastrear paquetes de red, leerlos, guardarlos y filtrarlos.

Admite una variedad de opciones para filtrar datos. Estas opciones reducen los datos capturados en una sesión, lo que hace que sea más fácil analizarlos y guardar los archivos capturados. Podemos especificar un nombre de host o dirección IP específico para filtrar, entre otras opciones.

tcpdump puede ser útil para diagnosticar problemas de red, comprobar el nivel de integridad de la seguridad de la red o simplemente para ver qué está pasando en una red. tcpdump funciona en modo interactivo, lo que significa que los paquetes se muestran en pantalla a medida que se capturan. Esto hace que tcpdump sea ideal para la monitorización en tiempo real, ya que permite que el administrador de red vea los paquetes que circulan por la red y detecte cualquier actividad sospechosa.

tcpdump está disponible gratuitamente bajo la licencia GNU GPL y se encuentra en el repositorio de código abierto de SourceForge. tcpdump es compatible con Linux, BSD, Mac OS X y Windows.

Necesitaremos ser root usar tcpdump.

¿Qué es Wireshark?

Wireshark es una herramienta con interfaz gráfica, que permite captruar el tráfico de red o abrir el fichero pcap que hemos generado anteriormente con tcpdump para «unir» las conversaciones de los paquetes TCP y visualizar su contenido. Puedes descargar Wireshark desde este enlace. Wireshark también trae su propia línea de comandos por si no queremos utilizar tcpdump.

Esta herramienta de análisis de paquetes de datos permite ver la fuente, el destino y el protocolo de los paquetes. También puede mostrar la longitud del paquete de datos. Su código libre y abierto.

  Crear un usuario y una contraseña de SNMP

Hay muchos complementos y programas externos disponibles para mejorar su experiencia de Wireshark. Por ejemplo, podemos usar el visor de tiempo de respuesta para analizar los tiempos de respuesta de la red. También podemos usar el Monitor de rendimiento de la red (NPM) para detectar problemas de red en tiempo real.

Otra ventaja de Wireshark es su capacidad para resaltar ciertos paquetes. Esto facilita la lectura del tráfico capturado. La aplicación también tiene una característica que nos permite identificar patrones de ataque conocidos. 

Por lo tanto, tcpdump como Wireshark son herramientas gratuitas que nos permiten analizar el tráfico de red.

Veamos el siguiente tutorial de Wireshark y tcpdump para saber cómo manejarlos conjuntamente para el análisis de los paquetes de nuestra red.

Es importante conocer que tcpdump puede generar ficheros muy grandes con unos pocos minutos de captura de datos, por lo que es recomendable utilizar siempre filtros. Por ejemplo, por una tarjeta de red en concreto, por una IP de origen y destino o por un puerto específico.

Instalación de tcpdump en Linux

Para los que me seguís, ya sabéis que soy un usuario habitual de Linux RedHat y Centos. Para instalar tcpdump en Centos, lo haremos con el siguiente comando:

yum install tcpdump

Ejemplo de uso de tcpdump

[root]# tcpdump -ni eth0 -s0 -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C91447 packets captured
92175 packets received by filter
633 packets dropped by kernel
[root]#

IMPORTANTE: tcpdump lo debe lanzar el usuario root o con privilegios de root mediante sudo.

Si lo necesitamos, también podemos lanzar un tcpdump contra un puerto:

[[email protected] ~]# traceroute 192.168.47.162 -T -p 8080
traceroute to 192.168.47.162 (192.168.47.162), 30 hops max, 60 byte packets
1  10.48.0.2 (10.48.0.2)  0.701 ms  0.908 ms  1.020 ms
2  169.254.128.4 (169.254.128.4)  4.550 ms  4.533 ms  4.525 ms
3  172.17.8.2 (172.17.8.2)  5.641 ms  5.609 ms  5.579 ms
4  * * *
5  10.17.60.1 (10.17.60.1)  5.280 ms  5.258 ms  5.295 ms
6  10.8.17.169 (10.8.17.169)  5.372 ms  3.366 ms  3.270 ms
7  10.8.17.233 (10.8.17.233)  3.756 ms  1.756 ms  2.105 ms
8  10.1.128.14 (10.1.128.14)  1.988 ms  1.970 ms  2.261 ms
9  10.1.128.14 (10.1.128.14)  4.473 ms  2.394 ms  2.634 ms
10  10.8.4.174 (10.8.4.174)  2.832 ms  2.408 ms  3.072 ms
11  * * *
12  192.168.47.162 (192.168.47.162)  1.738 ms  1.782 ms  1.479 ms

Comprar cables de red Ethernet de alta velocidad

Instalación de Wireshark

Dependiendo de la versión de sistema operativo que tengas, cambiará el comando de instalación. En mi caso, suelo utilizar Linux RedHat o CentOS y wireshark ya figura en sus repositorios estándars.

  Configuración del Proxy Squid

El comando de instalación de Wireshark en RedHat y CentOS es:

dnf install -y wireshark

Si deseamos instalar la línea de comandos de Wireshark:

dnf install wireshark-cli

Arrancaremos Wireshark con el comando tshark.

Filtros útiles que podemos configurar en Wireshark

Filtros de wireshark

Filtrando por varios puertos

tcp.port eq 80 or icmp

Mostrar sólo el tráfico de la red (192.168.x.x) y cualquier IP destino de la misma red

ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16

Filtrar por IP origen o IP destino

ip.src == 192.168.20.10 or ip.dst == 192.168.20.10

También podemos descartar el tráfico de una IP:

ip.src != 192.168.20.10 or ip.dst != 192.168.20.10

Filtros útiles para tcpdump que nos ayudarán a focalizar el tráfico de red que nos interesa

Filtrando por interfaz de red

En esta caso, por la interfaz eth0:

tcpdump -ni eth0 -v

Si añadimos el parámetro «-v» nos dará más información.

Filtrando por puerto

tcpdump -ni eth0 -s0 -v port 80 -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap

Filtrando por protocolo

tcpdump -ni eth0 -s0 udp -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap

Filtrando por IP origen

tcpdump -ni eth0 -s0 host 10.10.1.1 -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap

Filtrando por IP de destino

tcpdump -ni eth0 -s0 dst 10.10.1.1 -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap

Filtrando por IP y puerto destino

tcpdump -ni bond1 port 2049 and dst 10.49.40.107 -v -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap

Excluir un protocolo de red

Si queremos capturar todo el tráfico menos el de ICMP (ping), utilizaremos el siguiente comando:

tcpdump -ni eth0 not icmp

Incluir sólo un protocolo de comunicaciones

Si sólo queremos capturar, por ejemplo, todo el tráfico del protocolo UDP, utilizaremos el siguiente comando:

tcpdump -ni eth0 udp

Analizar la captura de paquetes de red con Wireshark

Desde el entorno gráfico de Wireshark también podemos capturar el tráfico de red que queramos configurando los filtros que nos interesen, tal y como podemos ver en el siguiente vídeo.

Vídeo demostrativo del funcionamiento de Wireshark

Con tcpdump hemos capturado el tráfico de red que deseamos analizar y hemos generado un fichero pcap que podemos abrir con Wireshark. Por ejemplo, antes veíamos el comando:

tcpdump -ni eth0 -s0 -w /tmp/capture_$(hostname)_$(date +%Y%m%d).pcap

El aspecto que tendría este fichero en Wireshark sería el siguiente:

Captura de trafico de red con Wireshark

Como podemos observar, tenemos todo el diálogo de conversaciones de red, algo muy útil para averiguar, por ejemplo, por qué no llegamos a un puerto de destino (puede que esté abierto el tráfico sólo en un sentido, o que lo corte un firewall, o que falte alguna ruta…).

  • Primera columna: Muestra el orden en que van llegando los paquetes.
  • Segunda columna: Muestra el tiempo transcurrido que ha tardado en llegar el siguiente paquete, en segundos. Ideal para detectar problemas de lentitud.
  • Tercera columna: IP origen que envía el paquete de red.
  • Cuarta columna: IP destino a donde se envía el paquete de red.
  • Quinta columna: Indica el protocolo de red utilizado.
  • Sexta columna: Nos muestra el tamaño del paquete enviado.
  • Séptima columna: Nos da información sobre la operativa que se está enviando y/o su resultado.
  Configuración de un Servidor FTP con vsftp en Linux

En wireshark también podemos crear filtros en función de los datos que nos interese visualizar, con el objetivo de minimizar la cantidad de datos que aparecen en el fichero pcap y que sea más fácil su análisis.

Filtros de Wireshark

Seguir el flujo de la conversación de red que nos interesa

Pongamos por caso que de todo el tráfico capturado, sólo nos interesa seguir el flujo de la conversación entre los paquetes de TCP desde una maquina local hacia una IP y puerto remota. Por ejemplo, el puerto SSH (22).

Para ello, hacemos clic con el botón derecho del ratón encima del primer paquete TCP que nos interesa, le damos al menú Seguir y luego flujo TCP.

Seguir la conversacion TCP con Wireshark

Lo que conseguiremos con esto será filtrar únicamente los paquetes TCP relacionados con esa conversación, lo que nos facilita mucho la vida a la hora de interpretar el archivo pcap.

Conversacion TCP filtrada con Wireshark

¿Para qué se usan tcpdump y Wireshark?

Por mi experiencia profesional como administrador de Linux, tcpdump y wireshark los utilizamos cuando tenemos problemas de red y no queda claro el motivo.

Es típico tener bien configuradas las rutas de un servidor de Linux y las reglas de firewall abiertas para llegar a una IP y puerto destino pero, por alguna razón desconocida, no llegamos.

Con tcpdump y wireshark descubrimos en qué punto de la red no está pasando el tráfico, lo que facilita mucho el análisis por parte de los técnicos de telecoumunicaciones.

Un gran porcentaje de las veces, el problema se debe a que falta configurar una ruta en la configuración de un router.

Espero que con este tutorial de la combinación de Wireshark y tcpdump te haya podido ayudar a resolver tus problemas de red y hacerla más segura.

Con las técnicas que hemos aprendido, también podemos utilizar Wireshark para otros propósitos como, por ejemplo, para encontrar la dirección IP de un dispositivo desconocido o el análisis de un protocolo específico de red.

Te puede interesar

Configuración de la red en Linux

Compárteme

Contenido Relacionado

Hosting SSD

Deja un comentario