GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplos útiles de tcpdump Linux para el administrador de red

Como administrador de red, la solución de problemas de red es parte de su día a día. Una herramienta indispensable cuando se trabaja en problemas relacionados con la red es el comando tcpdump de Linux.

Este tutorial lo guiará a través de algunos ejemplos del mundo real de cómo tcpdump puede ayudarlo a diagnosticar problemas de red comunes. Al final de este tutorial, comprenderá mejor cómo aprovechar tcpdump para solucionar sus propios problemas de red.

Requisitos

Este tutorial será una demostración práctica. Si desea seguir, asegúrese de tener una máquina Linux. Este tutorial usa Ubuntu 20.04, pero cualquier distribución de Linux moderna funcionará.

Instalación de la herramienta Linux tcpdump

La mayoría de las distribuciones modernas de Linux, especialmente los servidores, ya tienen tcpdump. Pero si no, no se preocupe porque la instalación es fácil y rápida.

1. Inicie sesión en su computadora Linux usando su cliente SSH preferido.

2. Primero, verifique si tcpdump ya está instalado ejecutando el siguiente comando.

sudo apt list --installed tcpdump

Si tcpdump existe en su máquina, verá un resultado similar al de la siguiente captura de pantalla.

Si tcpdump no existe, obtendrá el siguiente resultado.

3. Una vez que haya confirmado que tcpdump no está instalado, ejecute los siguientes comandos para instalarlo.

# Update the package index
sudo apt update -y

# Install tcpdump
sudo apt install tcpdump -y

4. Finalmente, verifique la versión de tcpdump instalada ejecutando el siguiente comando.

tcpdump --version

Al momento de escribir este artículo, la última versión de tcpdump del repositorio de Ubuntu es 4.9.3.

Captura de tráfico de paquetes en la interfaz predeterminada

El uso principal de tcpdump es capturar paquetes. Gracias a la biblioteca pcap, la herramienta puede capturar paquetes de diferentes tipos de redes, como Ethernet, Wi-Fi, PPP, etc.

La sintaxis de la forma básica del comando tcpdump es la siguiente.

tcpdump [options] [expression]

donde:

  • options :establece varias opciones de tcpdump. Las opciones controlan cómo tcpdump captura y muestra los paquetes.
  • expression :filtra o especifica qué tipo de tráfico capturar. Las expresiones se analizan con mayor detalle más adelante en este tutorial.

El caso de uso más básico para tcpdump es capturar todo el tráfico en su interfaz de red predeterminada y mostrar los datos en la salida estándar.

Ejecute el tcpdump comando sin opciones ni expresiones para capturar todo el tráfico en su interfaz predeterminada.

sudo tcpdump

Debe ejecutar tcpdump como root o con el prefijo sudo porque acceder a las interfaces de red es una operación privilegiada.

El tcpdump La herramienta captura paquetes e imprime la salida en el terminal, como se muestra a continuación. Cuando crea que ha capturado suficientes paquetes, presione CTRL+C para detener la captura.

Limitación del número de capturas de paquetes

Los tcpdump El comando de Linux puede abrumar rápidamente su terminal con la salida, y es mejor capturar solo una pequeña cantidad de datos a la vez.

Puedes incluir el -c opción para especificar el número de paquetes tcpdump debe capturar antes de salir. Esta opción a menudo se aplica cuando solo desea capturar una pequeña cantidad de datos para el análisis.

Para hacerlo, ejecute el siguiente comando y cambie el número después del -c opción. Este ejemplo captura hasta 10 paquetes solamente y finaliza automáticamente.

sudo tcpdump -c 10

Aumento de la verbosidad

Durante la captura de paquetes, es posible que, en ocasiones, la salida predeterminada no contenga o muestre información detallada. Afortunadamente, la herramienta tcpdump de Linux le ofrece tres niveles de detalle representados por los indicadores -v, -vv y -vvv.

Al usar estas opciones, tcpdump analiza e imprime mucha más información para cada paquete, como tiempo de vida (TTL), identificación, etc.

# Verbose
sudo tcpdump -v

# Even more verbose
sudo tcpdump -vv

# Most verbose
sudo tcpdump -vvv

Para una mejor perspectiva, consulte las imágenes a continuación que comparan la diferencia en detalle entre -v y -vvv .

Captura de paquetes en una interfaz específica o en todas

En el ejemplo anterior, tcpdump estaba capturando paquetes en la interfaz de red predeterminada, lo que significa que solo tiene una interfaz en mente. Pero, ¿qué sucede si tiene varias interfaces y desea capturar el tráfico en una interfaz específica o en todas las interfaces?

El comando tcpdump de Linux le permite especificar qué interfaz de red capturar usando el indicador -i. Esta bandera acepta el nombre de la interfaz como valor, lo que significa que primero debe conocer el nombre de la interfaz.

1. Ejecute el comando tcpdump con la opción -D para imprimir una lista de todas las interfaces disponibles en la máquina.

sudo tcpdump -D

Como puede ver a continuación, hay siete interfaces en esta máquina. Su computadora puede tener un conjunto diferente de interfaces de red. Este ejemplo se enfoca solo en las interfaces de red ethernet, específicamente eth0 y eth1.

2. A continuación, ejecute el siguiente comando para comenzar a capturar paquetes en la interfaz específica que desee. Este ejemplo captura la interfaz eth1. Además, para limitar la cantidad de paquetes capturados, el siguiente comando usa el indicador -c seguido del conteo.

sudo tcpdump -i eth1 -c 5

3. En lugar de especificar una interfaz, también puede capturar paquetes en todas las interfaces simultáneamente. Para hacerlo, establezca any como el valor del parámetro para -i.

sudo tcpdump -i any -c 5

¿Por qué querría capturar paquetes en todas las interfaces? Aquí hay algunas razones comunes.

Por un lado, capturar el tráfico en todas las interfaces le permite ver todo el tráfico que pasa por su sistema, incluso si no está destinado a su sistema.

Además, puede ver qué servicios y protocolos pasan por su red. Esta información puede ser útil al configurar reglas de firewall u otras medidas de seguridad, especialmente al crear nuevos servidores.

Agregar filtros al comando tcpdump de Linux

La captura salvaje de paquetes no siempre es el mejor enfoque. La cantidad de datos puede volverse confusa y dificultar la solución de problemas. ¿Por qué? Porque puede estar capturando tráfico que no es relevante para la situación.

Los filtros son útiles en estas situaciones. La herramienta tcpdump tiene muchos filtros integrados para capturar tipos específicos de tráfico. Puede combinar estos filtros para capturar solo el tráfico relevante. A continuación se muestran algunos ejemplos.

Filtrado por número de puerto

Por ejemplo, si está solucionando un problema con el servidor SSH, probablemente no le importen otros tipos de tráfico que pasan a través de su red.

Ejecute el siguiente comando para capturar todo el tráfico destinado al puerto 22 , el puerto SSH predeterminado.

sudo tcpdump -c 5 port 22

Como puede ver, la herramienta solo capturó el tráfico del puerto 22 como origen o destino.

¿Qué tal si solo te interesa el tráfico HTTP? Solo necesita reemplazar el número de puerto con su puerto HTTP, que por defecto es el puerto 80.

sudo tcpdump -c 1 port 80

Nota:La herramienta tcpdump es lo suficientemente inteligente como para reconocer nombres de protocolos de servicio en lugar de números de puerto. Por ejemplo, en lugar de especificar el puerto 22 para filtrar el tráfico SSH, puede especificar el puerto ssh en su lugar. Lo mismo ocurre con el puerto 80 para tráfico HTTP, puerto http.

Filtrado por protocolo

No dejes que el nombre tcpdump engañarlo pensando que solo funciona con tráfico TCP. Esta herramienta también puede capturar tráfico que no sea TCP como ICMP o UDP.

Por ejemplo, el siguiente comando captura paquetes de cualquier interfaz pero solo filtra el tráfico UDP.

sudo tcpdump -i any -c 5 udp

Como resultado, los siguientes resultados muestran solo tráfico UDP, que parece ser paquetes sobre operaciones NTP y DNS.

¿Qué sucede si solo necesita capturar el tráfico relacionado con el DNS? En ese caso, puedes combinar los filtros udp y port 53 . De esta forma, la salida prevista solo debería mostrar paquetes relacionados con DNS.

sudo tcpdump -i any -c 5 udp port 53

Esta vez, solo capturó el tráfico relacionado con DNS (A, PTR, búsqueda y respuesta AAA) restringido al protocolo de transporte UDP.

¿Sospecha que se está produciendo un ataque de ping flood en su red? ¿Por qué no intentas encontrar el origen y el destino usando tcpdump? ? Para hacerlo, ejecute el siguiente comando para escuchar en cualquier interfaz el tráfico ICMP.

El -n El indicador evita que tcpdump intente resolver los nombres de host y, en su lugar, muestra las direcciones IP. En este tipo de situación, omitir la resolución de nombres puede mejorar el rendimiento.

sudo tcpdump -n -i any icmp

Es posible que ya te hayas dado cuenta de que el tcpdump Los filtros son potentes y flexibles. Al combinar diferentes filtros, puede capturar el tráfico relevante para el resultado deseado.

Para obtener más información sobre los filtros tcpdump, consulte la página del manual de tcpdump.

Almacenamiento de paquetes capturados en un archivo en disco

Mostrar capturas de paquetes en la pantalla sobre la marcha está bien para capturas cortas. Pero si está generando grandes capturas de paquetes, la salida en pantalla ya no es práctica. Necesita una forma de exportar los datos capturados a un archivo para su posterior análisis o uso compartido.

Afortunadamente, tcpdump admite la capacidad de guardar paquetes capturados en un archivo en el disco. Debe especificar la opción -w seguida de la ruta del archivo.

Ejecute el siguiente comando para guardar todo el tráfico que pasa por su sistema en un archivo llamado /tmp/capture.pcap. Este comando escucha en cualquier interfaz y captura un máximo de 20 paquetes antes de salir automáticamente.

sudo tcpdump -i any -w /tmp/capture.pcap -vv -c 20

Ahora tiene el archivo de captura de paquetes y, cuando lo necesite, puede volver a leer el archivo en la terminal. Para leer una captura de paquete de un archivo, agregue el -r opción seguida del nombre del archivo de captura de paquetes.

sudo tcpdump -r /tmp/capture.pcap

Conclusión

Este tutorial le enseñó a capturar y analizar el tráfico de red usando el comando tcpdump de Linux. Ha utilizado opciones comunes y filtros combinados para generar capturas de paquetes precisas. También usó la herramienta para capturar paquetes en archivos para su posterior análisis y volver a leer el archivo en la terminal.

La herramienta tcpdump Linux es esencial en la caja de herramientas de cada administrador de red. El conocimiento que ha adquirido en este tutorial lo ayuda a ser eficaz y eficiente en la resolución de problemas de red.


Linux
  1. 16 ejemplos útiles de comandos 'cp' para principiantes de Linux

  2. Cómo usar el comando id en Linux:5 ejemplos útiles

  3. Ejemplos útiles de excavación de Linux para el administrador de red

  4. 10 ejemplos útiles de Sar (Sysstat) para la supervisión del rendimiento de UNIX/Linux

  5. Ejemplos del uso del comando tcpdump para solucionar problemas de red

40 ejemplos útiles de comandos PS de Linux para aspirantes a administradores de sistemas

Los 50 comandos IP útiles de Linux para administradores de red

10 ejemplos útiles del comando Sort en Linux

15 ejemplos súper útiles del comando Buscar en Linux

Exploraciones efectivas de puertos de Linux para el administrador de la red

10 ejemplos de comandos brctl de Linux para puente de red Ethernet