Le protocole FTP est en effet un peu particulier. Dans le mode par défaut (dit mode actif), le client se connecte sur le port d'écoute P du serveur (en général le 21). Cette connexion TCP va servir aux échanges des commandes. Lorsque des données doivent être transférées (envoi/réception de fichier mais aussi listing d'un répertoire), le client fournit au serveur un numéro de port (et une adresse IP) et le serveur se connecte alors sur le client sur le port indiqué et avec un port source égal à P-1 (donc le port 20 en général).
Ce mode de fonctionnement pose quelques problèmes, en particulier lorsque le client est derrière un firewall ou un routeur, puisqu'il faut que la connexion du serveur vers le client réussise (avec éventuellement une translation d'adresse) [certains firewall font de l'analyse protocolaire du flux de commande FTP afin d'ouvrir les bons ports pour le canal de données]. On a donc mis au point le mode passif (c'est le client qui indique au serveur qu'il veut utiliser ce mode) : dans ce cas, le serveur fournit au client un numéro de port (quelconque, sauf configuration particulière du serveur, et différent à chaque fois) et c'est le client qui ouvre la deuxième connexion TCP sur le serveur (pour le transfert des données).
Donc, et pour répondre à ta question, il faut peut-être bien ouvrir le port 24999, mais dans le sens sortant si le client fait du FTP actif. En passif, il y a plusieurs possibilité :
- tu paramètre ton serveur pour lui indiquer une plage de ports à utiliser en mode passif et tu ouvres, au niveau du firewall, toute la plage indiquée.
- tu as un firewall qui gère le protocole FTP (IPSec doit le faire) et alors tu dois indiquer que le port 25000 est utilisé pour du FTP et qu'il faut donc analyser les paquets qui transitent afin d'ouvrir dynamiquement les bons accès (solution la meilleure, mais si je t'ai donné la partie théorique, il va falloir que tu cherches ailleurs pour la mise en 1⁄2uvre pratique ;-( )
# "Complexité" du protocole FTP
Posté par JJD . En réponse au message Changement de port pureftp. Évalué à 3.
Le protocole FTP est en effet un peu particulier. Dans le mode par défaut (dit mode actif), le client se connecte sur le port d'écoute P du serveur (en général le 21). Cette connexion TCP va servir aux échanges des commandes. Lorsque des données doivent être transférées (envoi/réception de fichier mais aussi listing d'un répertoire), le client fournit au serveur un numéro de port (et une adresse IP) et le serveur se connecte alors sur le client sur le port indiqué et avec un port source égal à P-1 (donc le port 20 en général).
Ce mode de fonctionnement pose quelques problèmes, en particulier lorsque le client est derrière un firewall ou un routeur, puisqu'il faut que la connexion du serveur vers le client réussise (avec éventuellement une translation d'adresse) [certains firewall font de l'analyse protocolaire du flux de commande FTP afin d'ouvrir les bons ports pour le canal de données]. On a donc mis au point le mode passif (c'est le client qui indique au serveur qu'il veut utiliser ce mode) : dans ce cas, le serveur fournit au client un numéro de port (quelconque, sauf configuration particulière du serveur, et différent à chaque fois) et c'est le client qui ouvre la deuxième connexion TCP sur le serveur (pour le transfert des données).
Donc, et pour répondre à ta question, il faut peut-être bien ouvrir le port 24999, mais dans le sens sortant si le client fait du FTP actif. En passif, il y a plusieurs possibilité :
- tu paramètre ton serveur pour lui indiquer une plage de ports à utiliser en mode passif et tu ouvres, au niveau du firewall, toute la plage indiquée.
- tu as un firewall qui gère le protocole FTP (IPSec doit le faire) et alors tu dois indiquer que le port 25000 est utilisé pour du FTP et qu'il faut donc analyser les paquets qui transitent afin d'ouvrir dynamiquement les bons accès (solution la meilleure, mais si je t'ai donné la partie théorique, il va falloir que tu cherches ailleurs pour la mise en 1⁄2uvre pratique ;-( )
Bon courage et tiens-nous au courant
JJD