Réseau - Web - GNU/Linux

2018 19 octobre

Modes actif ou passif, ports ftp

Rédigé par Marc GUILLAUME | 1 commentaire

Le cadre général

Si un client rencontre des problèmes en se connectant à votre serveur FTP, une des premières choses à contrôler est le mode de transfert de données qu'utilise votre serveur FTP. Suivant la configuration du réseau, ce mode est soit actif, soit passif. Ce document va vous aider à comprendre les points importants dans la différence entre le FTP actif et passif et vous apprendra à éviter les problèmes de connexion liés à ces deux modes.
Avant de discuter quel mode est adapté à quel scénario, commençons par aborder un point crucial : les deux canaux d'une session FTP.

le canal de commande et le canal de données FTP

Une session FTP classique se déroule en utilisant deux canaux : le canal de commande (ou de contrôle) et le canal de données. Comme leur nom l'indique, le canal de commande est utilisé pour la transmission des commandes ainsi que la réceptions des réponses à ces commandes, alors que le canal de données est utilisé pour l'échange des données.

A moins que vous n'ayez modifié la configuration par défaut, un serveur FTP envoit normalement ses commandes en utilisant le port 21. Par contre le port utilisé pour le transfert des données va dépendre du mode de transfert choisi. Si vous choisissez le mode actif, le canal de données sera normalement le port 20. Mais si vous choisissez le mode passif, alors le port utilisé sera un port alléatoirement choisi.

Vous noterez que les ports auxquels nous faisons référence jusque là sont uniquement les ports côté serveur. Nous parlerons des ports côté client un peu plus bas.

Le mode FTP actif

De ces deux modes, le mode actif est le plus ancien. C'était le mode imaginé dans les premiers temps de l'informatique, lorsque les mainframes étaient plus courants et que les attaques informatiques n'étaient pas aussi fréquentes.

Voici une explication simplifiée de la façon dont se déroule une connexion en mode actif, résumée en deux étapes. Des étapes importantes (par exemple, les réponses ACK) ont été omises pour simplifier les choses.

  1. Un utilisateur se connecte depuis un port alléatoirement choisi au moyen d'un client FTP sur le port 21 du serveur. Il envoit la commande de port, indiquant à quel port côté client le serveur doit se connecter. Ce port est celui qui devra par la suite être utilisé pour l'échange des données et est différent de celui utilisé dans l'étape actuelle pour la transmission des commandes.
  2. Le serveur se connecte, depuis son port 20 sur le port que le client lui a indiqué pour effectuer le transfert de données. Une fois la connexion établie, le transfert de données se fera au travers de ces ports client et serveur.

Le mode FTP passif

Dans le mode passif, le client initialise toujours une connexion sur le port commande du serveur. Mais au lieu d'envoyer le numéro la commande PORT indiquant le port à utiliser sur le client, il envoit la commande PASV qui est une requête envoyée au serveur du numéro de port du serveur sur lequel se connecter pour la réception des données. La réponse du serveur FTP indique le numéro du port qu'il a ouvert pour effectuer le transfert de données.

Voici, en résumé, le fonctionnement du mode passif

  1. Le client se connecte depuis un port arbitrairement choisi sur le port 21 du serveur et lui envoit une commande PASV. Le serveur répond, indiquant quel port (alléatoirement choisi) il a ouvert pour le transfert des données.
  2. Le client se connecte depuis un autre port alléatoirement choisi au port indiqué par le serveur dans sa réponse. Une fois la connexion établie, les données sont échangées au travers de ces deux ports.

Mode actif ou mode passif, lequel choisir ?

Les deux diagrammes ci-dessus sont volontairement simplifiés pour mettre en relief la principale différence entre les transferts de données par FTP en mode actif et passif. Si vous examinez ces schémas, la chose que vous devriez tout de suite remarquer est la direction opposée des flèches du bas (qui représentent dans les deux cas le canal de données).

Dans cette partie nous allons nous concentrer sur ces deux flèches et aux ports leur étant associées.

Dans le mode actif, la seconde flèche pointe vers le client. Ce qui signifie que le client a initialement spécifié le port qu'il a de son côté ouvert pour l'échange de données, et c'est le serveur qui initie la connexion.

A l'opposé, dans le mode passif, la seconde flèche pointe sur le serveur. Ce qui signifie que c'est le serveur qui a indiqué le port sur lequel le client devait initier la connexion.

Le deux façons de faire ne devraient pas poser le moindre problème, si il n'existait pas de pare-feux. Mais les menaces informatiques étant de plus en plus nombreuses, il n'existe plus guère de machines qui ne soient situées derrière un pare-feux. Dans la plupart des cas, les clients sont situés derrière un pare-feu ou derrière une passerelle NAT (network adress translation) qui se comporte en gros comme un pare-feu. Dans ce cas, seuls quelques rares ports (voir aucun) seront accessibles depuis l'extérieur.

Il ne faut pas perdre de vue que dans le mode actif, le serveur tente de se connecter à un port choisi arbitrairement par le client. Il y a de fortes chances pour que ce port ne soit pas un de ceux éventuellement laissés ouverts sur le pare-feu. La conséquence est que le tentative de connexion du serveur sera bloquée par le pare-feu, et qu'aucune connexion ne pourra être établie.

Dans cette configuration le mode passif ne posera pas de problème. Parce que le client, cette fois, sera celui qui initie la connexion, une chose normalement autorisée par le pare-feu côté client.

Bien sûr, il y a généralement également un pare-feu côté serveur. Mais le rôle d'un serveur est de recevoir des connexions, Et un administrateur qui offre un serveur FTP doit logiquement s'adapter à la situation et ouvrir une plage de ports permettant de satisfaire aux exigences du mode passif.

Considérations de sécurité lors de la mise en place d'un FTP passif

Comme indiqué plus haut, si vous administrez un serveur FTP, il serait préférable que vous configuriez votre serveur pour accepter le mode FTP passif. Il faut cependant garder à l'esprit que, ce faisant, vous pourriez rendre votre système plus vulnérable aux attaques. Rappellez-vous que dans le mode passif, les clients sont sensés pouvoir se connecter à des ports choisis alléatoirement.

Du coup, pour accepter ce mode, non seulement votre serveur doit disposer de plusieurs ports disponibles, mais votre pare-feu doit également autoriser les connexions à ces ports !

Mais plus il existe de ports ouverts sur une machine, plus il y a de ports à attaquer. Pour atténuer le risque, une bonne solution est de spécifier une plage de numéros de ports à ouvrir sur votre serveur, et de n'ouvrir que ces ports sur votre pare-feu.

Mais alors, quelle doit être la taille de cette plage de ports ?

Le nombre de ports à utiliser en mode FTP passif dépend largement du nombre de connexions concurrentes que vous vous attendez à recevoir. Cependant, bien que, par exemple, 100 transferts de fichiers simultanés ne nécessitent que 100 ports ouverts sur le serveur, gardez toujours en tête que ce que la plupart des gens considèrent comme « un transfert de fichier unique » peut en fait consister en beaucoup plus d'un. Je m'explique :

Pour un utilisateur de base, tout ce qu'il envoit ou reçoit comme données entre le moment où il se connecte au serveur FTP et le moment où il se déconnecte, fait partie d'un seul transfert. Mais ce n'est pas le cas. Chaque fichier transmis pendant la session utilise au moins un port. Donc si 10 fichiers sont transférés, cela utilise au moins 10 ports. Et ce n'est pas tout.

Quelques clients utilisent maintenant des connexions multiples lors qu'ils envoient des fichiers. Par exemple un client qui a 100 fichiers à envoyer sur le serveur peut générer cinq sessions différentes pour accélérer le transfert. Le résultat est qu'un client peut avoir 5 connexions passives en même temps.

Donc au moment de décider du nombre de ports passifs qu'il faut ouvrir, il faut prendre en compte le fait qu'un seul client peut avoir de multiples connexions passives en même temps. Même s'il n'y a pas de règles gravées dans le marbre qui dictent le nombre de ports que devrait contenir une plage de ports, vous serez obligé d'émettre une hypothèse sur le nombre maximal d'utilisateurs simultanés que vous envisagez et effectuer une allocation importante de ports sur cette base.

1 commentaire

#1  - denisos a dit :

Excellent, j'ai tous compris, merci.

Répondre

Écrire un commentaire

Quelle est la dernière lettre du mot wmmygw ?

Fil RSS des commentaires de cet article

À propos

Yakati.com - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.027s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.com
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml