Le protocole Telnet pour les débutants (et pourquoi vous devez l’éviter)
Sommaire
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.
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.
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).
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.
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.
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.
C’est risqué de l’utiliser dans le seul but de voir si un port est ouvert quand on vise une ip précise ?
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.
Oui c’est vrai, personnellement il m’arrive d’utiliser le telnet pour voir si un port est ouvert assez fréquement
Y’a plus efficace aujourd’hui que le telnet : 1 commande intégrée à Powershell :
Test-NetConnection -Computer toto -Port 22
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!! 😉 )
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).
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
Il est temps de basculer sur la commande powershell test-connection your_ip -port your_port_number 🙂
ou un nmap, voire un netcat?
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 😉
J’ai prévu un article sur la méthode Telnet et un autre sur la méthode PowerShell 🙂