TCPFLOW - Analyser et déboguer le trafic réseau dans Linux

TCPFLOW - Analyser et déboguer le trafic réseau dans Linux

Tcpflow est un outil gratuit basé sur la ligne de commande et open source pour analyser le trafic réseau sur des systèmes de type UNIX tels que Linux. Il capture les données reçues ou transférées sur des connexions TCP et les stocke dans un fichier pour une analyse ultérieure, dans un format utile qui permet une analyse du protocole et un débogage.

Lire aussi: 16 meilleurs outils de surveillance de la bande passante pour analyser l'utilisation du réseau dans Linux

Il s'agit en fait d'outils de type TCPDump car il traite les paquets à partir du fil ou à partir d'un fichier stocké. Il prend en charge les mêmes expressions de filtrage puissantes soutenues par son homologue. La seule différence est que TCPFlow met tous les paquets TCP dans l'ordre et assemble chaque flux dans un fichier séparé (un fichier pour chaque direction du flux) pour une analyse ultérieure.

Son ensemble de fonctionnalités comprend un système de plug-in avancé pour décompresser les connexions HTTP compressées, annuler le codage mime ou invoquer.

Il existe de nombreux cas d'utilisation pour TCPFlow qui incluent pour comprendre les flux de paquets de réseau et prennent également en charge pour effectuer la criminalistique du réseau et divulguer le contenu des séances HTTP.

Comment installer TCPFlow dans les systèmes Linux

Tcpflow est disponible dans les référentiels officiels des distributions grand public GNU / Linux, vous pouvez l'installer en utilisant votre gestionnaire de packages comme indiqué.

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

Après avoir installé TCPFlow, vous pouvez l'exécuter avec des privilèges SuperUser, sinon utilisez le commande sudo. Notez qu'il écoute l'interface réseau actif (par exemple ENP0S3).

$ sudo tcpflow TCPFLOW: écouter sur ENP0S3 

Par défaut, TCPFlow stocke toutes les données capturées dans des fichiers qui ont des noms dans le formulaire (cela peut être différent si vous utilisez certaines options telles que horodatage).

sourceip.Sourceport-Destip.destort 192.168.043.031.52920-216.058.210.034.00443 

Maintenant, faisons une liste de répertoires pour voir si TCP Flow a été capturé dans n'importe quel fichier.

$ ls -1 total 20 -rw-r - r--. 1 racine racine 808 sept 19 12:49 192.168.043.031.52920-216.058.210.034.00443 -rw-r - r--. 1 racine racine 59 sept. 12:49 216.058.210.034.00443-192.168.043.031.52920 

Comme nous l'avons mentionné plus tôt, chaque flux TCP est stocké dans son propre fichier. À partir de la sortie ci-dessus, vous pouvez voir qu'il existe trois fichiers de transcription, qui indiquent TCPFlow dans deux directions opposées, où la source IP dans le premier fichier et la destination IP dans le deuxième fichier et vice versa.

Le premier fichier 192.168.043.031.52920-216.058.210.034.00443 contient des données transférées de l'hôte 192.168.043.031 (Le Host local sur lequel TCPFlow était exécuté) via le port 52920, héberger 216.058.210.034 (l'hôte distant) via le port 443.

Et le deuxième fichier 216.058.210.034.00443-192.168.043.031.52920 Contient des données envoyées par l'hôte 216.058.210.034 (l'hôte distant) via le port 443 héberger 192.168.043.031 (Le Host local sur lequel TCPFlow était exécuté) via le port 52920.

Il y a aussi un Xml Rapport généré, qui contient des informations sur le programme telles que la façon dont elle a été compilée, et l'ordinateur sur lequel il a été exécuté et un enregistrement de chaque connexion TCP.

Comme vous l'avez peut-être remarqué, TCPFlow stocke les fichiers de transcription dans le répertoire actuel par défaut. Le -o L'option peut vous aider à spécifier le répertoire de sortie où les fichiers de transcription seront écrits.

$ sudo tcpflow -o tcpflow_files $ sudo ls -l tcpflow_files total 32 -rw-r - r--. 1 racine racine 1665 sept 19 12:56 157.240.016.035.00443-192.168.000.103.45986 -rw-r - r--. 1 racine racine 45 sept 19 12:56 169.044.082.101.00443-192.168.000.103.55496 -rw-r - r--. 1 racine racine 2738 19 septembre 12:56 172.217.166.046.00443-192.168.000.103.39954 -rw-r - r--. 1 racine racine 68 sept. 12:56 192.168.000.102.00022-192.168.000.103.42436 -rw-r - r--. 1 racine racine 573 19 septembre 12:56 192.168.000.103.39954-172.217.166.046.00443 -rw-r - r--. 1 racine racine 4067 19 septembre 12:56 192.168.000.103.45986-157.240.016.035.00443 -rw-r - r--. 1 racine racine 38 sept. 12:56 192.168.000.103.55496-169.044.082.101.00443 -rw-r - r--. 1 racine racine 3159 sept. 12:56 Rapport.xml 

Vous pouvez également imprimer le contenu des paquets pour stdout Comme ils sont reçus, sans stocker de données capturées dans des fichiers, en utilisant le -c Flag comme suit.

Pour tester cela efficacement, ouvrez un deuxième terminal et exécutez un ping-ping, ou parcourir Internet. Vous devriez pouvoir voir les détails du ping ou vos détails de navigation capturés par TCPFlow.

$ sudo tcpflow -c 

Il est possible de capturer tout le trafic sur un port particulier, par exemple le port 80 (Http). Dans le cas du trafic HTTP, vous pourrez voir les en-têtes HTTP suivis du contenu tout sur le stdout ou dans un fichier si le -c Le commutateur est supprimé.

$ sudo tcpflow port 80 

Pour capturer des paquets à partir d'une interface réseau spécifique, utilisez le -je Indicateur pour spécifier le nom de l'interface.

$ sudo tcpflow -i eth0 port 80 

Vous pouvez également spécifier un hôte cible (les valeurs acceptées sont l'adresse IP, le nom d'hôte ou les domaines), comme indiqué.

$ sudo tcpflow -c hôte 192.68.43.1 ou $ sudo tcpflow -c hôte www.Google.com 

Vous pouvez activer tous les traitements en utilisant tous les scanners avec le -un drapeau, cela équivaut au -e Tout commutateur.

$ sudo tcpflow -a ou $ sudo tcpflow -e tout 

Un scanner spécifique peut également être activé; Les scanners disponibles comprennent MD5, HTTP, Netviz, TCPDemux et Wifiviz (exécuter tcpflow -h Pour afficher des informations détaillées sur chaque scanner).

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

L'exemple suivant montre comment activer tous les scanners sauf TCPDEMUX.

$ sudo tcpflow -a -x tcpdemux 

TCPFlow essaie généralement de mettre l'interface réseau en mode promiscueux avant de capturer des paquets. Vous pouvez empêcher cela en utilisant le -p Flag comme indiqué.

$ sudo tcpflow -p -i eth0 

Pour lire les paquets à partir d'un fichier PCAP TCPDUmp, utilisez le -r drapeau.

$ sudo tcpflow -f fichier.PCAP 

Vous pouvez activer le mode verbeux en utilisant le -V ou -d 10 options.

$ sudo tcpflow -v ou $ sudo tcpflow -d 10 

Important: Une limitation de tcpflow Est-ce que, à l'heure actuelle, il ne comprend pas les fragments IP, donc les données transmises dans le cadre des connexions TCP contenant des fragments IP ne seront pas correctement capturées.

Pour plus d'informations et d'options d'utilisation, consultez le tcpflow page.

$ man tcpflow 

Référentiel GitHub TCPFlow: https: // github.com / simsong / tcpflow

C'est tout pour le moment! Tcpflow est un puissant enregistreur de flux TCP qui est utile pour comprendre les flux de paquets de réseau et effectuer la criminalistique du réseau, et bien plus encore. Essayez-le et partagez vos réflexions à ce sujet avec nous dans les commentaires.