Livebox Tutoriaux Serveur WEB FTP FTP Actif ou FTP Passif, l'explication ...
FTP Actif ou FTP Passif, l'explication ... Imprimer Envoyer
Écrit par 20100team   
Jeudi, 13 Avril 2006 14:59
Introduction
 
  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.
  J'espère que le texte qui suit lèvera les doutes sur la façon de supporter FTP dans un environnement avec Firewall.

Les Bases

  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.

FTP Actif
 
  Dans le mode FTP Actif, le client se connecte depuis un n° de Port aléatoire (N>1023) vers le Port de commandes du Serveur FTP, le Port 21. Le client se met alors à l'écoute du Port N+1 et envoie la commande FTP PORT N+1 au Serveur FTP. Le Serveur se connecte alors au client sur ce Port de données, à partir de son port de données local, le Port 20.
 
  Du point de vue d'un Firewall côté Serveur, pour supporter le mode FTP actif, les Ports de communication suivants doivent être ouverts :
- Le Port 21 du Serveur, depuis n'importe où (le client initialise la connexion),
- Le Port 21 du Serveur, vers des Ports >1023 (le Serveur répond sur le Port de contrôle du client),
- Le Port 20 du Serveur, vers n'importe où (le Serveur initialise la connexion de données vers le Port de données du client),
- Le Port 20 du Serveur, depuis n'importe où (le client acquitte la réception des données sur le Port de données du Serveur).
 
  Schématiquement, voici à quoi ressemble une telle connexion :
 
  À l'étape 1, le Port de commande du client contacte le Port de commande du Serveur et lui envoie la commande PORT 1027. Le Serveur acquitte alors sur le Port de commande du client à l'étape 2. À l'étape 3, le serveur initialise une connexion sur son Port de données local vers le Port de données du client spécifié précédemment. Finalement, le client acquitte les données reçues à l'étape 4.
 
  Le principal problème avec le mode FTP Actif est plutôt du côté du client. Le client FTP ne réalise pas effectivement la connexion sur le Port de données du Serveur, il informe en fait le Serveur du n° de Port sur lequel il s'est mis à l'écoute et c'est le Serveur qui se connecte sur le Port spécifié par le client. Du point de vue d'un Firewall du côté du client, ça apparaît comme une connexion entrante, réalisée depuis un système à l'extérieur vers un client en interne, chose qui est généralement bloquée.
FTP Passif
 
  Dans le but de résoudre ce problème, où un Serveur initialise une connexion vers le client, une méthode différente de connexion a été développée. Connue sous le nom de Passive mode, ou PASV, une fois que cette commande est utilisée par le client pour indiquer au Serveur qu'il est en mode Passif.
 
  En mode FTP Passif, c'est le client qui initialise les 2 connexions ; on s'affranchit alors du problème où le Firewall filtre les demandes de connexion entrantes sur le Port de données du client de la part du Serveur. Lorsqu'il ouvre une connexion FTP, le client utilise 2 Ports locaux non privilégiés aléatoires (N>1023 et N+1). Le premier Port contacte le Serveur sur le Port 21, mais, au lieu de lui envoyer une commande PORT pour que le Serveur se connecte sur son Port de données, le client envoie la commande PASV. Il en résulte que le Serveur utilise alors un Port aléatoire non privilégié (P>1023) et envoie la commande PORT P au client. Le client initialise alors une connexion depuis sont Port N+1 vers le Port P du Serveur pour le transfert des données.
 
  Du point de vue d'un Firewall côté Serveur, pour supporter le mode FTP passif, les Ports de communication suivants doivent être ouverts :
- Le Port 21 du Serveur, depuis n'importe où (le client initialise la connexion),
- Le Port 21 du Serveur, vers des Ports >1023 (le Serveur répond sur le Port de contrôle du client),
- Les Ports >1023 du Serveur, depuis n'importe où (le client initialise la connexion de données vers le Port spécifié par le Serveur),
- Les Ports >1023 du Serveur, vers des Ports >1023 (le Serveur envoie les données sur le Port de données du client).
 
  Schématiquement, voici à quoi ressemble une connexion FTP en mode Passif :
 
  À l'étape 1, le client contacte le Serveur sur son Port de commande et envoie la commande PASV. Le Serveur répond à l'étape 2 avec la commande PORT 2024, pour indiquer au client sur quel Port il s'est mis à l'écoute pour la connexion de données. À l'étape 3 le client initialise alors la connexion de données depuis son Port de données vers le Port de données spécifié du Serveur. Finalement, le Serveur envoie les données à l'étape 4, vers le Port de données du client.
 
  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 des 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.
  
  Aujourd'hui, beaucoup d'utilisateurs utilisent leur Explorateur Internet comme client FTP ; la plupart de ces Browsers ne supportent que le mode Passif, lorsqu'ils accèdent à des URL de type ftp://. Ça peut être bon, ou mauvais, selon la façon dont sont configurés les Firewall et Serveurs FTP et les modes qu'ils supportent.
  
  Article largement inspiré du site SlackSite.com! et dont l'original, en Anglais, est accessible ici http://slacksite.com/other/ftp.html.

Mise à jour le Jeudi, 13 Avril 2006 17:51
 
Bannière