web-dev-qa-db-fra.com

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

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

300
karthik

Actif et passif sont les deux modes dans lesquels FTP peut s'exécuter.

Pour l’arrière-plan, FTP utilise deux canaux entre le client et le serveur, les canaux de commande et de données, qui sont séparés TCP connexions.

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

Cette séparation des informations de commande et des données sur des canaux séparés est un moyen astucieux de pouvoir envoyer des commandes au serveur sans avoir à attendre la fin du transfert des données en cours. Conformément à la RFC, cela n'est obligatoire que pour un sous-ensemble de commandes, telles que l'arrêt, l'abandon du transfert en cours et l'obtention du statut.


En mode actif , le client établit le canal de commande mais le serveur est responsable de l'établissement du canal de données. Cela peut en fait poser problème si, par exemple, la machine cliente est protégée par des pare-feu et n'autorise pas les demandes de session non autorisées de tiers.

En mode passif , le client établit les deux canaux . Nous savons déjà que cela établit le canal de commande en mode actif et qu’il en est de même ici.

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

Dans ce cadre, le serveur renvoie également au client le numéro de 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 le canal de données et continuer.

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

465
paxdiablo

J'ai récemment rencontré cette question sur mon lieu de travail, alors je pense que je devrais dire quelque chose de plus ici. Je vais utiliser image pour expliquer le fonctionnement du FTP en tant que source supplémentaire de réponse précédente.

Mode actif:

active mode


Mode passif:

enter image description here


Dans une configuration en mode actif, le serveur tente de se connecter à un port côté client aléatoire. Donc, les chances sont, ce port ne serait pas l'un de ces ports prédéfinis. En conséquence, une tentative de connexion à ce dernier 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 sûr, il est possible que le côté serveur dispose également d’un pare-feu. Cependant, étant donné que le serveur est censé recevoir un plus grand nombre de demandes de connexion qu'un 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 que vous configuriez le serveur pour prendre en charge le mode passif FTP. Cependant, le mode passif rendrait votre système vulnérable aux attaques, car les clients sont supposés se connecter à des ports de serveur aléatoires. Ainsi, pour prendre en charge ce mode, non seulement si votre serveur doit disposer de plusieurs ports, votre pare-feu doit également autoriser les connexions vers tous ces ports!

Pour atténuer les risques, une bonne solution consiste à spécifier une plage de ports sur votre serveur, puis à autoriser uniquement cette plage de ports sur votre pare-feu.

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

160
Yuantao

Version rédigée de mon article Modes de connexion FTP (actif/passif):

Le mode de connexion FTP (actif ou passif) détermine comment une connexion de données est établie. Dans les deux cas, un client crée une connexion de contrôle TCP sur un port 21 de commande de 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 TCP application client (navigateur Web, par exemple). Donc, généralement, il n'y a pas de problèmes lors de l'ouverture de la connexion de contrôle.

Lorsque le protocole FTP est plus compliqué que les autres protocoles de transfert de fichiers, il s'agit de transferts de fichiers. Alors que les autres protocoles utilisent la même connexion pour le contrôle de session 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.

En mode actif , le client commence à écouter les connexions entrantes du serveur sur un port aléatoire (le client envoie la commande FTP PORT informer le serveur sur le port sur lequel il écoute). De nos jours, le client est généralement protégé par un pare-feu (pare-feu Windows intégré, par exemple) ou un routeur NAT (modem ADSL, par exemple), incapable d'accepter les connexions entrantes TCP.

Pour cette raison, le mode passif a été introduit et est principalement utilisé de nos jours. L'utilisation du mode passif est préférable, car la majeure partie de la configuration complexe est configurée une seule fois du côté serveur, par un administrateur expérimenté et non individuellement du côté client. , par des utilisateurs (éventuellement) inexpérimentés.

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

Configuration réseau pour le mode passif

Avec le mode passif , le gros de la configuration s’exerce du côté du serveur. L'administrateur du serveur doit configurer le serveur comme décrit ci-dessous.

Le pare-feu et le NAT côté serveur FTP doivent être configurés non seulement pour autoriser/acheminer les connexions entrantes sur le port FTP 21, mais également pour une plage de ports pour les connexions de données entrantes. Généralement, le logiciel du serveur FTP dispose d’une option de configuration permettant de configurer une plage de ports que le serveur utilisera. Et la même plage doit être ouverte/routée 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 le fournir au client en réponse à la commande PASV.

Configuration du réseau pour le mode actif

Avec le mode actif , la majeure partie de la charge de la configuration incombe au client.

Le pare-feu (par exemple, le pare-feu Windows) et NAT (par exemple, les règles de routage de modem ADSL) côté client doivent être configurés pour autoriser/acheminer une plage de ports pour les connexions de données entrantes. Pour ouvrir les ports sous Windows, accédez à Panneau de configuration> Système et sécurité> Pare-feu Windows> Paramètres avancés> Règles de trafic entrant> Nouvelle règle . Pour acheminer les ports sur le NAT (le cas échéant), reportez-vous à sa documentation.

Lorsqu'il y a NAT sur votre réseau, le client FTP doit connaître l'adresse IP externe que WinSCP doit fournir au serveur FTP à l'aide de la commande PORT. Pour que le serveur puisse correctement se reconnecter 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/NAT

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

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

12
Martin Prikryl

Mode actif: -server initie la connexion.

Mode passif: -Le client initie la connexion.

10
Saeed Aliakbari

Mode actif: le client envoie une commande PORT au serveur, indiquant qu'il fournira "activement" un 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 au serveur.

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

0
DaveW2122