Tcpdump: cómo usarlo para capturar el tráfico de red en su servidor

Si necesitas hacer un diagnóstico de todo el tráfico de red de tu conexión, ya sea local o de cara a Internet, es fundamental utilizar programas para capturar todo el tráfico y analizarlo posteriormente. Uno de los programas más populares es Wireshark, este programa es multiplataforma, compatible con Windows, Linux, macOS y muchos otros, sin embargo, necesitamos una interfaz gráfica de usuario para que funcione. Hoy te vamos a enseñar a usar tcpdump, la mejor herramienta para capturar todo el tráfico a través de la línea de comandos en una terminal.

Qué es tcpdump y para qué sirve

tcpdump es una herramienta completamente gratuita que nos permitirá capturar todo el tráfico de red de una o varias interfaces, ya sean interfaces Ethernet, WiFi, PPPoE que hayamos construido, e incluso interfaces virtuales como las que creamos al usar redes privadas virtuales. . Este programa no solo se encarga de capturar todo el tráfico, sino que también podemos analizarlo en tiempo real a medida que se captura, todo a través de la línea de comandos.

tcpdump es compatible con todos los sistemas operativos basados ​​en Unix, incluidos Linux, BSD, macOS y muchos otros. Por supuesto, este programa hace uso de la biblioteca libpcap para capturar todos los paquetes que fluyen a través de una interfaz en cuestión, ya sea física o virtual. Para poder ejecutar este programa en el sistema, es necesario tener permisos de superusuario, ya que estamos capturando y visualizando tráfico de red que podría ser “sensible”, por lo tanto, es necesario tener privilegios de administrador.

Lo mejor que tiene tcpdump son los filtros, podremos filtrar todo el tráfico para ver solo lo que nos interesa. Los filtros son expresiones que van detrás de las opciones de captura, y nos permiten mostrar solo lo que buscamos y no todo. Si no ponemos ningún filtro, veremos todo el tráfico de red del adaptador de red seleccionado.

Los principales usos que podemos darle a una herramienta como tcpdump son los siguientes:

  • Captura toda la información y guárdala para su posterior estudio.
  • Depure aplicaciones en tiempo real que utilizan la red para comunicarse.
  • Verifique que el tráfico de la red sea el esperado teniendo en cuenta su uso.
  • Captura y lee los datos de otros equipos de la red, aunque en este caso tendríamos que usar técnicas como ARP Spoofing o similares si estamos en un entorno conmutado y no estamos usando tcpdump en el router.

Una vez que hemos visto qué es tcpdump y para qué sirve, vamos a instalarlo en nuestro sistema operativo Linux para mostraros su funcionamiento.

Instalación en Debian y opciones principales

Este programa es muy utilizado en todos los sistemas operativos basados ​​en Linux, por lo que podremos instalarlo directamente desde los repositorios oficiales de cada distribución. En el caso de Debian , tenemos que poner el siguiente comando en la terminal:

sudo apt install tcpdump

Obtendremos algo como esto:

Una vez que lo tengamos instalado, podemos ejecutar el siguiente comando en la terminal para que nos muestre la ayuda:

tcpdump -h

En el caso de que necesites mucha más información sobre la herramienta, ver ejemplos de uso y toda la documentación, a continuación puedes acceder a las páginas man de la siguiente manera:

man tcpdump

En estas páginas de manual podrás ver una descripción extensa de la herramienta, qué sintaxis debemos usar, qué opciones tenemos disponibles para capturar todos los datos y también para filtrar la información que queramos.

ejemplos de uso

Este programa cuenta con una gran cantidad de opciones para capturar los datos y también para mostrarlos, además, tenemos la posibilidad de agregar una gran cantidad de filtros avanzados para que nos muestre solo lo que queremos. A continuación, te vamos a explicar algunos comandos básicos para que captures solo lo que te interesa.

uso básico

El siguiente comando nos permite iniciar el programa, si no especificamos ninguna interfaz de red, la propia herramienta elegirá una de las disponibles en el sistema operativo.

tcpdump

Si queremos especificar una interfaz de red, se debe poner el siguiente comando:

tcpdump -i NOMBRE_INTERFAZ

Si queremos especificar todas las interfaces de red, para capturar todo el tráfico de todas ellas a la vez, entonces hay que poner el siguiente comando:

tcpdump -i any

A la hora de capturar tráfico de red con tcpdump, puede que no nos interese resolver nombres de host, sino que nos muestre directamente las direcciones IP. Para ello podemos poner:

tcpdump -n

Si desea capturar solo una cierta cantidad de paquetes, debe colocar el siguiente comando:

tcpdump -c NUMERO_PAQUETES

Si queremos aumentar la información que nos muestra a través de la línea de comandos, debemos aumentar el “verbose” de la siguiente forma:

tcpdump -i NOMBRE_INTERFAZ -v

Si queremos aumentarlo más, agregaremos más “v” después, de la siguiente manera:

tcpdump -i NOMBRE_INTERFAZ -vvv

Este último comando nos permite ver lo más detallado posible.

Si queremos guardar la captura en un archivo, para luego abrirla con un analizador de paquetes como WireShark, o para su posterior análisis, debemos poner el siguiente comando:

tcpdump -i NOMBRE_INTERFAZ -w NOMBRE_ARCHIVO

Eso sí, si queremos guardarlo todo con el máximo de verbo, pondremos:

tcpdump -i NOMBRE_INTERFAZ -w NOMBRE_ARCHIVO

Captura de tráfico por IP o subred

tcpdump nos permite filtrar por direcciones IP e incluso subredes, para ello podemos poner el siguiente comando:

tcpdump -i NOMBRE_INTERFAZ host IP

Para examplepudimos ver el tráfico de la IP de localhost:

tcpdump -i NOMBRE_INTERFAZ host 127.0.0.1

También podemos filtrar por subredes de la siguiente manera:

tcpdump -i NOMBRE_INTERFAZ net SUBRED/X

A continuación puede ver un example subred:

tcpdump -i NOMBRE_INTERFAZ net 192.168.1.0/24

También podríamos filtrar por origen y destino, a continuación, puedes ver dos ejemplos:

tcpdump -i NOMBRE_INTERFAZ src IP tcpdump -i NOMBRE_INTERFAZ dst IP

Con estas opciones podemos filtrar fácilmente el tráfico que solo queremos captar y mostrar.

Captura de tráfico por puerto y rangos

En caso de que quieras filtrar por puertos, ya sea un solo puerto o un rango de puertos, puedes hacerlo de la siguiente manera:

tcpdump -i NOMBRE_INTERFAZ port NUMERO_PUERTO tcpdump -i NOMBRE_INTERFAZ portrange PUERTOINICIO PUERTOFIN

Todos estos comandos también se pueden agregar a tcpdump para filtrar por IP y puertos, e incluso guardar la captura de tráfico completa en un archivo pcap. De esta forma, podemos concatenar las distintas opciones disponibles con los filtros que hayamos definido.

Conclusiones

tcpdump es la herramienta por excelencia para la captura de paquetes de la red local con los interfaces que queramos, gracias a este programa podremos visualizar todo el tráfico de red a bajo nivel a través de la consola, y también podremos guardar las capturas de tráfico en nuestro disco duro o SSD cuando queramos. Gracias a la gran cantidad de opciones de configuración y filtros, podremos capturar solo lo que nos interese, para su posterior análisis con programas como Wireshark o directamente a bajo nivel con tshark o similar.

Si tienes problemas a nivel de red en tu red local o servidor, tcpdump te ayudará a saber qué tráfico está pasando por toda la red o el servidor en cuestión, y posteriormente estudiar en detalle qué está pasando y cómo podemos solucionarlo. Capturar el tráfico de red es el primer paso para solucionar un problema a nivel de red, y en este caso, tcpdump será tu mejor aliado para solucionar todos los problemas.

Related Posts