16/05/2024

Administration RéseauPour les débutants

Le protocole Telnet pour les débutants (et pourquoi vous devez l’éviter)

I. Présentation

Dans cet article, nous allons étudier le protocole Telnet, qui reste aujourd'hui utilisé pour effectuer de l'administration à distance, bien que ce ne soit pas un protocole sécurisé.

Alors qu'est-ce que le protocole Telnet ? A quoi sert-il ? Pourquoi est-il considéré comme non sécurisé ? Est-ce qu'il y a des alternatives ? Nous répondrons à toutes ces questions dans cet article.

II. Qu'est-ce que le protocole Telnet ?

Le protocole Telnet est un protocole utilisé sur les réseaux informatiques pour se connecter à distance à un serveur ou à un équipement réseau. Une fois connecté à un équipement avec le protocole Telnet, on obtient un accès à un prompt afin de pouvoir saisir et exécuter des commandes.

Le protocole Telnet est un protocole de type client-serveur, où les connexions sont effectuées sur le port 23 en TCP. Le client Telnet peut être représenté par l'ordinateur de l'administrateur système tandis que le serveur Telnet peut être représenté par un équipement réseau que l'on veut administrer à distance. Aujourd'hui, et même si c'est de plus en plus rare, il est possible d'utiliser le protocole Telnet pour se connecter à un commutateur ou un routeur en ligne de commande, dans le but de l'administrer.

Il s'agit de l'un des protocoles les plus anciens, puisqu'il a été créé en 1969 avant d'obtenir sa certification RFC le 1er mai 1973 : la RFC 495. Par la suite, deux autres RFC ont étaient mises en ligne pour mieux décrire le protocole et tenir compte des améliorations : RFC 854 et RFC 855.

III. Faiblesse du protocole Telnet

A. Telnet, un protocole non sécurisé

Le protocole Telnet a été développé à une époque où la sécurité n'était pas une préoccupation. De ce fait, le protocole Telnet n'est pas sécurisé. Pour être plus précis, toutes les données échangées via Telnet sont transmises en clair sur le réseau, c'est-à-dire qu'elles ne sont pas chiffrées.

Cela signifie que si l'on utilise le protocole Telnet pour se connecter à un équipement réseau ou un serveur, les informations sensibles (nom d'utilisateur et mot de passe) seront transmises en clair sur le réseau. Si une personne malveillante parvient à intercepter le trafic réseau, elle sera en mesure de récupérer vos identifiants et de compromettre votre équipement.

L'utilisation du protocole Telnet reste acceptable sur un réseau local, quand il n'y a pas d'autres alternatives, mais sur Internet, c'est à bannir. Dans tous les cas, il est important d'avoir connaissance de ce risque et de le prendre en considération.

B. Capture des identifiants avec Wireshark

Pour étayer mes propos, prenons un exemple pratique où je vais établir une connexion Telnet depuis un PC Windows vers un équipement. Dans le même temps, une capture du trafic sera réalisée à partir du PC Windows qui initie la connexion Telnet.

La connexion est initiée avec l'application PuTTY... Elle est établie, le login et le mot de passe sont saisis. Juste après, la capture Wireshark est arrêtée.

Connexion Telnet avec SSH

Si l'on s'intéresse de plus près aux paquets échangés entre mon PC Windows et mon équipement, autrement dit mon client Telnet et mon serveur Telnet, on peut voir plusieurs paquets "Telnet Data...". Si l'on regarde le détail des paquets, on peut constater "Password:" comme données dans le paquet, ce qui correspond au prompt visible sur la console ci-dessus.

Wireshark - Telnet - Password

Puis, dans un autre paquet, émit depuis le client Telnet vers le serveur Telnet, on a cette valeur comme donnée : "Tuto-Telnet-2023" ! Il s'agit du mot de passe de l'utilisateur ! Au préalable, d'autres paquets ont transité, notamment pour l'identifiant (demo-telnet).

Wireshark - Telnet - Mot de passe en clair

Si l'on utilise la fonction de suivi de flux TCP de Wireshark, c'est encore plus flagrant et rapide : toutes les données sont visibles, en clair, dans une fenêtre récapitulative. On peut récupérer l'identifiant et le mot de passe très facilement.

Wireshark - Suivi TCP Telnet - Identifiants en clair

Cette démonstration montre qu'il est très facile de lire les données au sein d'une communication entre un client et un serveur lorsque le protocole Telnet est utilisé. Ici, la capture est effectuée depuis le PC qui joue le rôle de client Telnet, mais il pourrait s'agir d'une autre machine sur le réseau (qui parvient à se positionner de façon à intercepter le trafic).

IV. Alternatives au protocole Telnet

Pour des raisons de sécurité, il est préférable d'utiliser d'autres protocoles sur le protocole Telnet, afin d'utiliser un protocole plus moderne et sécuriser. La meilleure alternative au protocole Telnet, c'est le protocole SSH (Secure SHell). Contrairement au Telnet, le protocole SSH chiffre tous les échanges entre le client et le serveur, offrant ainsi une protection adaptée contre l'écoute réseau et l'interception de trafic.

Le protocole SSH, au même titre que le protocole Telnet, permet de se connecter à distance, en ligne de commande, à un équipement pour l'administrer. Ceci est vrai pour un équipement réseau, mais aussi une machine sous Linux ou Windows.

Ainsi, si vous avez le choix entre les protocoles Telnet et SSH, vous ne devriez pas hésiter un seul instant et utiliser le protocole SSH. Comme le montre l'exemple ci-dessous, les paquets SSH sont chiffrés et le contenu n'est pas lisible.

Wireshark - SSH - Trafic chiffré

Pour des appareils prenant en charge d'autres protocoles, l'administration peut être effectuée via les protocoles HTTP, HTTPS ou RDP, mais l'utilisation dans la pratique sera différente.

V. Conclusion

Le protocole Telnet est à connaître, car il fait partie des indispensables : bien qu'il soit à éviter, vous avez des chances de le croiser alors c'est important d'en savoir un minimum à son sujet. Vous devez retenir qu'il n'est pas sécurisé et qu'il faut prioriser l'utilisation du SSH.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

11 commentaires sur “Le protocole Telnet pour les débutants (et pourquoi vous devez l’éviter)

  • C’est risqué de l’utiliser dans le seul but de voir si un port est ouvert quand on vise une ip précise ?

    Répondre
    • Hello AS,
      Non ceci reste un usage très intéressant et dans ce cas tu n’exposes pas de données sensibles 🙂
      Le risque c’est surtout pour l’administration, il vaut mieux préférer SSH quand c’est possible.

      Répondre
    • Oui c’est vrai, personnellement il m’arrive d’utiliser le telnet pour voir si un port est ouvert assez fréquement

      Répondre
    • Y’a plus efficace aujourd’hui que le telnet : 1 commande intégrée à Powershell :

      Test-NetConnection -Computer toto -Port 22

      Répondre
  • Salut, je ne suis pas tout à fait d’accord. Telnet reste pour moi un incontournable pour vérifier un port ouvert ou non, vérifier le fonctionnement ou non d’un envoi de mail via smtp(s), bref un outil d’admin encore bien utile.
    Maintenant au niveau sécurité, le pourcentage de chance (ou de malchance) que le flux soit écouté à l’instant T, c’est un peu l’histoire de la chauve-souris de Bigard (bonjour la ref de vieux briscard!! 😉 )

    Répondre
    • Hey Nico ! 🙂
      Je n’ai pas la réf alors j’irais voir ! 😂
      Quand je dis que c’est un protocole à éviter, c’est surtout pour l’administration à distance : il faut prioriser SSH quand c’est possible. Mais, je suis d’accord qu’il est encore très utile pour tester rapidement si un port est ouvert ou non (d’ailleurs j’avais prévu « une suite » en ce sens).

      Répondre
      • J’imagine que tu va parler de nmap 🙂

        Pour repondre aux commentaires precedent, il ne faut pas oublier les CVE telnet client et server qui peuvent permettrent des exploits,

        Sylvain

        Répondre
    • Il est temps de basculer sur la commande powershell test-connection your_ip -port your_port_number 🙂

      Répondre
      • Sauf mélange de ma part, ce serais plutôt :
        – ping => Test-Connection
        – telnet => Test-NetConnection -Port
        Ceci dit, ce pourrais faire l’objet d’un article : ne plus utiliser les anciennes commandes DOS et passer sur du full PowerShell 😉

        Répondre
        • J’ai prévu un article sur la méthode Telnet et un autre sur la méthode PowerShell 🙂

          Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.