Cómo capturar tráfico de red en Linux con tcpdump

Linux viene equipado con una plétora de utilidades de red para elegir. tcpdump es una de esas poderosas herramientas de red que puede capturar y analizar el tráfico de red en caso de que necesite solucionar errores de red en Linux.

Pongámonos manos a la obra con el comando tcpdump y exploremos cómo usarlo para capturar el tráfico de la red.

Instalación de tcpdump en Linux

tcpdump generalmente viene preinstalado con todas las principales distribuciones de Linux y alternativas basadas en seguridad. Por lo tanto, debería poder usarlo de inmediato escribiendo volcado tcp con un sudo prefijo.

En caso de que no pueda ejecutar el comando tcpdump y esté atascado en el “ tcpdump: comando no encontrado ” error, aprendamos cómo instalar tcpdump en su máquina Linux.

Para instalar tcpdump, inicie la terminal y ejecute el comando correspondiente a la distribución de Linux que está utilizando actualmente:

En los derivados de Debian / Ubuntu , ejecute:

                      
                        sudo apt-
                        
                          get
                        
                         install tcpdump
                      
                    

En sistemas basados ​​en Arch, ejecute:

                      
                        sudo pacman -S tcpdump
                        

Para instalar la utilidad tcpdump en FedoraCentOS y RHEL, emita el siguiente comando:

                      
                        sudo dnf 
                        
                          install
                        
                         tcpdump
                      
                    

Tenga en cuenta que si se le pide que instale librería escribir o Y ya que es una dependencia central, sin la cual tcpdump se negará a iniciarse. Esto debería instalar la utilidad tcpdump y resolver el error “comando no encontrado”.

Ahora que tcpdump se ha instalado en su sistema, exploremos las diferentes opciones y funcionalidades que ofrece.

Captura de tráfico de red con tcpdump

tcpdump ofrece muchos indicadores para modificar su ejecución, pero también se puede ejecutar como un comando independiente. Sin embargo, ejecutar tcpdump sin banderas o argumentos estaría desaprovechando todo su potencial. Siempre es mejor usar algunas banderas para modificar la ejecución y la salida según sea necesario.

Escriba este comando para monitorear las transmisiones de red con tcpdump:

                      
                        sudo tcpdump
                      
                    

Ahora tcpdump comenzará a capturar paquetes de red automáticamente hasta que se envíe una señal de interrupción con Control + Z para romper el proceso manualmente. Para limitar el número total de paquetes capturados, utilice el -C marque y escriba el límite deseado de paquetes junto a él:

                      
                        sudo tcpdump -c 5
                      
                    

Si no puede entender la salida en este momento, primero debe familiarizarse con el formato de salida tcpdump.

Compruebe las interfaces de red disponibles con tcpdump

De forma predeterminada, tcpdump captura el tráfico de cualquiera de las interfaces de red disponibles. Si tiene varias interfaces de red activas en uso, es posible que desee definir la interfaz de red desde la cual tcpdump debería capturar paquetes. Para iniciar tcpdump en una interfaz específica, primero deberá conocer el nombre de la interfaz.

Aquí se explica cómo enumerar todas las interfaces de red disponibles con tcpdump:

                      
                        sudo tcpdump -D
                      
                    

O bien, puede agregar el –lista-interfaces bandera al comando:

                      
                        sudo tcpdump --
                        
                          list
                        
                        -interfaces
                      
                    

El resultado devuelto contiene una lista de todas las interfaces de red activas que tcpdump puede escuchar. Para configurar tcpdump para capturar transmisiones desde una interfaz de red en particular, escriba este comando:

                      
                        sudo tcpdump -i interface_id
                      
                    

O bien, puede agregar el –interfaz bandera al comando:

                      
                        sudo tcpdump --
                        
                          
                            interface
                          
                          
                            interface_id
                          
                        
                      
                    

Ahora que hemos capturado algunos paquetes, estudiémoslos de cerca y aprendamos cómo puede modificar la salida para que sea más legible.

Explorando filtros tcpdump

tcpdump es capaz de capturar una cantidad abrumadora de tráfico en una sola ejecución. Tal sobrecarga de información puede desviarlo al investigar o solucionar problemas con un protocolo de red o host específico.

Aquí es donde entran en juego los filtros tcpdump. Puede agregar el comando tcpdump con ciertos indicadores para filtrar el tráfico de la red y capturar paquetes específicos. Luego puede almacenar esos paquetes y luego analizarlos para llegar a la raíz de cualquier problema relacionado con la red. Aprendamos a usar filtros en tcpdump.

Filtrar paquetes según el protocolo de red en uso

Para filtrar los paquetes transmitidos a través de un protocolo específico, escriba el nombre del protocolo con el comando tcpdump y solo capturará los paquetes que viajen a través del protocolo de red definido.

Para examplepara capturar paquetes basados ​​en ICMP, simplemente adjuntaría ICMP al final del comando tcpdump. El proceso es el mismo si desea capturar solo paquetes UDP o TCP.

                      
                        sudo tcpdump -c 5 icmp
                      
                    

Este comando solo devolverá la salida si hay un intercambio de datos a través del protocolo ICMP.

Filtrar paquetes según el host

Puede configurar tcpdump para capturar paquetes relacionados con un solo host con el anfitrión parámetro. Esto es especialmente útil cuando todos los sistemas de su red funcionan excepto uno. Este filtro le permite realizar una investigación específica y acelera el flujo de trabajo general de solución de problemas, ya que no se distrae con datos innecesarios.

Para capturar paquetes relacionados con un host específico, defina la dirección de red del host con el anfitrión parámetro:

                      
                        
                          sudo
                        
                        
                          tcpdump
                        
                        
                          -c
                        
                         5 
                        
                          host
                        
                         192
                        
                          .168
                        
                        
                          .2
                        
                        
                          .1
                        
                      
                    

Similar al filtro de protocolo de red, este comando solo devolverá la salida si alguna transmisión en curso está relacionada con el host definido.

Filtrar paquetes según el puerto activo

tcpdump está equipado con un parámetro que le permite filtrar el tráfico de red y capturar solo los paquetes que se transmiten hacia o desde un puerto específico.

Para capturar paquetes provenientes de un puerto específico, agregue el Puerto marca al comando tcpdump y define el número de puerto al lado. Por ejemplo, para capturar cualquier tráfico HTTP entrante o saliente, defina el puerto 80:

                      
                        sudo tcpdump -c 5 port 80
                        

tcpdump escuchará en el puerto 80, esperando transmisiones HTTP. Una vez que detecta paquetes HTTP en la red, los capturará.

Combine filtros para una clasificación avanzada

Las secciones anteriores discutieron cómo puede filtrar el tráfico según el puerto, el protocolo o el host, pero ¿qué sucede si desea capturar el tráfico de un solo puerto de un host específico utilizando un protocolo de red en particular? Bueno, estás de suerte porque esto es posible, atribuyéndolo a la capacidad de usar operadores lógicos con el comando tcpdump.

Para capturar paquetes de un host individual usando el puerto 443, use este comando:

                      
                        
                          sudo
                        
                        
                          tcpdump
                        
                        
                          -c
                        
                         5 
                        
                          host
                        
                         192
                        
                          .168
                        
                        
                          .2
                        
                        
                          .1
                        
                        
                          and
                        
                        
                          port
                        
                         443
                        

Inspeccione el contenido de los paquetes capturados

De forma predeterminada, tcpdump muestra los encabezados de un paquete en la salida. Si bien es más que suficiente en la mayoría de los casos, a veces, es posible que desee o necesite profundizar en los datos capturados. Puede pasar ciertos parámetros con el comando tcpdump para inspeccionar el contenido del paquete capturado.

Aquí se explica cómo ver el contenido de los paquetes:

                      
                        sudo tcpdump -c 5 -x
                      
                    

Este comando devuelve la versión hexadecimal del contenido de un paquete capturado. Si desea ver el formato ASCII de los datos, puede pasar el -A parámetro con:

                      
                        sudo tcpdump -A
                      
                    

Guardar la salida de tcpdump en un archivo

Como casi cualquier otra herramienta de línea de comandos de Linux, puede almacenar la salida producida por tcpdump en un archivo al que se hará referencia más adelante.

Esto se puede hacer agregando el -w bandera al comando. Tras la ejecución, tcpdump almacenará los datos capturados en un .pcap archivo que luego se puede analizar con tcpdump u otras herramientas de monitoreo de red como Wireshark.

Escriba este comando para almacenar la salida de su comando tcpdump en un archivo:

                      
                        
                          sudo
                        
                        
                          tcpdump
                        
                        
                          -w
                        
                        
                          capture
                        
                        
                          .pcap
                        
                      
                    

para leer un .pcap archivo, puede usar tcpdump con el -r parámetro:

                      
                        
                          sudo
                        
                        
                          tcpdump
                        
                        
                          -r
                        
                        
                          capture
                        
                        
                          .pcap
                        
                      
                    

Las mejores herramientas de red para Linux

Linux viene con una plétora de herramientas de red que pueden resolver todos los problemas de la red, siempre que se trate del software. Saber cómo usar algunas de las mejores herramientas de red en Linux definitivamente será útil, ya sea que sea un administrador de sistemas que se gana la vida administrando redes o simplemente un usuario de Linux todos los días.

Dado que la lista real de comandos de red disponibles puede ser demasiado difícil de comprender, aquí hay una lista de algunas de las herramientas de red de Linux más importantes que debe conocer.

Related Posts