TCPFLOW analizar y depurar el tráfico de red en Linux

TCPFLOW analizar y depurar el tráfico de red en Linux

Tcpflow es una herramienta de línea de comandos de código abierto gratuita, potente para analizar el tráfico de red en sistemas similares a unix como Linux. Captura los datos recibidos o transferidos a través de las conexiones TCP, y los almacena en un archivo para un análisis posterior, en un formato útil que permite el análisis y la depuración del protocolo.

Leer también: 16 Las mejores herramientas de monitoreo de ancho de banda para analizar el uso de la red en Linux

En realidad, es una herramientas similares a tcpdump, ya que procesa paquetes desde el cable o desde un archivo almacenado. Admite las mismas poderosas expresiones de filtrado compatibles con su contraparte. La única diferencia es que TCPFlow pone en orden todos los paquetes TCP y ensambla cada flujo en un archivo separado (un archivo para cada dirección de flujo) para un análisis posterior.

Su conjunto de características incluye un sistema de complemento avanzado para descomprimir conexiones HTTP comprimidas, deshacer la codificación mime o invocar programas de terceros para el procesamiento posterior y mucho más.

Hay muchos casos de uso para TCPFlow que incluyen para comprender los flujos de paquetes de red y también es compatible para realizar forenses de red y divulgar el contenido de las sesiones HTTP.

Cómo instalar TCPFlow en sistemas Linux

Tcpflow está disponible en los repositorios oficiales de las distribuciones GNU/Linux convencionales, puede instalarlo utilizando su administrador de paquetes como se muestra.

$ sudo apt install tcpflow #debian/ubuntu $ sudo yum instalación tcpflow #centos/rhel $ sudo dnf instalación tcpflow #fedora 22+ 

Después de instalar tcpflow, puede ejecutarlo con privilegios de superusuario, de lo contrario usar el comando sudo. Tenga en cuenta que escucha en la interfaz de red activa (por ejemplo ENP0S3).

$ sudo tcpflow tcpflow: escuchando en enp0s3 

Por defecto, TCPFlow almacena todos los datos capturados en archivos que tienen nombres en el formulario (esto puede ser diferente si utiliza ciertas opciones como marca de tiempo).

IP de origen.Sourceport-Destip.Destport 192.168.043.031.52920-216.058.210.034.00443 

Ahora hagamos una lista de directorio para ver si el flujo TCP ha sido capturado en algún archivo.

$ LS -1 Total de 20 -RW-R-R--. 1 raíz raíz 808 19 de septiembre 12:49 192.168.043.031.52920-216.058.210.034.00443 -rw-r-r--. 1 raíz raíz 59 sep 19 12:49 216.058.210.034.00443-192.168.043.031.52920 

Como mencionamos anteriormente, cada flujo TCP se almacena en su propio archivo. De la salida anterior, puede ver que hay tres archivos de transcripción, que indican TCPFlow en dos direcciones opuestas, donde la IP de origen en el primer archivo y la IP de destino en el segundo archivo y viceversa.

El primer archivo 192.168.043.031.52920-216.058.210.034.00443 contiene datos transferidos desde el host 192.168.043.031 (el localhost en el que se ejecutó TCPFlow) a través del puerto 52920, a anfitrión 216.058.210.034 (el host remoto) a través del puerto 443.

Y el segundo archivo 216.058.210.034.00443-192.168.043.031.52920 contiene datos enviados desde el host 216.058.210.034 (el host remoto) a través del puerto 443 a anfitrión 192.168.043.031 (el localhost en el que se ejecutó TCPFlow) a través del puerto 52920.

También hay un Xml Informe generado, que contiene información sobre el programa, como cómo se compiló, y la computadora en la que se ejecutó y un registro de cada conexión TCP.

Como puede haber notado, TCPFlow almacena los archivos de transcripción en el directorio actual de forma predeterminada. El -O La opción puede ayudarlo a especificar el directorio de salida donde se escribirán los archivos de transcripción.

$ sudo tcpflow -o tcpflow_files $ sudo ls -l tcpflow_files Total 32 -RW-R-R--. 1 raíz raíz 1665 19 de septiembre 12:56 157.240.016.035.00443-192.168.000.103.45986 -rw-r-r---. 1 raíz raíz 45 19 de septiembre 12:56 169.044.082.101.00443-192.168.000.103.55496 -rw-r-r---. 1 raíz raíz 2738 19 de septiembre 12:56 172.217.166.046.00443-192.168.000.103.39954 -rw-r-r---. 1 raíz de raíz 68 sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436 -rw-r-r---. 1 raíz raíz 573 19 de septiembre 12:56 192.168.000.103.39954-172.217.166.046.00443 -rw-r-r--. 1 raíz raíz 4067 19 de septiembre 12:56 192.168.000.103.45986-157.240.016.035.00443 -rw-r-r--. 1 raíz raíz 38 sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443 -rw-r-r--. 1 raíz raíz 3159 19 de septiembre 12:56 Informe.xml 

También puede imprimir el contenido de los paquetes para stdout Como se reciben, sin almacenar ningún datos capturados en archivos, utilizando el -C bandera de la siguiente manera.

Para probar esto de manera efectiva, abra un segundo terminal y ejecute un silbido, o navegar por Internet. Debería poder ver los detalles de ping o sus detalles de navegación capturados por TCPFlow.

$ sudo tcpflow -c 

Es posible capturar todo el tráfico en un puerto en particular, por ejemplo, puerto 80 (Http). En el caso del tráfico HTTP, podrá ver los encabezados HTTP seguidos del contenido, todo en el stdout o en un archivo si el -C Se elimina el interruptor.

$ sudo tcpflow puerto 80 

Para capturar paquetes de una interfaz de red específica, use el -i marcar para especificar el nombre de la interfaz.

$ sudo tcpflow -i eth0 puerto 80 

También puede especificar un host de destino (los valores aceptados son la dirección IP, el nombre de host o los dominios), como se muestra.

$ sudo tcpflow -c anfitrión 192.68.43.1 o $ sudo tcpflow -c host www.Google.comunicarse 

Puede habilitar todo el procesamiento utilizando todos los escáneres con el -a bandera, esto es equivalente al -mi todo interruptor.

$ sudo tcpflow -a o $ sudo tcpflow -e todo 

También se puede activar un escáner específico; Los escáneres disponibles incluyen MD5, HTTP, NetViz, TCPDemux y Wifiviz (Ejecutar tcpflow -h Para ver información detallada sobre cada escáner).

$ sudo tcpflow -e http o $ sudo tcpflow -e md5 o $ sudo tcpflow -e netviz o $ sudo tcpflow -e tcpdemux o $ sudo tcpflow -e wifiviz 

El siguiente ejemplo muestra cómo habilitar todos los escáneres excepto tcpdemux.

$ sudo tcpflow -a -x tcpdemux 

TCPFlow generalmente trata de poner la interfaz de red en modo promiscuo antes de capturar paquetes. Puedes evitar esto usando el -pag bandera como se muestra.

$ sudo tcpflow -p -i eth0 

Para leer paquetes de un archivo PCAP TCPDUMP, use el -riñonal bandera.

$ sudo tcpflow -f archivo.PCAP 

Puede habilitar el modo verboso utilizando el -V o -D 10 opción.

$ sudo tcpflow -v o $ sudo tcpflow -d 10 

Importante: Una limitación de tcpflow es que, en este momento no entiende los fragmentos IP, por lo tanto, los datos transmitidos como parte de las conexiones TCP que contienen fragmentos IP no se capturarán correctamente.

Para obtener más información y opciones de uso, consulte el tcpflow página del hombre.

$ hombre tcpflow 

Repositorio de tcpflow github: https: // github.com/simsong/tcpflow

Eso es todo por ahora! Tcpflow es una poderosa grabadora de flujo TCP que es útil para comprender los flujos de paquetes de red y realizar forenses de red, y mucho más. Pruébelo y comparta sus pensamientos al respecto con nosotros en los comentarios.