Capturar el Tráfico de Red con Tcpdump y Wireshark

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

tcpdump es un software opensource disponible que tenemos 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

Wireshark es una herramienta gráfica que permite abrir el fichero que hemos generado con tcpdump para «unir» las conversaciones de los paquetes TCP y visualizar su contenido. Puedes descargar Wireshark desde este enlace.

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.

Rebajas
Crucial CT2000X8SSD9 X8-SSD portátil 2TB, de hasta 1050 MB/s, USB 3.2, Unidad de estado...
  • Rendimiento óptimo con velocidades de lectura de hasta 1050 MB/s
  • Funciona con Windows, Mac, iPad Pro, Chromebook, Android, Linux, PS4 y Xbox One con conectores USB-C 3.2 Gen2 y USB-A
  • Diseño hermoso y duradero, con un núcleo unibody de aluminio anodizado

Instalación de tcpdump en Linux CentOS 7

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:

Seagate Backup Plus Hub, 12 TB, Disco duro externo HDD, USB 3.0, PC y Mac, 2 puertos USB,...
  • Almacene y acceda a contenido durante los próximos años con 12 TB de espacio masivo en una unidad USB
  • Este concentrador una es unidad de disco duro para Mac y Windows que le permite cargar dispositivos móviles y transferir archivos desde cámaras USB y...
  • Utilice la unidad sin problemas entre Windows y Mac mediante la instalación del controlador NTFS para Mac
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

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

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

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.

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 comunicaciones que nos interesa

Pongamos por caso que 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 click 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

¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email
About Author

Contenido Relacionado

Artículos Recientes

Deja un comentario