[proftp] connexion passive ou active

Bonjour,

Je viens de passer quelques jour a comprendre pourquoi mon ftp n’autoraisait pas de connexion via le net alors qu’avec une ip local cela fonctionnait.

Apparament les connexions se faisaient en mode passif, j’ai donc du rajouter un port passif et une MasqueradeAddress à mon fichier de conf.

Ce que je comprend pas c’est pourquoi avant cela fonctionnait en mode actif, alors que j’ai rien changé sauf peut être le cable ethernet.

si quelqu’un avait une explication à cela je suis prenneur.

:confused: :open_mouth: je comprend pas ce que tu veux dire …
ça marchait en mode actif ou en mode passif avant ?
et maintenant que tu as fais des modifs, ça marche ou ça marche plus ?
enfin bref, ça marche en local et de l’extérieur, ou ça marche pas ?

avant ça marchait en actif.

maintenant j’ai fais les modifs pour que cela marche en passif, on dirait que cela fonctionne sauf avec Ie.

tu as une autre machine routeur linux entre ton ftp et le net ?

Je n’ai pas de machine routeur linux.

Mon réseaux est derrière une freebox, et un routeur trendnet puis mes 3 becanes sur le même réseaux soit un serveur linux, un client linux, un un portbale xp.

une màj de firmware de la freebox ?

ça c’est probablement possible étant donné que cela fait quelque temps que j’ai pas eu besoin de mon ftp.
en tout cas j’y avais pas penser :frowning:

Bonsoir,
Je vais vous dire ce que j’ai compris sur les FTP actifs et passifs (j’ai voulu en faire un chez moi). Tout d’abord ce qu’il faut savoir c’est que c’est le CLIENT qui décide de la connexion qui sera effectuée, à savoir actif ou passif.

Le mode passif était le premier mode qui a été inventé. Il utilisait le port 21 pour la connexion FTP, et le port 20 pour le transfert de données. Chez soi il est donc très facile de faire un FTP passif :
Rediriger le port 20 et 21 sur ton serveur.
Mais il a été remplacé par le mode passif pour des raisons de sécurité (ce qui ne t’empeche pas d’en faire un).

Le mode FTP actif quant à lui utilise le port 21 pour les connexion FTP mais le problème réside dans les transferts de données. En effet en mode actif le port utilisé est choisi aléatoirement et est compris entre 1024 et 65535.
Donc pour qu’un client puisse se connecter il faut rediriger LA TOTALITE des ports entre 1024 et 65535 pour que la connexion fonctionne à tous les coups.
=> Problème de sécurité + utilisation de TOUS les ports (indisponibles donc pour les autres machines).

Donc si ton serveur ne fonctionne pas en passif c’est peut être que le port 20 n’est pas redirigé vers lui.

Pour finir, côté client (c’est, je le rapelle, lui qui décide actif ou passif) configurer IE est très facile Outils -> Options Internet -> Avancé -> Utiliser le mode FTP passif (pour assurer le compatiblité avec les pare-feux et modems DSL).
Sous firefox je n’ai toujours pas trouvé.

Voila j’espere que cela t’aidera.
Bon courage.

Houla pas très clair.

Lors du mode non passif (dit mode actif), le port ftp-data (20) est ouvert par le client, cela nécessite un routage spécifique vers le client FTP. Il est donc nécessaire si un routeur est utilisé que le routeur décode la transaction FTP et route éventuellement les connexions vers le port 20. Cela se fait par un module spécifique d’ipfilter (ip_conntrack_ftp et ip_nat_ftp). Dans ce mode, les ports utilisés sont le 20 et le 21

Le mode passif permet de passer outre ce problème, le client initie une connexion avec le serveur FTP, celui ci n’a plus l’initiative de la connexion et le routeur n’a pas de routage spécifique à faveur, la connexion venant du client.

Il n’y a pas lieu de rediriger les ports puisque cela est fait par le masquerading (en effet c’est le client qui initie la connexion, le parefeu routeur voit une connexion sortir et la NAT naturellement). Cette solution est celle retenue pour une machine derrière les parefeu parce qu’il n’y a pas de routage spécifique.

Moi je dis ce que j’ai cru comprendre.
Toutefois, une chose est sûre :

Je n’ai JAMAIS réussi à faire fonctionner un serveur FTP actif sur le port 20.
Le port 20 est utilisé pour le FTP passif.

Biensur, dans ce que je dis et ce que j’ai dit auparavant, je me placais du coté du serveur; le client je m’en fous il se débrouille.
Donc je parlais du port 20, 21 etc… du serveur.

Et c’est pas fouilli du tout. Voilà.

Et voici une preuve de ce que j’avance (astuce 17):
tofe.org/trucs.html

[quote]Le mode passif était le premier mode qui a été inventé. Il utilisait le port 21 pour la connexion FTP, et le port 20 pour le transfert de données. Chez soi il est donc très facile de faire un FTP passif :
Rediriger le port 20 et 21 sur ton serveur.
Mais il a été remplacé par le mode passif pour des raisons de sécurité (ce qui ne t’empeche pas d’en faire un).

Le mode FTP actif quant à lui utilise le port 21 pour les connexion FTP mais le problème réside dans les transferts de données. En effet en mode actif le port utilisé est choisi aléatoirement et est compris entre 1024 et 65535.
Donc pour qu’un client puisse se connecter il faut rediriger LA TOTALITE des ports entre 1024 et 65535 pour que la connexion fonctionne à tous les coups.
=> Problème de sécurité + utilisation de TOUS les ports (indisponibles donc pour les autres machines). [/quote]

ha bon je croyais que c’était l’inverse que le mode actif utilisait le port 20 et 21 et le passif utillisait un port aléatoire.

Au temps pour moi, je me suis mélangé dans serveur/client mais pour le reste c’est pareil:

Connexion en actif (serveur hercule, client totoche):
ftp> passive
Passive mode off.
ftp>

tcpdump donne

[quote]22:15:54.613791 totoche.rebelles.33339 > hercule.ftp
22:15:54.614046 hercule.ftp > totoche.33339
22:15:54.614073 totoche.33339 > hercule.ftp
22:15:54.614105 totoche.33339 > hercule.ftp

là hercule ouvre une connexion sur totoche à partir de ftp-data

22:15:54.624619 hercule.ftp-data > totoche.33352
22:15:54.624657 totoche.33352 > hercule.ftp-data
22:15:54.624786 hercule.ftp-data > totoche.33352
22:15:54.624922 hercule.ftp > totoche.33339
22:15:54.625815 hercule.ftp-data > totoche.33352
22:15:54.625835 totoche.33352 > hercule.ftp-data
22:15:54.625937 hercule.ftp-data > totoche.33352

22:15:54.633514 hercule.ftp-data > totoche.33352
22:15:54.633522 totoche.33352 > hercule.ftp-data
22:15:54.633552 hercule.ftp-data > totoche.33352
22:15:54.635352 totoche.33352 > hercule.ftp-data
22:15:54.635465 hercule.ftp-data > totoche.33352
22:15:54.660490 totoche.33339 > hercule.ftp
22:15:54.660657 hercule.ftp > totoche.33339
22:15:54.660679 totoche.33339 > hercule.ftp

[/quote]
Il est une connexion à partir du port ftp-data
ftp> passive
Passive mode on.
ftp>

[quote]22:16:03.062015 totoche.33339 > hercule.ftp
22:16:03.063272 hercule.ftp > totoche.33339
22:16:03.063302 totoche.33339 > hercule.ftp

là c’est totoche le client qui va ouvrir une connexion sur un port donné par le serveur (ici 8928)

22:16:03.063348 totoche.33355 > hercule.8928
22:16:03.063489 hercule.8928 > totoche.33355
22:16:03.063505 totoche.33355 > hercule.8928
22:16:03.063529 totoche.33339 > hercule.ftp
22:16:03.099027 hercule.ftp > totoche.33339
22:16:03.110162 hercule.8928 > totoche.33355
22:16:03.110200 totoche.33355 > hercule.8928
22:16:03.110286 hercule.8928 > totoche.33355
22:16:03.110343 totoche.33355 > hercule.8928
22:16:03.110384 hercule.8928 > totoche.33355
22:16:03.110448 totoche.33355 > hercule.8928

22:16:03.119535 totoche.33355 > hercule.8928
22:16:03.130455 totoche.33339 > hercule.ftp
22:16:03.135648 hercule.8928 > totoche.33355
22:16:03.135730 hercule.ftp > totoche.33339
22:16:03.135750 totoche.33339 > hercule.ftp
22:16:04.939574 totoche.33339 > hercule.ftp
22:16:04.952525 hercule.ftp > totoche.33339
22:16:04.952561 totoche.33339 > hercule.ftp
22:16:04.952714 hercule.ftp > totoche.33339
22:16:04.952732 totoche.33339 > hercule.ftp
22:16:04.952935 totoche.33339 > hercule.ftp
22:16:04.964948 hercule.ftp > totoche.33339
22:16:04.964984 totoche.33339 > hercule.ftp
[/quote]

Dans le premier cas (actif), c’est bien le serveur qui initie la connexion à partir du port ftp-data (et non sur le port ftp-data du client comme je l’avais dit), dans le deuxième cas, la connexion pour le transfert des données est crée par le client (le serveur est passif) sur un port donné par le serveur.

Désolé de t’avoir vexé, ça n’était pas le but.
Je ne comprends donc pas ce que tu veux dire par faire fonctionner un serveur passif sur le port 20, le port 20 ne joue en rôle qu’en mode actif.

Dans ce mode actif, le serveur veut ouvrir une connexion sur un port dont le numéro est fourni par le client. Il est donc important que le port en question soit routé vers la machine client si celle ci est derrière un parefeu. C’est le rôle du module ip_nat_ft et ip_countrack_ftp. Le mode passif a été rajouté lorsque justement on ne controle pas tout sur les parefeu. Cela explique par exemple pourquoi IE fait du FTP par défaut en mode passif.

Désolé d’avoir été peut être un peu aggessif mais je voulais juste aider et me faire rembaler de la sorte … ouch
Enfin bon tout est oublié.

Par contre j’ai l’impression que tout le monde ici se mélange les pinceaux entre actif et passif.
Et partout sur internet j’ai trouvé que le port 20 n’était plus utilisé en actif.
Je ne remet pas en question tes competences qui sont, sans aucun doute superieures aux miennes dans ce domaine, mais l’expérience (j’ai un FTP, du moins j’avais jusqu’à ce que la foudre …) et le lien que je t’ai passé montrent bien la même chose.

Passif -> 21 Connexion / 20 Data
Actif -> 21 Connexion / 1024-65535 Data (aléatoire)

En effet sur mon FTP, chez moi, j’avais “redirigé” (je sais que tu n’aimes pas ce mot mais :laughing: ) les ports 20 et 21 sur mon serveur.
Et le seul moyen de pouvoir se connecter était la connexion PASSIVE !

Trouvez l’erreur ?!?! :laughing:

J’ai été voir ton truc et astuces (le 17):

[quote] Mode actif : le client établit la connexion de commandes vers le port 21 et le serveur établit la connexion de data à partir de son port 20.
Mode passif : le client établit la connexion de commandes vers le port 21 et établit aussi la connexion de data vers un port Passive Range du serveur (1024-65535).
L’avantage dans une connexion passive réside dans le fait que le serveur n’initie aucune connexion. Cela est intéressant pour des clients intranet voulant consulter un serveur FTP sur Internet et devant traverser un pare-feu, le mode FTP passif permettra de n’avoir que des flux sortants vers Internet, alors qu’avec du FTP actif, on aurait une connexion initiée depuis l’extérieur, ce qui peut être une source d’intrusion. [/quote]

C’est exactement ce que j’ai expliqué dans le deuxième message (dans le premier je me suis emmélé sur le port ftp-data).

Le port 20 est bien en utilisé en actif:

Actif:

Client interroge Serveur sur 21
Client fournit numéro de port à serveur
Serveur fait connexion depuis port 20 vers Client sur ce port
et hop c’est parti.

Passif:

Client interroge Serveur sur 21
Serveur fournit numéro de port à Client
Client fait connexion sur Serveur à ce port

Quelles sont les redirections que tu avais faites? La plupart du temps le problème vient que dans le mode actif, le client ouvre un port sur lequel le serveur doit se connecté. Donc dans ce cas, il est nécessaire pour le parefeu de faire une redirection du port concerné vers le client. Cela peut se faire de façon sauvage (redirection de tous les ports) ou plus subtilement avec iptables et une interprétation du protocole à la volée: ip_nat_ftp reconnait le dialogue, intercepte au passage le numéro de port concerné et met temporairement en place une redirection de port. Lorsque la connexion se ferme, la redirection de port est annulé.
L’inconvénient du mode passif pourrait être qu’il faut autoriser les connexions vers un port extérieur inconnu ce que n’aime pas certains parefeu.
L’inconvénient du mode actif est la lourdeur du protocole et la nécessité de la redirection de port (le terme est bon).

Je suis désolé si tu t’es senti remballé, je travaille tout en regardant le forum et les messages sont rapidement tapés. Cela explique qu’ils soient parfois «brut de décoffrage»

Mais lol !!! Désolé dans l’histoire c’est moi qui me suis embrouillé !!!
Il est tard soyez indulgents :laughing:

En effet 20 - 21 c’est de l’actif
et 20 - aléatoire c’est du passif encore désolé.

Mais une chose est quasi sûre (je prends des gants maintenants ^^).
Si ton FTP fonctionne en local, c’est juste un problème de redirection de ports.

Bon courage.

Vous ma rasurez là. :laughing:
les redirections sont bien faites,
j’ai ouvert les ports 20 et 21 et pour le mode passif j’ai ouvert les port de 5000 à 5100.

en mode actif j’arrive à me connecter via l’ip local du serveur, mais impossible de me connecter via mon DNS ou mon ip publique.
là j’arrive meme plus a me connecter du tout, mais je pense que MATT a raison cela vient de ma freebox car quand cela fonctionne c’est lent.

Si tu n’arrives pas à te connecter de ton LAN via l’IP publique, c’est normal, va voir
http://forum.debian-fr.org/viewtopic.php?t=4847&postdays=0&postorder=asc&start=30
pour l’explication.

Salut.
Si tu rediriges la plage 5000 à 5100 pour la connexion passive vers ton serveur tu as exactement :

(5100-5000)/(65535-1024) = 0.155% de chances de pouvoir te connecter à ton FTP via ton adresse IP publique. C’est pas beaucoup.

Je me trompe ?