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.
Si estás interesado en usar una herramienta de análisis de red, lo cierto es que esta opción open source puede ser una de las opciones más populares, ya no solo porque pueda usarse tanto en distribuciones Linux, sino porque ofrece todo tipo de usos. Por esto mismo, en RedesZone vamos a explicar para qué sirve exactamente, además de cómo se tiene que configurar en tu equipo para que puedas hacer uso de esta herramienta cuando quieras.
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.
Por otro lado, uno de los puntos clave de esta alternativa es que 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.
Para que puedas hacer una idea que función realiza esta herramienta open source hay que tener en cuenta que hace como ‘sniffing’, es decir, se usa para monitorizar redes. Y 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 usos de TCPDump
Esta herramienta tiene varios usos. Si todavía no conoces cuáles son, aquí puedes encontrar los principales usos que le podemos dar a una herramienta como tcpdump. Por tanto, la utilidad de esta herramienta en concreto es la siguiente:
- 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. Por lo que es realmente útil si quieres gestionar tus redes y conocer cuál es el tráfico en el caso de que quieres identificar posibles problemas de conexión.
- 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. Permite conocer de manera más detallada los paquetes que se generan.
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. Lo que debes tener en cuenta es que se usa desde la línea de comandos del sistema operativo de tu equipo.
Desventajas de TCPDump
Aunque TCPDump es una herramienta bastante interesante, tiene una serie de desventajas que, sino estamos familiarizados con ellas, pueden ser importantes.
- Interfaz de línea de comandos: No tiene una interfaz gráfica, lo que puede ser complicado para usuarios menos experimentados o para quienes prefieren algo más intuitivo.
- Curva de aprendizaje: Aunque es muy flexible, su sintaxis puede ser compleja, especialmente al crear filtros avanzados. Esto, unido a su interfaz de comandos, puede ser clave para que esos usuarios principiantes no se decidan por ella.
- Limitado a la captura de paquetes: TCPDump captura y muestra datos, pero no ofrece funciones avanzadas de análisis o reconstrucción de sesiones como otras herramientas (por ejemplo, Wireshark, que incluso tenemos para Android).
- No es ideal para análisis en tiempo real: Aunque muestra los paquetes a medida que se capturan, no ofrece visualizaciones en tiempo real que faciliten la detección de patrones o anomalías rápidamente.
- Salida difícil de interpretar: La información presentada es muy técnica y puede ser difícil de interpretar sin un conocimiento de protocolos de red, es decir, volvemos a los primeros puntos, si no tienes experiencia en este tipo de herramientas, puede resultarte complejo.
- Problemas de rendimiento: Capturar grandes volúmenes de tráfico puede consumir muchos recursos del sistema y afectar el rendimiento, especialmente en redes de alta velocidad, por lo que habrá que tener en cuenta el hardware del equipo.
- Seguridad y permisos: Necesita permisos de superusuario (root) para capturar paquetes en la mayoría de las interfaces, lo que puede ser un riesgo de seguridad si no se maneja adecuadamente (algo similar a ejecutar algo en modo administrador de Windows, donde tienes todo tipo de permisos). Estaríamos generando una posible brecha de entrada a cierto tipo de ataques.
- Falta de soporte para ciertos protocolos: Aunque soporta una amplia variedad de protocolos, no siempre interpreta correctamente protocolos más nuevos o menos comunes, por lo que habrá que tenerlo en cuenta dependiendo de nuestras necesidades.
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. Ten en cuenta que este tipo de herramienta se puede descargar directamente desde su página y compilarlo posteriormente. Aunque, esto es en el caso de que tu distribución no tuviera esta herramienta en sus repositorios, algo que resulta bastante extraño.
- Por lo tanto, 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. Por otra parte, si usas una distribución basada en RPM, debes tener en cuenta que se puede instalar con YUM, o incluso, usando DNF en RHEL 8.
- Por lo tanto, el uso básico de esta herramienta en concreto lo cierto es que no implica ningún tipo de complejidad. Hay que hacer uso del comando que hemos especificado para poder tener acceso a las diferentes herramientas que ofrece desde nuestro equipo.
- 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.
- Opciones más avanzadas
- Además de los anteriores usos, también se pueden llegar a usar opciones más avanzadas con tal de poder afinar aún más la captura de tráfico de red. Por tanto, si en tu caso te interesa hacer uso de estas funcionalidades más avanzadas, debes conocer las siguientes alternativas que son útiles de usar en cualquier momento:
- -A: consigue que se muestren los datos de paquetes capturados como texto ASCII.
- -X: en este caso hace que sea posible mostrar los datos de paquetes que se hayan capturado en formato hexadecimal y ASCII.
- -vv: con este se sube el nivel de las palabras para conseguir mostrar más detalles sobre cada uno de los paquetes que se hayan podido capturar. Es decir, muestra información adicional, entre lo que se incluye los parámetros de las cabeceras de protocolo.
- -w: en este caso, se escribe para permitir el guardado de la salida en un archivo con formato pcap.
- ¿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. Por lo tanto es una de las primeras alternativas que se deben usar en caso de querer capturar paquetes de la red local en cualquier momento.
- Y es que, hay que tener muy claro que 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. De esta manera, posteriormente, ya podremos estudiar en detalle qué está ocurriendo y cómo lo podemos solucionar. Por lo que es un factor clave para solucionar problemas. Así con esta herramienta se puede capturar tráfico de red, un factor que se convierte en 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.