FTP mode Actif et FTP mode Passif

Posted by – January 13, 2015

On entend souvent parler de ces 2 modes, je ne m’etais en fait jamais penche dessus…

 

Fonctionnement du mode actif

1/ Le client contacte le serveur sur le port 21 depuis un port aleatoire > 1024. Three-way handshake classique en TCP
2/ Le client envoie la commande PORT qui va specifier au serveur un numero de port a contacter
3/ Le Serveur demarre une nouvelle connexion vers le client sur le port specifie par le Client, avec en port source le port 20. S’en suit un Three way handshake sur ce nouveau port.

Les datas transiteront ensuite par cette connexion.

Fonctionnement du mode passif

1/ Le client contacte le serveur sur le port 21 depuis un port aleatoire > 1024. Three-way handshake classique en TCP
2/ Le client envoie la commande PASV pour signifier au serveur qu’il souhaite une connexion dite passive.
3/ Le serveur Acknowledge la demande du client et lui repond avec le port sur lequel le joindre.
4/ Le client demarre une nouvelle connexion vers le serveur sur le port specifie, avec en port source un nouveau port aleatoire > 1024. S’en suit un Three way handshake sur ce nouveau port.

 


Points communs et differences

Il y aura toujours 2 connexions. La premiere pour l’envoie des commandes, la seconde pour l’envoie des datas.
Le client initiera toujours la connexion sur le port 21 du serveur (on l’appelle le Command Port, ou Control Port). Avec en port source un port aleatoire > 1024.
En mode Actif, c’est le serveur qui initie la seconde connexion TCP vers le serveur, pour les datas, sur un port specifie par le client.
En mode Passif, c’est le client qui initie la seconde connexion TCP vers le client, pour les datas, sur un port specifie par le serveur.

Que l’on soit en mode actif ou passif, la maniere de determiner le port de connexion pour les datas est toujours la meme, celui qui recoit la commande avec le port de connexion recevra une requete de ce genre:

172,16,20,6,145,63

Les 4 premiers chiffres correspondent a l’adresse IP, le 5eme est un chiffre qu’il faut multiplier par 256, puis il faut ajouter le 6eme chiffre, dans l’exemple on aura:
256*145+63 = 37183
Le port de connexion sera donc le 37183.

Quand on parle de mode Actif ou Passif, pour s’en souvenir, on se met toujours a la place du Serveur.
En mode Actif c’est donc le serveur qui se connectera vers le Client, il est actif au niveau du three-way handshake.
En mode Passif c’est le serveur qui recevra la connexion du Client, il est passif au niveau du three-way handshake.
Exemple de transaction

Serveur = 10.10.99.13
Client = 172.16.20.6

Mon client est un routeur.

 

Mode Actif

 

FTP-Actif-R6

ftp-active-wireshark

 

 

Mode Passif

FTP-Passif-R6

ftp-passif-wireshark

 

Quand on lit la RFC959 sur le ftp  on s’apercoit que le “default port” pour la “data connection” du client (qui s’appelle U dans la RFC) est le meme que le port avec lequel on a initie la connexion ftp (control connection).

Au niveau du serveur le “control connection” est bien le 21 (on l’appelle L dans la RFC) et le data connection est le 20 (L-1)

 

Ce qui voudrait dire qu’en fonctionnement par defaut et d’apres la RFC:

Control connection

Client port U <–> Server Port L

 Data connection

Client port U <–> Server Port L-1

 

J’aimerais bien connaitre un client ftp qui soit totalement RFC compliant avec le fonctionnement par defaut, histoire de verifier !

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *