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.
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 batante 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.