Chapitre III : le protocole telnet Services Internet & Intranet Chapitre III : le protocole telnet MANSOURI Asma ISET Beja-2011
Plan 1. Généralité 2. La notion de terminal virtuel 3. Le principe d'options négociées 4. Les règles de négociation
1. Généralité Le protocole Telnet est un protocole standard d'Internet utilisé pour émuler une connexion d'un client sur un serveur Il utilise TCP comme protocole de transport pour le transfert des commandes et réponses du serveur On peut également définir Telnet comme un ensemble de logiciels qui émule un accès par terminal sur une machine distante
1. Généralité (Suite) Une session Telnet suppose un client qui joue le rôle de terminal déporté et un serveur Telnet qui reçoit la requête et qui ouvre la connexion en écoutant sur le port TCP 23 Cela permet entre autre d'intervenir et de maintenir des systèmes à plusieurs milliers de kilomètres et d’administrer par ligne de commande à distance Plusieurs modes de connexion sur un serveur Telnet sont possibles parmi lesquels : telnet adresse_IP_du_Serveur telnet Nom_du_Serveur telnet adresse_IP_du_Serveur port telnet Nom_du_Serveur port
1. Généralité (Suite) De nombreuses autres options sont disponibles: Pour les connaître, une aide du système utilisé est indispensable Il est également vivement conseillé de consulter les RFC suivantes 854 (Spécifications du Protocole Telnet) et 855 (Spécification des Option de Telnet) Il est impératif de disposer d'un mot de passe pour se connecter sur une machine distante, il faut fournir un mot de passe Le port est souvent définit par défaut sur les systèmes et il n'est pas nécessaire de le préciser
1. Généralité (Suite) Lorsque l'on demande une session Telnet, le système lance une connexion et affiche les messages de la figure suivante sur laquelle on peut lire : La tentative de connexion à la machine par son adresse IP ou par son nom Un caractère d‘échappement nous est indiqué, très important dans les plates-formes Unix ou Linux Dans ce cas, les versions du système et du noyau sont affichées Ces informations sont souvent utiles pour des utilisateurs avertis Sur les plates-formes Unix ou Linux, le serveur Telnet est actif par l'intermédiaire d'un démon (daemon en anglais) telnetd
1. Généralité (Suite) Une fois les login et mot de passe saisis, la date du jour, le terminal de connexion et un message d'invite s'affichent indiquant que l'on est bien connecté et les saisies des opérations peuvent commencer Au fur et à mesure que l'utilisateur tape sur le clavier, les caractères sont reçus par le serveur Telnet et transmis au système d'exploitation sur lequel il s'exécute
1. Généralité (Suite) Ce protocole est un protocole de base, sur lequel s'appuient certains autres protocoles de la suite TCP/IP (FTP, SMTP, POP3, ...) La transmission de données à travers Telnet consiste uniquement à transmettre les octets dans le flux TCP Le protocole Telnet précise tout de même que les données doivent par défaut ( si aucune option ne précise le contraire) être groupées dans un tampon avant d'être envoyées ligne par ligne Le protocole Telnet repose sur trois concepts fondamentaux : Le paradigme du terminal réseau virtuel (NVT, Network Virtual Terminal) ; Le principe d'options négociées ; Les règles de négociation.
2. La notion de terminal virtuel Aux débuts d'Internet, le réseau (ARPANET) était composé de machines dont les configurations étaient très peu homogènes (claviers, jeux de caractères, résolutions, longueur des lignes d'affichage) D'autre part, les sessions des terminaux possédaient également leur propre façon de contrôler les flux de données en entrée/sortie Ainsi, au lieu de créer des adaptateurs pour chaque type de terminal afin qu'il puisse y avoir une interopérabilité de ces systèmes, il a été décidé de mettre au point une interface standard, appelée NVT (Network Virtual Terminal), fournissant une base de communication standard Le protocole Telnet consiste ainsi à créer une abstraction du terminal, permettant à n'importe quel hôte de communiquer avec un autre hôte sans connaître ses caractéristiques
3. Le principe d'options négociées Les spécifications du protocole Telnet permettent de prendre en compte le fait que certains terminaux puissent proposer des services additionnels, non définis dans les spécifications de base, afin de pouvoir utiliser des fonctions avancées Ainsi, ces fonctionnalités se traduisent en termes d'options (RFC 855 à 861) Le protocole Telnet propose donc un système de négociations d'options permettant l'utilisation de fonctions avancées sous forme d'options de part et d'autre en initiant des requêtes pour en demander l'autorisation au système distant
3. Le principe d'options négociées (Suite) Les options de Telnet affectent séparément chaque direction du canal de données Ainsi, chaque extrémité peut définir les options qu'elle : veut utiliser (DO) refuse d'utiliser (DON'T) veut que l'autre extrémité utilise (WILL) refuse que l'autre extrémité utilise (WON'T) De cette façon, chacune des parties peut émettre une demande d'utilisation d'une option. L'autre partie doit alors répondre si elle accepte ou non l'utilisation de l'option Dans le cas où la requête concerne une désactivation d'option, le destinataire de la requête ne doit pas refuser pour être totalement compatible avec le modèle NVT
3. Le principe d'options négociées (Suite) Le protocole Telnet supporte 255 codes d'options extensible (Le RFC 855 explique comment documenter toute nouvelle option) Voici quelques exemples d'options courantes : Code décimal Nom RFC 1 echo (écho) 857 24 terminal type (type de terminal) 1091 31 window size (taille de fenêtre) 1073 32 terminal speed (vitesse du terminal) 1079 33 remote flow control (contrôle de flux à distance) 1372 34 line mode (mode ligne) 1184 36 environment variables (variables d'environnement) 1408 Le RFC 855 explique comment documenter toute nouvelle option
4. Les règles de négociation Des règles de négociation d'options permettent d'éviter des situations de bouclage Les requêtes ne doivent être émises que lors d'un changement de mode Lorsqu'une des parties reçoit une requête de changement de mode, il ne doit l'acquitter que s'il ne se trouve pas déjà dans le mode approprié Une requête ne doit être insérée dans le flux de données qu'à l'endroit où elle prend effet
Chapitre IV : le protocole FTP Services Internet & Intranet Chapitre IV : le protocole FTP MANSOURI Asma ISET Beja-2011
Plan 1. Le rôle du protocole FTP 2. Le modèle FTP 3. Les commandes FTP 4. Les réponses FTP 5. Les modes FTP 5.1. Le mode Actif 5.2. Le mode Passif 6. Authentifications FTP 6.1. Authentification FTP anonyme 6.2. Authentification FTP de base 7. Serveurs FTP ProFTPd – VsFTPd – PureFTPd
Introduction Le protocole FTP (File Transfer Protocol) est un protocole de transfert de fichier 1971 : La mise en place de ce protocole FTP (décrit dans le RFC 141) entre les machines du MIT (Massachussetts Institute of Technology) De nombreux RFC ont ensuite apporté des améliorations au protocole de base, mais les plus grandes innovations datent de juillet 1973 Le protocole FTP est actuellement défini par le RFC 959 (File Transfer Protocol (FTP) - Specifications)
1. Le rôle du protocole FTP Le protocole FTP définit la façon selon laquelle des données doivent être transférées sur un réseau TCP/IP Le protocole FTP a pour objectifs de : permettre un partage de fichiers entre machines distantes permettre une indépendance aux systèmes de fichiers des machines clientes et serveur permettre de transférer des données de manière efficace
2. Le modèle FTP Le protocole FTP s'inscrit dans un modèle client-serveur Une machine envoie des ordres (le client) et une autre attend des requêtes pour effectuer des actions (le serveur) Lors d'une connexion FTP, deux canaux de transmission sont ouverts : Un canal pour les commandes (canal de contrôle) Un canal pour les données Ainsi, le client comme le serveur possèdent deux processus permettant de gérer ces deux types d'information : le DTP (Data Transfer Process) est le processus chargé d'établir la connexion et de gérer le canal de données. Le DTP côté serveur est appelé SERVER-DTP, le DTP côté client est appelé USER-DTP le PI (Protocol Interpreter) est l'interpréteur de protocole permettant de commander le DTP à l'aide des commandes reçues sur le canal de contrôle
2. Le modèle FTP (Suite) Le Protocol Interpreter est différent sur le client et sur le serveur Le SERVER-PI est chargé d’écouter les commandes provenant d'un USER-PI sur le canal de contrôle sur un port donné: Etablir la connexion pour le canal de contrôle Recevoir les commandes FTP du USER-PI Répondre et piloter le SERVER-DTP Le USER-PI est chargé d’établir la connexion avec le serveur FTP: Envoyer les commandes FTP Recevoir les réponses du SERVER-PI Contrôler le USER-DTP si besoin
2. Le modèle FTP (Suite) Lors de la connexion d'un client FTP à un serveur FTP: Le USER-PI initie la connexion au serveur selon le protocole Telnet Le client envoie des commandes FTP au serveur, ce dernier les interprète, pilote son DTP, puis renvoie une réponse standard Lorsque la connexion est établie, le serveur-PI donne le port sur lequel les données seront envoyées au Client DTP Le client DTP écoute alors sur le port spécifié les données en provenance du serveur
2. Le modèle FTP (Suite) Les ports de contrôle et de données étant des canaux séparés Il est possible d'envoyer les commandes à partir d'une machine et de recevoir les données sur une autre Il est possible donc de transférer des données entre deux serveurs FTP en passant par un client pour envoyer les instructions de contrôle et en transférant les informations entre deux processus serveurs connectés sur le bon port Dans cette configuration, le protocole impose que les canaux de contrôle restent ouverts pendant tout le transfert de données Ainsi un serveur peut arrêter une transmission si le canal de contrôle est coupé lors de la transmission
2. Le modèle FTP (Suite)
3. Les commandes FTP Toutes les communications effectuées sur le canal de contrôle suivent les recommandations du protocole Telnet Ainsi les commandes FTP sont des chaînes de caractères Telnet (en code NVT-ASCII) terminées par le code de fin de ligne Telnet <CRLF> La séquence <CR>+<LF>, Carriage Return (retour chariot) suivi du caractère Line Feed, notée <CRLF> Si la commande FTP admet un paramètre, celui-ci est séparé de la commande par un espace (<SP>)
3. Les commandes FTP (Suite) Les commandes FTP permettent de préciser : Le port utilisé Le mode de transfert des données La structure des données La nature de l'action à effectuer (Retrieve, List, Store, ...) On distingue trois types de commandes FTP : Les commandes de contrôle d'accès (USER, PASS, …) Les commandes du paramétrage de transfert (PORT, PASV,…) Les commandes de service FTP (RETR, STOR, …)
4. Les réponses FTP Les réponses FTP permettent d'assurer la synchronisation entre client et serveur FTP A chaque commande envoyée par le client, le serveur effectuera éventuellement une action et renverra systématiquement une réponse Les réponses sont constituées d'un code à 3 chiffres indiquant la façon suivant laquelle la commande envoyée par le client a été traitée et dont voici les significations : Le premier chiffre indique le statut de la réponse (succès ou échec) Le second chiffre indique ce à quoi la réponse fait référence Le troisième chiffre donne une signification plus spécifique (relative à chaque deuxième chiffre)
5. Les modes FTP L'une des questions les plus courantes lorsqu'on s'occupe de Firewall ou de problèmes de connexions via Internet est la différence entre FTP Actif et FTP Passif et comment essayer au mieux de supporter les deux FTP est basé exclusivement sur TCP, il n'y a pas d'UDP ... Le service FTP est inhabituel dans la mesure où il utilise 2 Ports différenciés, un Port pour les données et un Port pour les commandes de contrôle Traditionnellement, c'est le Port 21 qui est utilisé pour les commandes et le Port 20 pour le transfert des données La confusion vient du fait que selon le mode utilisé (Actif ou Passif), ce n'est pas toujours le Port 20 qui est utilisé pour les données
5. Les modes FTP a. Le mode actif Avec le mode FTP actif, c’est le client qui établit la connexion pour les commandes et c’est le serveur qui établit celle des données Le client se connecte sur le port 21 pour établir une connexion de commandes à partir de son port source supérieur à 1023 (noté N) Une fois la connexion établie, le client envoie une commande permettant au serveur de connaitre le port à utiliser pour envoyer les données et le client commence alors à écouter sur ce port N+1 Le serveur se connecte alors sur le port N+1 à partir de son port source 20
5. Les modes FTP (Suite) a. Le mode actif 2. Le serveur répond au client avec le port 21 sur le port N du client 1. Le client initie la connexion et se connecte sur le port 21 du serveur à partir d’un port source supérieur à 1023 (N) 3. Le serveur initie la connexion de données avec le port 20 sur le port N+1 du client 4. Le client répond au serveur (ACK) à partir de son port N+1 sur le port 20 du serveur
5. Les modes FTP (Suite) b. Le mode passif Avec le mode FTP passif, c’est le client qui initie les deux connexions (commandes et données) au serveur Cela résout le problème des pare-feu car seuls les flux déjà établis ou existants sont autorisés à entrer Lorsqu’une connexion mode passif est établie, le client ouvre deux ports : l’un supérieur à 1023 (noté N) et l’autre N+1 Le premier port contacte le serveur FTP sur son port 21 et envoie par la même occasion une commande « PASV » qui permet au serveur d’ouvrir un port supérieur à 1023 (noté P) et de renvoyer le résultat au client avec la commande « PORT P » Le client peut alors à partir du second port ouvert (N+1) établir une connexion sur le port P du serveur pour le transfert de données
5. Les modes FTP (Suite) b. Le mode passif 2. Le serveur répond avec le port 21 sur le port N du client et répond aussi à la requête « PASV » par un « PORT P » 3. Le client connait le port de données du serveur (P) et peut s’y connecter à partir de son port N+1 1. Le client initie la connexion sur le port 21 du serveur à partir d’un port source >1023 (N) et envoie une requête « PASV » 4. La réponse du serveur au client pour les données se fait du port P (côté serveur) au port N+1 (côté client)
5. Les modes FTP (Suite) b. Le mode passif Alors que le mode Passif résout la plupart des problèmes du point de vue du client, il crée tout un tas d'autres problèmes du côté du Serveur Le principal problème étant le besoin de devoir accepter les connexions entrantes vers un n° de Ports élevés du Serveur Heureusement, beaucoup de Logiciels Serveurs FTP permettent de spécifier une étendue de Ports que le Serveur pourra utiliser pour les connexions de données Le second problème est la compatibilité et la résolution des problèmes des clients, selon qu'ils supportent (ou non) le mode FTP Passif
6. Authentifications FTP a. Authentification FTP anonyme On peut configurer notre serveur FTP pour autoriser l'accès anonyme aux ressources FTP Si on sélectionne l'authentification anonyme pour une ressource, toutes les demandes concernant cette ressource sont traitées sans demander ni le nom d'utilisateur ni de mot de passe
6. Authentifications FTP b. Authentification FTP de base Pour établir une connexion FTP avec notre serveur Web à l'aide de l'authentification de base, les utilisateurs doivent ouvrir une session en utilisant un nom d'utilisateur et un mot de passe correspondant à un compte valide Si le serveur FTP ne parvient pas à vérifier l'identité d'un utilisateur, il renvoie un message d'erreur L'authentification FTP est assez peu sécurisée, car l'utilisateur transmet son mot de passe et son nom d'utilisateur sur le réseau sans les crypter
7. Serveur FTP On trouve de nombreux serveurs FTP pour Linux/Unix/BSD comme : ProFTPd Pure-FTPd VsFTPd Wing FTP Server Sous Windows, on trouve : FileZilla Server
7. Serveur FTP a. ProFTPd ProFTPd est un serveur FTP libre, puissant et parfaitement sécurisé Distribué selon les termes de la licence GNU GPL Bien documenté et la plupart des configurations sont proches de celles des exemples fournis avec le logiciel Son unique fichier de configuration, proftpd.conf, utilise une syntaxe similaire à celle d‘Apache permettant ainsi d'homogénéiser les fichiers de configuration
7. Serveur FTP (Suite) a. ProFTPd Le logiciel permet de configurer plusieurs serveurs FTP virtuels et a la possibilité d'être utilisé dans un environnement dédié (chroot) Il peut être lancé comme un démon ou comme service inetd ProFTPd est compatible IPv6 Son architecture est modulaire, ce qui a permis d'écrire des extensions pour le support de la cryptographie SSL/TLS (protocole FTPS) et l'extension de l'authentification via des bases RADIUS, LDAP ou SQL Le module SQL permet, en outre, le stockage en base de données des opérations effectuées sur le serveur FTP La version 1.3.2 apporte également, via le module mod_sftp, le support des protocoles SFTP et SCP issus de SSH
7. Serveur FTP b. VsFTPd VsFTPd, forme raccourcie de Very Secure FTP Daemon, est un serveur FTP libre simple et sécurisé Il a été développé dans l'optique de la meilleure sécurité possible afin de combler les failles des serveurs FTP classiques Il bénéficie de toutes les options habituelles des serveurs FTP classiques (proFTPd, Pure-FTPd...) et prend en charge l’IPv6 ainsi que SSL Contrairement aux autres serveurs FTP, aucune faille de sécurité n'a jamais été remarquée dans VsFTPd Ce serveur est notamment utilisé à grande échelle par des entreprises
7. Serveur FTP (Suite) b. VsFTPd La configuration par défaut de VsFTPd est très restrictive : Seul le compte anonyme est autorisé à se connecter au serveur, et en lecture seule Les utilisateurs ne peuvent accéder qu'à leur compte Fonctions de VSFTPd : Configuration accessible Utilisateurs virtuel Adresses IP virtuelles Limitation de la bande passante IPv6 Support du chiffrement au travers de SSL intégré Il est distribué selon les termes de la licence GNU GPL
7. Serveur FTP c. Pure-FTPd Ce programme (Pure-FTPd) sous licence BSD intègre depuis sa conception l'aspect sécurité Il propose l'exécution avec séparation des privilèges et peut s'exécuter en environnement non-root en exécutant sa propre version de l'appel chroot() Pure-FTPd propose comme fonctionnalités: le contrôle de la bande passante, l'établissement de quotas de téléchargement, les alias de répertoires, la création d'hôtes virtuels On peut également afficher des messages personnalisés (bannières et fortunes) lors de la connexion des utilisateurs Pure-FTPd peut exécuter un script à la suite d'une upload
7. Serveur FTP (Suite) c. Pure-FTPd Il peut également refuser des utilisateurs si la charge système devient trop importante Il supporte également la création d'utilisateurs virtuels n'ayant pas de compte sur le système. Une option anti-warez permet de réagir face à un répertoire accessible en écriture Les utilisateurs peuvent utiliser les protocoles SSL/TLS afin de chiffrer l'envoi de leur identifiant et mot de passe vers le serveur (nécessite un client FTP compatible) Plusieurs serveurs FTP Pure-FTPd indépendants peuvent s'exécuter de façon concurrente sur la même machine