Auteur:
NicoLargo

Date:
17/04/2008

Catégories:
Open-source
Reseau

Tags:



FTP actif versus FTP passif

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”).


FTP-actif---Nicolargo.png

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


FTP-passif---Nicolargo.png

Pour les fans, vous pouvez consulter la RFC du protocole FTP (en français).

12 commentaires


  1. dab, le 17/04/2008 (#3779)

    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 :)


  2. NicoLargo, le 17/04/2008 (#3780)

    @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).


  3. Yannick, le 20/04/2008 (#3815)

    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.


  4. NicoLargo, le 21/04/2008 (#3817)

    @yannick: titalement d’accord, c’est corrigé ;)


  5. 75999, le 11/09/2008 (#4988)

    Merci pour cette explication !


  6. etudiant456, le 8/12/2009 (#7330)

    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.


  7. NicoLargo, le 8/12/2009 (#7331)

    @etuduiant 456: je te confirme que mes schéma sont bons… il reflète la définition que tu donnes en commentaire…


  8. @nge, le 11/07/2010 (#8562)

    Bonjour; je viens de faire la procedure pour l’install du serveur ftp , en local tout fonctionne bien, mais en wan j’ai un soucis de connection apparement cela viendrait de la plage de port passif a declarer dans la box j’ai rechercher le fichier “proftpd.conf” mais je ne l’ai pas trouver ! La nouvelle verison utilise petre un autre configuration ? Merci


  9. @nge, le 11/07/2010 (#8563)

    Oups autant pour moi j’ai lancer pure-ftpd ,expliquer sur un autre post : http://blog.nicolargo.com/2009/01/un-serveur-ftp-en-5-minutes-chrono.html , d’ou l’erreur..

    Bon ca ne fonctionne pas quand apres avoir renseigné les port passifs :(

    ++


  10. @nge, le 11/07/2010 (#8564)

    Aye j’ai reussi , une petite erreur de ma part ( il ne faut pas grand chose comme d’hab ) Merci pour ton post Nico

    +++


Laisser un message

Les informations saisies resteront privées.