Retour au blog

Utilitaire Netcat sur Linux : Tester des connexions TCP/UDP sur un VPS avec Netcat

Utilitaire Netcat sur Linux : Tester des connexions TCP/UDP sur un VPS avec Netcat

Introduction

L'un des plus grands avantages d'utiliser Linux est la pléthore d'utilitaires utiles qu'il fournit. Les fonctionnalités intégrées au programme sont généralement suffisantes pour la plupart des programmeurs pour effectuer leur travail. Cela signifie que la plupart du temps, vous n'aurez pas besoin de télécharger de programmes et de logiciels externes. Les outils intégrés vous fourniront une utilité suffisante. Parmi ces fonctionnalités utiles figure l'utilitaire netcat.

Dans le monde des outils réseau, netcat est en quelque sorte une arme surpuissante. C'est une commande incroyablement polyvalente que vous pouvez utiliser à des fins multiples. Par exemple, vous pouvez utiliser cet outil unique pour surveiller, tester, ainsi que transférer toutes sortes de fichiers et de données à travers les connexions de votre système. Dans ce guide, nous explorerons comment effectuer toutes ces actions sur un VPS en utilisant netcat.

Trouver Netcat

Netcat est généralement disponible sur toutes les distributions Linux modernes. Ce qui signifie que vous l'avez très probablement déjà et que vous n'avez pas besoin de faire d'efforts particuliers pour l'installer. Dans notre tutoriel, nous utiliserons le VPS Ubuntu 12.04. Vous pouvez installer votre propre serveur Ubuntu en suivant notre tutoriel.  Ubuntu est normalement fourni avec la variante BSD de l'utilitaire netcat. Gardez à l'esprit que si vous possédez une autre version, elle peut fonctionner un peu différemment.

Passer en revue la syntaxe de base

Nous commençons par découvrir la syntaxe générale qui fonctionne dans l'utilitaire netcat. Vous pouvez faire fonctionner netcat en démarrant une connexion TCP. La connexion doit être initiée vers un hôte distant. Voici la syntaxe de base pour netcat :

Cette commande va tenter de lancer une connexion TCP vers un hôte distant. Le choix de l'hôte auquel elle se connecte dépend du numéro de port que vous spécifiez dans la commande. La connexion ne sera pas chiffrée. Comme vous pouvez le voir, cette commande fonctionne de manière similaire à la commande telnet.

D'un autre côté, vous pouvez également initier une connexion UDP. Pour envoyer un paquet UDP au lieu de TCP, vous devez utiliser l'option -u. Voici à quoi cela ressemblerait :

Si vous le souhaitez, vous pouvez également spécifier une plage de ports. Pour ce faire, vous devez mettre un tiret entre le premier et le dernier port. Voici un exemple :

Vous pouvez également y ajouter d'autres drapeaux. Une autre chose à noter est que vous pouvez utiliser netcat et nc de manière interchangeable. Ils vous lanceront dans la même commande, ce qui signifie qu'ils sont des alias l'un de l'autre.

Utiliser Netcat pour le balayage de ports

Pour commencer, explorons l'une des utilisations les plus courantes de netcat. Nous allons découvrir comment l'utiliser comme scanner de ports. Dans la plupart des situations, il est préférable d'utiliser un outil comme nmap. Cependant, si vous avez juste besoin d'effectuer des balayages de ports simples, alors netcat est utile. Il peut vous aider à identifier facilement les ports ouverts.

Pour utiliser netcat comme scanner de ports, vous devez mentionner la plage de ports. Vous ferez cela en utilisant l'option -z. Ainsi, le système scannera la plage de ports au lieu de tenter une connexion. Disons que nous voulons scanner du port 1 au port 1000 :

En plus de la commande -z, nous avons également utilisé l'option -v. Cette dernière nous permet de donner plus d'informations à la commande. Elle nous permet d'être plus « verbeux ».

Vous obtiendrez une sortie comme celle-ci en retour :

port scanning netcat utility

La sortie affiche beaucoup d'informations pour chaque port individuel. Vous connaissez l'état de connexion de chaque port. D'un autre côté, vous pouvez utiliser l'adresse IP à la place du nom de domaine si vous la connaissez. Cela rend le processus beaucoup plus rapide. Voici un exemple :

Nous avons utilisé le drapeau -n pour indiquer que le système doit utiliser le DNS pour résoudre l'adresse IP.

Généralement, les messages de retour sont envoyés vers l'erreur standard. Pour filtrer les résultats plus rapidement, vous pouvez les rediriger vers la sortie standard. Nous utiliserons la syntaxe bash 2>&1 pour ce faire. Par la suite, nous filtrerons les résultats à l'aide de grep. Appliquons cela à notre exemple :

La sortie ressemblera à ceci :

port scan succeeded

La sortie montre que seul le port 22 est ouvert à la connexion dans la plage donnée. Le port 22 se trouve être le port SSH traditionnel.

Communication via Netcat : comment ça marche ?

Ensuite, nous verrons comment utiliser netcat pour envoyer des paquets TCP et UDP. De plus, il peut également recevoir des paquets sur différents ports. Grâce à cette capacité, vous pouvez utiliser deux instances de netcat pour créer une relation client-serveur. Au début, vous déterminerez le client et le serveur. Après la configuration initiale, les deux clients peuvent envoyer et recevoir des paquets dans les deux sens.

Naturellement, vous devrez configurer netcat sur un système pour écouter les connexions sur un port. Pour ce faire, vous devez utiliser le paramètre -l. Grâce à cela, vous pouvez sélectionner le port de votre choix comme ceci :

Désormais, le protocole TCP sur cette machine écoutera les connexions sur le port 4444. Il convient de noter que si vous êtes un utilisateur non-root ou standard, vous ne pourrez pas accéder aux ports inférieurs à 1000.

Ensuite, vous devez configurer une deuxième machine pour établir une connexion. Vous utiliserez le même numéro de port et indiquerez un nom de domaine spécifique comme ceci :

L'exécution de cette commande ne donnera aucun résultat. Elle établira cependant la connexion. Cela signifie que vous pouvez commencer à envoyer des messages de l'un ou l'autre serveur vers l'autre. Pour ce faire, il vous suffit de saisir le message puis d'appuyer sur ENTRÉE. Le message s'affichera sur les deux écrans.

Une fois terminé, vous pouvez fermer la connexion TCP en appuyant sur CTRL+D.

Peut-on envoyer des fichiers avec Netcat ?

Ensuite, nous allons vous montrer comment envoyer des fichiers via netcat. Avec une connexion TCP, vous pouvez envoyer des messages ainsi que d'autres types de données. Pour commencer, vous devez sélectionner une machine pour écouter les connexions. Cependant, au lieu de saisir les informations dans la commande, nous allons les placer dans un fichier comme ceci :

Sur l'autre machine, vous devrez créer un nouveau fichier texte. Voici la commande à utiliser :

Pour transmettre le fichier, vous l'utiliserez comme entrée pour la connexion sur l'ordinateur qui est à l'écoute :

L'autre ordinateur affichera un nouveau fichier appelé « received_file ». Il contiendra toutes les informations que nous avons saisies :

file transmissionVous pouvez utiliser cet utilitaire et le transformer en programme de transfert de fichiers. Disons que vous souhaitez transférer le contenu d'un répertoire. Nous le ferons en créant une archive tar non nommée que nous transférerons vers le système et décompresserons dans le répertoire distant. Sur l'autre machine, nous devons nous préparer à recevoir le fichier. Nous savons que nous devrons le décompresser et l'extraire. Pour ce faire, lancez cette commande :

Le tiret indique que tar fonctionnera sur l'entrée standard. Cela provient de netcat sur le serveur initial lorsque nous avons établi la connexion initiale.

Enfin, nous pouvons mettre le contenu de tout le répertoire dans une archive tar et l'envoyer via netcat comme ceci :

Le tiret dans la commande tar montre que nous demandons au système d'archiver et de compresser le contenu du répertoire. Il lui indique également d'écrire le résultat sur la sortie standard. Le fichier passera par la connexion TCP vers l'autre extrémité. Le serveur de réception le décompressera et l'enregistrera dans le répertoire distant actuel.

De la même manière, vous pouvez également transférer d'autres types de données via netcat. De nombreuses personnes utilisent la commande dd pour créer des images de disques et les transférer. Pour une autre méthode de transfert de données et de fichiers, jetez un œil à notre tutoriel montrant comment garantir la sécurité lors du transfert de fichiers avec SFTP.

Utiliser Netcat comme serveur Web

Une autre fonction utile de netcat est que vous pouvez l'utiliser pour tester vos pages. Disons que nous utilisons un serveur pour créer un fichier HTML comme celui-ci :

Voici le code HTML que contient le fichier :

Saisissez ceci dans le fichier, puis enregistrez-le et fermez-le. Généralement, le port 80 est le port web par défaut. En tant qu'utilisateur normal non-root, nous allons sélectionner le port 8888. En supposant que vous souhaitiez servir et vérifier la page une seule fois, vous devez utiliser cette commande :

Pour visualiser le contenu du fichier, accédez à votre navigateur. Visitez l'adresse suivante :

Vous pourrez voir la page que vous avez codée avec le fichier HTML :

output html page netcat utility

Une fois que vous aurez accédé à la page, la connexion netcat se fermera. Cela signifie que l'actualisation de la page affichera une erreur au lieu du contenu. C'est parce que nous l'avons configurée pour ne servir la page qu'une seule fois. Si vous souhaitez continuer à recevoir des connexions pour voir la page indéfiniment, vous utiliserez un code différent :

Ici, nous avons enveloppé la dernière commande dans une boucle infinie. Si vous souhaitez arrêter la boucle, il vous suffit d'appuyer sur CTRL-C. Vous pouvez maintenant continuer à visualiser votre page et son rendu même après la fermeture de la première connexion. Cependant, c'est la fonctionnalité maximale que vous pouvez tirer de l'utilisation de l'utilitaire netcat en tant que serveur web. N'essayez pas de l'utiliser pour héberger de vrais sites web car il n'offre aucune sécurité. À la place, vous pouvez consulter nos tutoriels sur comment installer un logiciel de serveur web tel que Nginx ou Apache.

Conclusion

Dans ce tutoriel, nous avons présenté l'utilitaire netcat et exploré sa polyvalence en tant qu'outil sur Ubuntu. Comme nous l'avons vu dans les sections ci-dessus, vous pouvez l'utiliser à des fins de communication, de transfert de données et de diffusion de pages. Il fonctionne parfaitement pour des interactions rapides entre serveurs via des connexions TCP/UDP. C'est une fonctionnalité très utile pour de nombreuses fonctions de base et diagnostics.

Bonne informatique !

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.