324 votes

Quelle est la différence entre le FTP actif et le FTP passif ?

Quelqu'un peut-il me dire quelle est la différence entre le FTP actif et le FTP passif ?
Lequel est préférable ?

484voto

paxdiablo Points 341644

Actif et passif sont les deux modes dans lesquels FTP peut fonctionner.

Pour mémoire, le FTP utilise en fait deux les canaux entre le client et le serveur, les canaux de commande et de données, qui sont en fait séparé Connexions TCP.

Le canal de commande est destiné aux commandes et aux réponses, tandis que le canal de données est destiné au transfert effectif des fichiers.

Cette séparation des informations de commande et des données dans des canaux distincts est un moyen astucieux de pouvoir envoyer des commandes au serveur sans avoir à attendre la fin du transfert de données en cours. Conformément à la RFC, cela n'est obligatoire que pour un sous-ensemble de commandes, telles que quitter, interrompre le transfert en cours et obtenir l'état.


Sur actif le client établit le canal de commande mais le serveur est responsable de l'établissement du canal de données. Cela peut effectivement poser problème si, par exemple, la machine cliente est protégée par des pare-feu et ne permet pas les demandes de session non autorisées provenant de parties externes.

Sur passif le client établit les deux canaux. Nous savons déjà qu'il établit le canal de commande en mode actif et il fait de même ici.

Cependant, il demande ensuite au serveur (sur le canal de commande) de démarrer écoute sur un port (à la discrétion des serveurs) plutôt que d'essayer d'établir une connexion en retour avec le client.

Dans le cadre de cette opération, le serveur renvoie également au client le numéro du port sur lequel il a choisi d'écouter, afin que le client sache comment s'y connecter.

Une fois que le client le sait, il peut alors créer avec succès le canal de données et continuer.

Plus de détails sont disponibles dans le RFC : https://www.ietf.org/rfc/rfc959.txt

1 votes

Je ne pense pas que la déclaration concernant le port Y soit correcte, en mode actif le client ne détermine pas le port Y, le serveur essaie de choisir aléatoirement un port # et essaie de voir si le client autorise la communication via ce port choisi. La raison pour laquelle je dis cela est que, si ce n'est pas vrai (mon argument), alors le côté client, même s'il est derrière un pare-feu, peut toujours créer deux règles de pare-feu, une pour la connexion sortante et une pour la connexion entrante.

1 votes

@arun, le client n'a pas nécessairement le contrôle du pare-feu. Exemple : dans les environnements d'entreprise, il y a généralement un pare-feu entre le réseau de l'entreprise et le monde extérieur, sur lequel un client exécutant FTP n'a aucun pouvoir.

0 votes

En mode passif, pourquoi le serveur envoie-t-il au client un port aléatoire au lieu que le client se connecte directement au port 20 du serveur ?

172voto

grisson Points 547

J'ai récemment été confronté à cette question sur mon lieu de travail et je pense que je devrais en dire plus ici. Je vais utiliser une image pour expliquer le fonctionnement du FTP comme source supplémentaire pour la réponse précédente.

Mode actif :

active mode


Mode passif :

enter image description here

Dans une configuration en mode actif, le serveur tentera de se connecter à un port côté client aléatoire. Il y a donc de fortes chances que ce port ne soit pas l'un de ces ports prédéfinis. Par conséquent, une tentative de connexion à celui-ci sera bloquée par le pare-feu et aucune connexion ne sera établie.

enter image description here

Une configuration passive n'aura pas ce problème puisque c'est le client qui initie la connexion. Bien entendu, il est possible que le serveur soit également équipé d'un pare-feu. Cependant, comme le serveur est censé recevoir un plus grand nombre de demandes de connexion que le client, il serait logique que l'administrateur du serveur s'adapte à la situation et ouvre une sélection de ports pour satisfaire les configurations en mode passif.

Il serait donc préférable pour vous de configurer le serveur pour qu'il prenne en charge le mode FTP passif. Cependant, le mode passif rendrait votre système vulnérable aux attaques car les clients sont censés se connecter à des ports de serveur aléatoires. Ainsi, pour supporter ce mode, non seulement votre serveur doit avoir plusieurs ports disponibles, mais votre pare-feu doit également permettre le passage des connexions à tous ces ports !

Pour limiter les risques, une bonne solution serait de spécifier une plage de ports sur votre serveur, puis de n'autoriser que cette plage de ports sur votre pare-feu.

Pour plus d'informations, veuillez lire le document officiel .

0 votes

Je ne fais que deviner quel est le problème de sécurité. Si le serveur écoute le même port (20), il ne peut pas comprendre quel client parle, il choisit donc un port aléatoire et l'envoie au client, en commençant à écouter ce port. Lorsque le client se connecte à ce port, le serveur sait à quel client il appartient. Mais il suffit à un MITM de se connecter au même client. (enfin, l'attaque MITM ici est délicate de toute façon...)

2 votes

Excellente réponse, notamment en ce qui concerne le problème du pare-feu.

14voto

Martin Prikryl Points 4584

_Version expurgée de mon article Modes de connexion FTP (actif ou passif)_ :

Le mode de connexion FTP (actif ou passif), détermine la manière dont une connexion de données est établie. Dans les deux cas, un client crée une connexion de contrôle TCP avec un port de commande 21 du serveur FTP. Il s'agit d'une connexion sortante standard, comme avec tout autre protocole de transfert de fichiers (SFTP, SCP, WebDAV) ou toute autre application client TCP (par exemple, un navigateur Web). En général, il n'y a donc aucun problème lors de l'ouverture de la connexion de contrôle.

Le protocole FTP est plus compliqué que les autres protocoles de transfert de fichiers. Alors que les autres protocoles utilisent la même connexion pour le contrôle des sessions et les transferts de fichiers (données), le protocole FTP utilise une connexion distincte pour les transferts de fichiers et les listes de répertoires.

Dans le actif le client commence à écouter sur un port aléatoire les connexions de données entrantes en provenance du serveur (le client envoie la commande FTP PORT pour informer le serveur sur quel port il écoute). De nos jours, il est courant que le client se trouve derrière un pare-feu (par exemple, le pare-feu intégré de Windows) ou un routeur NAT (par exemple, un modem ADSL), incapable d'accepter des connexions TCP entrantes.

C'est la raison pour laquelle le passif a été introduit et est principalement utilisé de nos jours. L'utilisation du passif est préférable car la plupart des configurations complexes ne sont effectuées qu'une seule fois du côté du serveur, par un administrateur expérimenté, plutôt qu'individuellement du côté du client, par des utilisateurs (éventuellement) inexpérimentés.

Dans le passif le client utilise la connexion de contrôle pour envoyer un message PASV au serveur et reçoit ensuite du serveur une adresse IP de serveur et un numéro de port de serveur, que le client utilise ensuite pour ouvrir une connexion de données à l'adresse IP de serveur et au numéro de port de serveur reçus.

Configuration du réseau pour le mode passif

Avec le passif la plus grande partie de la charge de configuration se situe du côté du serveur. L'administrateur du serveur doit configurer le serveur comme décrit ci-dessous.

Le pare-feu et le NAT du côté du serveur FTP doivent être configurés non seulement pour autoriser/router les connexions entrantes sur le port FTP 21, mais aussi une série de ports pour les connexions de données entrantes. En général, le logiciel du serveur FTP dispose d'une option de configuration permettant de définir une série de ports que le serveur utilisera. Et la même plage doit être ouverte/route sur le pare-feu/NAT.

Lorsque le serveur FTP se trouve derrière un NAT, il doit connaître son adresse IP externe, afin de pouvoir la fournir au client dans une réponse à la commande PASV commandement.

Configuration du réseau pour le mode actif

Avec le actif la plus grande partie de la charge de configuration se trouve du côté du client.

Le pare-feu (par exemple, le pare-feu Windows) et le NAT (par exemple, les règles de routage du modem ADSL) du côté client doivent être configurés pour autoriser/router une série de ports pour les connexions de données entrantes. Pour ouvrir les ports dans Windows, allez à Panneau de configuration > Système et sécurité > Pare-feu Windows > Paramètres avancés > Règles d'entrée > Nouvelle règle . Pour le routage des ports sur le NAT (le cas échéant), reportez-vous à sa documentation.

Lorsqu'il y a de la NAT dans votre réseau, le client FTP doit connaître son adresse IP externe que WinSCP doit fournir au serveur FTP en utilisant PORT commande. Ainsi, le serveur peut se reconnecter correctement au client pour ouvrir la connexion de données. Certains clients FTP sont capables de détecter automatiquement l'adresse IP externe, d'autres doivent être configurés manuellement.

Pare-feu intelligents/NATs

Certains pare-feu/NAT essaient d'ouvrir/de fermer automatiquement les ports de données en inspectant la connexion de contrôle FTP et/ou de traduire les adresses IP de la connexion de données dans le trafic de la connexion de contrôle.

Avec un tel pare-feu/NAT, la configuration ci-dessus n'est pas nécessaire pour un simple FTP non crypté. Mais cela ne peut pas fonctionner avec FTPS, car le trafic de la connexion de contrôle est crypté et le pare-feu/NAT ne peut pas l'inspecter ni le modifier.

11voto

Saeed Aliakbari Points 179

Mode actif : -le serveur initie la connexion.

Mode passif : -le client initie la connexion.

1voto

DaveW2122 Points 11

Mode actif - Le client envoie une commande PORT au serveur pour signaler qu'il va fournir "activement" une adresse IP et un numéro de port pour ouvrir la connexion de données au client.

Mode passif - Le client émet une commande PASV pour indiquer qu'il attendra "passivement" que le serveur fournisse une adresse IP et un numéro de port, après quoi le client créera une connexion de données avec le serveur.

Il y a beaucoup de bonnes réponses ci-dessus, mais cet article de blog comprend des graphiques utiles et donne une explication assez solide : https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and-passive-ftp/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X