Tester une ouverture de ports avec Telnet

Telnet n’est pas utilisé en production car il n’est pas sécurisé. En revanche, rien n’empêche de l’utiliser afin de tester qu’un programme répond bien sur un port donné, et qu’il fournit bien le retour attendu. Pour cela, il faut connaître le fonctionnement du protocole que nous allons requêter. En effet, il va falloir fournir les paramètres attendus par le protocole donné.

Utilisation de Telnet

L’utilisation de telnet est très simple. Il suffit de passer en argument au programme telnet l’ip du serveur distant et le port sur lequel le daemon écoute : telnet 127.0.0.1 22

Cette commande vérifie qu’on a bien un service qui écoute sur le port 22 (habituellement SSH) en local.

Une fois que l’on a terminé nos test, il suffit de tapper la commande QUIT afin de fermer l’outil telnet.

Le protocole HTTP

Pour vérifier que le serveur distant répond bien sur le port HTTP (habituellement 80), on utilise la commande suivante : telnet 127.0.0.1 80.

Ensuite, il va falloir préciser la requête que l’on souhaite envoyer au serveur HTTP :

GET /index.html HTTP/1.1
Host:wiki.djeeks.com

Il est, bien-sûr, possible de modifier la requête pour l’adapter à votre configuration. La page reqêtée peut être en PHP, par exemple (et pas forcément l’index). Il faut également adapter l’host à votre serveur.

Attention : Pour le protocole HTTPS (généralement 443), la requête telnet présentée ci-dessus ne fonctionnera pas. A la place de telnet, on va utiliser ici la commmande openssl : openssl s_client -connect IP_SERVEUR:443 ou openssl s_client -host IP_SERVEUR -port 443.

On peut également demander la vérification du certificat racine via l’option : -CAfile /etc/ssl/certs/ca-certificates.crt.

Ensuite, la requête est formaté comme pour telnet puisque nous avons toujours à faire au protocole HTTP même s’il est associé à SSL/TLS.

Le protocole SMTP

Lorsqu’on souhaite requêter un serveur mail SMTP (traditionnellement sur le port 25), on utilise la commande : telnet serveur.mail.com 25

Ensuite, il va bien falloir fournir les bons paramètres au protocole SMTP :

EHLO test.com  (Le client s'identifie via cette commande : envoie de l'IP ou du nom de domaine du client) 
MAIL FROM:
RCPT TO:
DATA

Dans la partie DATA, il faut saisir le corps du mail. On peut le précéder d’une ligne Subject:Objet du mail et/ou Reply-to:adresse@retour.fr. Enfin, un point (tout seul sur une ligne) indiquera la fin du corps de ce mail de test.

Pour le protocole SMTP avec SSL/TLS, le port par défaut est 465. En revanche, l’option starttls permet de faire du SSL/TLS sur le même port que le protocole non chiffré (ici le port 587). Comme pour le protocole HTTPS, nous allons utiliser openssl à la place de telenet : openssl s_client -connect IP_SERVEUR:587 -starttls smtp

La suite de la requête est identique à celle en telnet.

Attention : Si le service (avec ou sans TLS/SSL) nécessite une authentification, Il faudra fournir les accès (identifiant et mot de passe) encodés en base64.