Je me pose régulièrement la question de la différence entre les deux modes de transfert de fichiers FTP: actif ou passif. Voici donc un billet mémo à destination des petites têtes (dont je fais parti...).
Le mode FTP actif
C'est le mode par défaut des clients FTP. Le client établi dans un premier temps une session TCP sur le port 21 (FTP) du serveur ("control channel"). Une fois la session établie et l'authentification FTP acceptée, c'est le serveur qui établi une session TCP (avec le port source 20, FTP-DATA) vers un port dynamique du client ("data channel").
Le mode FTP passif
Il faut garder en mémoire que le mode passif est conseillé à partir du moment ou les clients peuvent se trouver derrière un Firewall/NAT. En effet dans ce mode, toutes les initialisions de sessions TCP se font à partir du client.
Comme pour le FTP actif, le client établi une première session TCP sur le port 21 (FTP) du serveur ("control channel"). Une fois la session établie et l'authentification FTP acceptée, on demande au serveur de se mettre en attente de session TCP grâce à la commande PASV. Alors le client peut établir une seconde session TCP sur un port dynamique vers le serveur ("data channel").
Le numéro de port dynamique est transmis du serveur vers le client suite à la commande PASV. On peut réduire la plage de port en configurant le serveur FTP. Par exemple, pour le serveur pro-ftpd:
# vi /usr/local/etc/proftpd.conf
...
PassivePortRange 30000 32000
...
Pour les fans, vous pouvez consulter la RFC du protocole FTP (en français).







Open-source

Abonnez-vous
9 commentaires au billet “FTP actif versus FTP passif”
Très bon résumé de ce maudit protocole
Par contre en mode passif cela oblige à l'ouverture des ports dynamique sur le firewall ... du coup autant utiliser du sftp avec openssl
@dab: c'est vrai mais dans la grande majorité des cas le TCP est ouvert sur tout les ports en sortant (c'est la conf par défaut sur toutes les box ADSL).
[...] Nicolargo - FTP actif versus FTP passif [...]
En actif, pour la connexion DATA, le port 20 est le port source du serveur (généralement)... Pas le port destination ouvert coté client.
@yannick: titalement d'accord, c'est corrigé
[...] FTP actif versus FTP passif, [...]
Merci pour cette explication !
Bonjour, je crois que vous vous êtes trompé dans votre schéma,
vous semblez avoir interverti le mode passif et le mode actif.
[/source]
1. Mode actif: c'est le client FTP qui détermine le port de connexion à utiliser pour permettre le transfert des données. Ainsi, pour que l'échange des données puisse se faire, le serveur FTP initialisera la connexion de son port de données (port 20) vers le port spécifié par le client. Le client devra alors configurer son pare-feu pour autoriser les nouvelles connexions entrantes afin que l'échange des données se fasse. De plus, il peut s'avérer problématique pour les utilisateurs essayant d'accéder à des serveurs FTP lorsqu'ils sont derrière une passerelle NAT. Étant donnée la façon dont fonctionne le NAT, le serveur FTP lance la connexion de données en se connectant à l'adresse externe de la passerelle NAT sur le port choisi. Certaines passerelles NAT n'ayant pas de correspondance pour le paquet reçu dans la table d'état, le paquet sera ignoré et ne sera pas délivré au client.
2. Mode passif: le serveur FTP détermine lui-même le port de connexion à utiliser pour permettre le transfert des données (data connexion) et le communique au client. En cas de présence d'un pare-feu devant le serveur, celui-ci devra être configuré pour autoriser la connexion de données. L'avantage de ce mode, est que le serveur FTP n'initialise aucune connexion. Ce mode fonctionne sans problèmes avec une passerelle NAT. Dans les nouvelles implémentations, le client initialise et communique directement par le port 21 du serveur; cela permet de simplifier les configurations des pare-feu serveur.
@etuduiant 456: je te confirme que mes schéma sont bons... il reflète la définition que tu donnes en commentaire...
Publier un commentaire
Utiliser
pour lier des documents à vos commentaires.
Pour des discutions techniques, merci d'utiliser le forum.