GNU/Linux >> Tutoriales Linux >  >> Linux

Análisis de tráfico de red con tcpdump

tcpdump es un programa informático analizador de paquetes de red de datos. Permite al usuario visualizar los paquetes de red (incluido TCP/IP) que se transmiten o reciben a través de una red. En este breve artículo, mostraré cómo realizar una captura de paquetes para el análisis del tráfico de red con tcpdump.

Lista de interfaces de red

Tcpdump necesita acceso a su tarjeta de red, así que ejecute los siguientes comandos como root (con su o sudo ). Para imprimir la lista de las interfaces de red disponibles en el sistema y en las que tcpdump puede capturar paquetes, ejecute

# tcpdump -D

En mi caso, usaré el nic 'real', enp3s0.

Captura de paquetes

Abra un navegador web (solo para generar algo de tráfico de red) y ejecute el siguiente comando:

# tcpdump -i <interface>

Incluso sin un sitio abierto, tal vez vea algo de actividad en la red. Tal vez ese "algo" signifique mucha actividad en la red. Salga con ctrl-c y eche un vistazo a los resultados. La salida muestra un paquete por línea, con la siguiente información:

  • Marca de tiempo
  • Protocolo (IP6 para IPv6, IP para IPv4)
  • Host de origen (ip o nombre de host) y puerto
  • Host de destino (también ip o nombre de host) y puerto
  • Indicadores de TCP
  • Número de secuencia
  • Número de ACK
  • Tamaño de la ventana
  • Opciones de TCP
  • Duración de los datos

Limitando la salida

tcpdump -i <interface> -c <n>

Con este comando el programa saldrá después de recibir n paquetes

En la captura de pantalla puedes ver un dormir 2 comando ejecutándose antes de tcpdump. Esto fue solo para darme 2 segundos para cargar wikipedia en mi navegador. Pero es el mismo tipo de salida que antes.

Ocultar nombres

tcpdump -i <interface> -n

Con el modificador -n, tcpdump no convertirá la dirección IP o los números de puerto en nombres.

Filtros

Puede indicarle a tcpdump que capture solo ciertos paquetes. Por ejemplo, para capturar solo paquetes https, o más precisamente paquetes al puerto 443, agregue la expresión:

tcpdump -i <interface> port <portnumber or portname>

También podemos capturar paquetes hacia o desde algún host con la siguiente expresión

tcpdump -i <interface> host <ip address or hostname>

O podemos capturar paquetes de algún protocolo con:

tcpdump -i <interface> proto <protocol>

Donde el protocolo puede ser uno de:icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp o tcp. Para icmp, tcp y udp puede omitir la palabra clave proto.

También podemos combinar varias expresiones con ‘y’ (o ‘&&’), ‘o’ (o ‘||’) y no (o ‘!’) y agruparlas entre paréntesis. Hay muchos más filtros que puede crear, consulte la página de manual de pcap-filter (man pcap-filter ) para obtener ayuda sobre la sintaxis.

Aumentar la verbosidad de salida

Utilice el parámetro -v para aumentar la verbosidad. Desde la página de manual de tcpdump:

-v Al analizar e imprimir, produzca (un poco más) una salida detallada. Por ejemplo, se imprimen el tiempo de vida, la identificación, la duración total y las opciones en un paquete IP. También permite verificaciones adicionales de la integridad de los paquetes, como verificar la suma de verificación del encabezado IP e ICMP.
-vv Salida aún más detallada. Por ejemplo, los campos adicionales se imprimen desde los paquetes de respuesta NFS y los paquetes SMB se decodifican por completo.
-vvv Salida aún más detallada. Por ejemplo, las opciones de telnet SB... SE se imprimen en su totalidad. Con -X, las opciones de Telnet también se imprimen en hexadecimal.

Guardar la captura en un archivo

Para escribir los paquetes en un archivo para su posterior análisis, agregue -w a la línea de comando:

tcpdump -i <interface> -w <filename>

Puede leer ese archivo más tarde con el indicador -r

tcpdump -r <file>

O puede abrir ese archivo más tarde con alguna herramienta GUI, como wireshark.

Espera un segundo… wireshark también puede capturar paquetes de red, ¿por qué no lo usé desde el principio?.

Cierto, wireshark puede capturar paquetes, y la salida también es mucho más clara y fácil de seguir y leer. Con wireshark ni siquiera tengo que memorizar una línea de comando, o tener a mano la página de manual, el artículo del blog o al menos una hoja de trucos. También cierto. Podría haber usado wireshark en lugar de hacer el análisis de tráfico de red con tcpdump. Pero a veces necesito hacer la captura en un servidor o en un enrutador, y en ese tipo de computadoras no quiero desperdiciar algunos preciosos ciclos de CPU o bits de memoria dibujando ventanas, colores, botones o algunos otros widgets de GUI.

Y es por eso que elijo hacer el análisis de tráfico de red con tcpdump en la línea de comandos si tengo prisa. O guarde la salida en un archivo que transfiero para hacerlo con wireshark.


Linux
  1. Comience con NetworkManager en Linux

  2. Supervise el tráfico de red con vnStat en Ubuntu 20.04

  3. Solucione los problemas de su red con tcpdump

  4. Enumerar una nueva red con Nmap

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

Supervise el tráfico de red con Ntopng en Ubuntu 18.04 LTS

Cómo usar Wireshark para capturar y analizar paquetes de red

Ejemplos de Tcpdump - Captura de tráfico de red en Linux

Network Manager en Linux con ejemplos

Comando tcpdump de Linux

Analizador de paquetes:15 ejemplos de comandos TCPDUMP