Les protocoles FTP, FTPS et SFTP pour les débutants

I. Présentation

Dans cet article, nous allons découvrir trois protocoles incontournables : FTP, FTPS et SFTP. Ces trois protocoles servent à effectuer du transfert de fichiers, aussi bien pour envoyer que recevoir, mais avec des différences notamment au niveau de la sécurité.

Tutoriel disponible au format vidéo en français :

II. Le protocole FTP

FTP signifie "File Transfer Protocol", c'est-à-dire un protocole de transfert de fichiers. Pour la petite histoire, il s'agit d'un protocole ancien apparu dans les années 1970 mais sa première version finale est de 1985 et correspond à la RFC 959. Depuis quelques RFC supplémentaires sont apparues afin d'intégrer les évolutions du protocole.

Il s'agit d'un protocole qui permet d'envoyer et recevoir des fichiers et qui fonctionne sur le mode client/serveur. Un client FTP va établir une connexion TCP avec un serveur FTP dans le but d'échanger des données.

Cette connexion s'appuie sur deux canaux différents :

  • Un canal de contrôle qui sert à l'authentification, à l'envoi des commandes FTP ou encore à la navigation dans l'arborescence du serveur FTP
  • Un canal de données qui sert tout simplement au transfert des données, que ce soit pour envoyer ou recevoir

L'inconvénient principal du protocole FTP, c'est qu'il n'est pas sécurisé. Pour cause, il a été inventé à une époque où la sécurité n'était pas aussi importante qu'aujourd'hui. Lorsque vous établissez une connexion avec un serveur FTP, l'identifiant, le mot de passe et toutes les commandes que vous passez, transite en clair sur le réseau.

A. FTP : mode actif et mode passif

Lorsque l'on configure un serveur FTP, il y a deux possibilités : utiliser le mode actif ou le mode passif.

Comme nous pouvons le voir sur le schéma ci-dessous, qui représente le mode actif, le canal de contrôle s'établit sur le port 21 du serveur FTP. Ensuite, le canal de données s'établit sur le port 20. Par conséquent, le mode actif s'appuie sur deux ports : 20 et 21.

FTP

Concernant le mode passif, le canal de contrôle s'effectue également sur le port 21/TCP, comme pour le mode actif. Ensuite, pour établir le second canal, canal de données donc, le client FTP et le serveur FTP vont définir un port à utiliser dans le but de passer outre l'éventuel pare-feu. Dans le mode actif, c'est le serveur FTP qui initie le canal sur le port 20 à destination du client : s'il y a un pare-feu, il y a des chances que ce soit bloqué puisqu'il s'agit d'une connexion entrante. Avec le mode passif, on a une réponse à cette problématique.

Autrement dit, le port 20 n'est pas utilisé avec le mode passif mais un autre port supérieur à 1024.

B. Les commandes FTP

Concernant la notion de commandes FTP, il faut savoir qu'il en existe une trentaine. Voici quelques exemples de commandes :

  • GET ou RETR : récupérer un fichier
  • PUT : envoyer un fichier
  • MKD : créer un dossier
  • CLOSE : fermer la session FTP en cours
  • Etc.

Pour récupérer un fichier, après avoir établit une connexion avec le serveur, nous pourrons faire :

get monfichier.pdf

C. Clients FTP et serveurs FTP

Pour faciliter l'usage du protocole FTP, il existe des logiciels que l'on appelle des clients FTP. Sur Windows, les deux que j'utilise personnellement et qui sont reconnus sont FileZilla et WinSCP. Sur Linux, il y a tout simplement l'outil "ftp" en ligne de commande.

PowerShell peut également jouer le rôle de client FTP : se connecter à un serveur FTP avec PowerShell

Pour la partie serveur, c'est pareil il existe diverses solutions. Sur Windows, nous pouvons citer FileZilla Server ainsi que la solution IIS de Microsoft qui intègre un module FTP. Sur Linux, il existe plusieurs solutions notamment ProFTPd et PureFTPd.

III. Le protocole FTPS

Le protocole FTPS n'est autre que la déclinaison sécurisée du protocole FTP. Le chiffrement SSL/TLS vient s'ajouter pour sécuriser les communications entre le client FTP et le serveur FTP. Pour le reste, c'est identique.

Néanmoins, il faut préciser que le FTPS fonctionne selon deux modes :

  • FTP explicite : dans ce cas la connexion s'établie sur le port 21 et le client FTP négocie avec le serveur FTP pour chiffrer la connexion. Des commandes FTP sont utilisées : "AUTH TLS" ou "AUTH SSL" et "PROT P"
  • FTP implicite : le client commence directement la connexion avec le chiffrement SSL et va utiliser plutôt le port 990 que le port 21

En fonction du mode, le protocole FTPS peut utiliser le port 990 en TCP pour le canal de contrôle et le port 989 pour le canal de données. Le port 21 peut également être utilisé.

FTPS

IV. Le protocole SFTP

Pour terminer intéressons nous au protocole SFTP. Tout d'abord, il faut savoir que le SFTP signifie "SSH File Transfer Protocol" ou "Secure File Transfer Protocol". Nous pouvons dire les deux.

En plus du protocole FTP, il va s'appuyer sur un deuxième protocole : le SSH. Le poste client va établir un tunnel SSH avec le serveur distant, et le flux FTP passera dans ce tunnel SSH, ce qui signifie que le flux est sécurisé.

Il n'est pas nécessaire d'avoir un serveur FTP pour établir une connexion à l'aide du SFTP. Par contre, vous devez avoir un serveur SSH sur le serveur distant donc la connexion s'effectue sur le port SSH, à savoir le port 22 par défaut. Une seule connexion à établir et ensuite tout se passe dans le tunnel SSH.

SFTP

Lorsque le tunnel est établit, vous pouvez effectuer du transfert de fichiers de façon sécurisée via FTP, avec les logiciels habituels : FileZilla et WinSCP.

Pour en savoir plus, je vous oriente vers ce chapitre de notre cours :⭐ SFTP

V. Le mot de la fin

En résumé, vous devez prioriser l'utilisation du FTPS ou du SFTP qui sont deux solutions sécurisées contrairement au FTP qui ne l'est pas. Avec le FTPS et le SFTP, les identifiants et les données sont chiffrées sur le réseau. Sur un serveur où vous avez un accès SSH, le SFTP est une bonne solution car nous n'avez pas besoin de monter un serveur FTP. Tout dépend de ce que vous souhaitez faire : de la gestion de fichiers multi-utilisateurs ou simplement du transfert de fichiers ponctuel sur un serveur.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

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.

florian has 3285 posts and counting.See all posts by florian

3 thoughts on “Les protocoles FTP, FTPS et SFTP pour les débutants

  • Bonjour,

    « En plus du protocole FTP, il va s’appuyer sur un deuxième protocole : le SSH »
    Attention, SFTP n’a rien à voir avec FTP. SFTP est une extension du protocole SSH.

    Répondre
    • Bonjour Bruno,

      C’est vrai ? 🙁
      Mais, il me semble quand même que le SFTP en tant que FTP+SSH existe malgré tout ?

      Cordialement
      Florian

      Répondre
  • Ne serait-ce pas l’inverse pour le mode passif/actif ? J’ai un doute haha.

    Répondre

Répondre à Robert Annuler la réponse

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.