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 hacerlo funcionar. Hoy os vamos a enseñar a utilizar tcpdump, la mejor herramienta para capturar todo el tráfico a través de la línea de comandos en un 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 Ethernet, WiFi, interfaces PPPoE que hayamos levantado e incluso también interfaces virtuales como las que creamos al usar redes privadas virtuales. Este programa no solamente se encarga de capturar todo el tráfico, sino que también podemos analizarlo en tiempo real a medida que lo va capturando, todo ello a través de la línea de comandos.
tcpdump es compatible con todos los sistemas operativos basados en Unix, como Linux, BSD, macOS y muchos otros. Por supuesto, este programa hace uso de la biblioteca libpcap para capturar todos los paquetes que circulan a través de una interfaz en cuestión, ya sea física o virtual. Este programa para poder ejecutarlo en el sistema, es necesario tener permisos de superusuario, ya que estamos capturando y viendo tráfico de red que pudiese ser «sensible», por lo tanto, es necesario contar con privilegios de administrador.
Lo mejor que tiene tcpdump son los filtros, vamos a poder filtrar todo el tráfico para ver solamente lo que a nosotros nos interese. Los filtros son expresiones que van detrás de las opciones de captura, y nos permite mostrar solamente lo que estamos buscando 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 le podemos dar a una herramienta como tcpdump son los siguientes:
- Capturar toda la información y almacenarla para su posterior estudio.
- Depurar aplicaciones en tiempo real que usan la red para comunicarse.
- Comprobar que el tráfico de red es el esperado teniendo en cuenta su uso.
- Capturar y leer los datos de otros equipos de la red, aunque en este caso tendríamos que hacer técnicas como el ARP Spoofing o similar 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é nos puede servir, vamos a instalarlo en nuestro sistema operativo Linux para mostraros su funcionamiento.
TCPDump para empresas
La implementación de tcpdump en una empresa puede ser una estrategia efectiva para el monitoreo y análisis de tráfico de red. tcpdump es una herramienta de captura y análisis de paquetes de red que permite obtener información detallada sobre el tráfico que fluye a través de la red de la empresa. Nos ayudará de diferentes formas, pero debemos disponer de una ruta para su implementación.
- Instalación de TCPDump: Lo primero es instalar la herramienta tcpdump en los dispositivos apropiados de la red de la empresa. Tcpdump está disponible en la mayoría de los sistemas operativos y se puede instalar fácilmente desde los repositorios de paquetes o mediante la descarga del software oficial.
- Configuración de filtros de captura: Una vez que tcpdump está instalado, es importante configurar filtros de captura para especificar qué tipo de tráfico se desea analizar. Los filtros pueden basarse en direcciones IP, protocolos, puertos u otras características del tráfico de red. Estos filtros ayudan a limitar el volumen de datos capturados y a centrarse en áreas específicas de interés para la empresa.
- Captura de paquetes: Una vez que los filtros están configurados, se puede iniciar la captura de paquetes utilizando tcpdump . La herramienta comenzará a capturar y almacenar los paquetes de red que coincidan con los criterios especificados en los filtros. Es importante asegurarse de que los dispositivos utilizados para la captura de paquetes tengan suficiente capacidad de almacenamiento para manejar el flujo de datos capturados.
- Análisis de los datos capturados: Después de finalizar la captura de paquetes, se pueden analizar los datos obtenidos utilizando herramientas de análisis de paquetes compatibles con tcpdump , como Wireshark. Estas herramientas permiten examinar en detalle cada paquete capturado, incluyendo información sobre direcciones IP de origen y destino, protocolos utilizados, puertos, carga útil de datos y más. El análisis de estos datos puede proporcionar información valiosa sobre el rendimiento de la red, problemas de seguridad, patrones de tráfico y otros aspectos relevantes para la empresa.
- Interpretación de los resultados: Una vez que se han analizado los datos capturados, es importante interpretar los resultados de manera significativa para la empresa. Esto implica identificar patrones, anomalías, posibles problemas de rendimiento o seguridad, y tomar las acciones necesarias para abordarlos. Los datos capturados con tcpdump pueden ayudar a optimizar la red, mejorar la seguridad y tomar decisiones informadas sobre la infraestructura de la empresa.
Instalación en Debian y principales opciones
Este programa es muy utilizado en todos los sistemas operativos basados en Linux, por lo tanto, vamos a poder instalarlo directamente desde los repositorios oficiales de cada distribución. En el caso de Debian, tenemos que poner la siguiente orden en la terminal:
sudo apt install tcpdump
Nos saldrá algo así:
Una vez que lo tengamos instalado, podemos ejecutar la siguiente orden 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 utilización y toda la documentación, entonces podrás acceder a las páginas man de la siguiente forma:
man tcpdump
En estas páginas man podrás ver una extensa descripción de la herramienta, qué sintaxis debemos utilizar, qué opciones tenemos disponibles para capturar todos los datos y también para filtrar la información que nosotros queramos.
Ejemplos de uso
Este programa tiene una gran cantidad de opciones para capturar los datos y también para visualizarlos, además, tenemos la posibilidad de añadir una gran cantidad de filtros avanzados para que nos muestre solamente lo que queramos. A continuación, os vamos a explicar algunos comandos básicos para que captures solamente lo que te interese.
Uso básico
El siguiente comando nos permite arrancar el programa, si no especificamos ninguna interfaz de red, la propia herramienta elegirá una de las que estén disponibles en el sistema operativo.
tcpdump
Si queremos especificar una interfaz de red, debes poner la siguiente orden:
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 tienes que poner la siguiente orden:
tcpdump -i any
Cuando capturamos tráfico de red con tcpdump, es posible que no nos interese resolver los nombres de los hosts, sino que directamente nos muestre las direcciones IP. Para hacer esto, podemos poner:
tcpdump -n
Si quieres capturar solamente un cierto número de paquetes, entonces deberás poner la siguiente orden:
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, añadiremos más «v» detrás, de la siguiente forma:
tcpdump -i NOMBRE_INTERFAZ -vvv
Este último comando nos permite ver el máximo verbose posible.
Si queremos guardar la captura en un archivo, para posteriormente abrirlo con un analizador de paquetes como WireShark, o para su posterior análisis, debemos poner la siguiente orden:
tcpdump -i NOMBRE_INTERFAZ -w NOMBRE_ARCHIVO
Por supuesto, si queremos guardar todo con el máximo verbose, pondremos:
tcpdump -i NOMBRE_INTERFAZ -w NOMBRE_ARCHIVO -vvv
Capturando tráfico por IP o subred
tcpdump nos permite filtrar por direcciones IP e incluso subredes, para ello, podemos poner la siguiente orden:
tcpdump -i NOMBRE_INTERFAZ host IP
Por ejemplo, podríamos 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 forma:
tcpdump -i NOMBRE_INTERFAZ net SUBRED/X
A continuación, puedes ver un ejemplo de subred:
tcpdump -i NOMBRE_INTERFAZ net 192.168.1.0/24
También podríamos filtrar por origen y por destino, a continuación, puedes ver dos ejemplos:
tcpdump -i NOMBRE_INTERFAZ src IP
tcpdump -i NOMBRE_INTERFAZ dst IP
Con estas opciones, podremos filtrar fácilmente el tráfico que solamente queramos capturar y mostrar.
Capturando tráfico por puerto y rangos
En el caso de que quieras filtrar por puertos, ya sea un puerto únicamente o un rango de puertos, puedes hacerlo de la siguiente forma:
tcpdump -i NOMBRE_INTERFAZ port NUMERO_PUERTO
tcpdump -i NOMBRE_INTERFAZ portrange PUERTOINICIO PUERTOFIN
Todos estos comandos también se pueden añadir a tcpdump para filtrar por IP y puertos, e incluso también para guardar en un archivo pcap toda la captura de tráfico. De esta forma, podemos ir concatenando las diferentes opciones disponibles con los filtros que hayamos definido.
¿Es legal capturar los paquetes de una red?
Esta es la gran pregunta. Siempre y cuando se tratan los temas para capturar los datos de una red, siempre hay gente que se pregunta si es legal. Y esto es algo normal, sobre todo porque estas actividades arrojan gran cantidad de datos. Alguien con los conocimientos adecuados, puede llegar a tener información muy delicada de los usuarios que está utilizando la red. Lo cual, está claro que puede comprometer su seguridad y privacidad de muchas formas diferentes. Sobre todo, porque el primer paso para los atacantes siempre será buscar contraseñas de los servicios que se están utilizando.
Pero lo cierto es que la respuesta no es tan simple. Realmente estamos ante algo legal, no hay ningún problema en utilizar estas herramientas. Más bien, el problema y lo que cada usuario haga con la herramienta. Por lo cual, la responsabilidad es algo que recae directamente en el usuario. El uso que le quiera dar a la información que ha podido conseguir, es lo que va a definir si se trata de una actividad legal o no. Siempre y cuando se use con fines maliciosos, obviamente estamos ante algo ilegal.
Pero estas herramientas son muy útiles para administradores. Estas son de gran ayuda para detectar problemas en las redes de las empresas, o incluso a nivel doméstico. Por lo cual los administradores se apoyan mucho en ellas de cara a realizar mejoras, las cuales optimizan el funcionamiento de la red. Así como con fines de seguridad, para ver que todo va según lo esperado. Se trata de herramientas muy poderosas, por lo cual es muy común que sea utilizada en muchos de estos casos. También tenemos gran cantidad de alternativas, las cuales se pueden adaptar a muchos usuarios y necesidades diferentes, tanto gratuitas como de pago.
Conclusiones
tcpdump es la herramienta por excelencia para capturar paquetes de la red local con las interfaces que nosotros queramos, gracias a este programa, vamos a poder visualizar todo el tráfico de red a bajo nivel a través de la consola, y también podemos guardar las capturas de tráfico en nuestro disco duro o SSD siempre que queramos. Gracias a la gran cantidad de opciones de configuración y filtros, vamos a poder capturar solamente lo que nos interese, para su posterior análisis con programas como Wireshark o directamente a bajo nivel con tshark o similares.
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á ocurriendo y cómo lo podemos solucionar. Capturar tráfico de red es el primer paso para poder arreglar un problema a nivel de red, y en este caso, tcpdump será tu mejor aliado para solucionar todos los problemas.