[iptables] ftp put depuis un poste firewallé+proxyfié

J’ai un problême pour faire du ftp put depuis un poste masqueradé par un routeur debian.
Quand je me mets en “masquerading pur”, avec tout en ACCEPT, et juste un règle de masquerading, je peux déposer un fichier en ftp. Le masq n’est donc pas en cause.
Par contre, dès que je mets une policy DROP par défaut en INPUT sur la table filter, je n’ai plus de possibilité de passer, ni même en mode ftp passif.
J’ai pourtant une règle ACCEPT pour les flags ESTABLISHED,RELATED.
Je précise aussi que je redirige les demandes sur les ports 20:21 vers un proxy frox en transparent, mais quand je desactive la redirection, ça ne passe pas mieux.
La seule solution que j’ai trouvée en regardant les paquets, est d’ouvrir les requètes en provenance du port 20 du serveur ftp ou je veux déposer.
Personne n’aurait une explication, et une solution plus propre que d’ouvrir tout ce qui vient d’un port sur une machine que je ne controle pas ?

Pas d’explication mais j’ai trouvé un tableau complet sur le protocole FTP dans

Building Internet Firewalls
Second edition
O’Reilly
Chapter 17 p.458

Je te l’ai encodé (avec mes petits doigts gourds) le voici:

Dir    Source Dest   Prot   S port D port ACK    Notes
----------------------------------------------------------------------------------------------------------
In     Ext    Int    TCP    >1023  21     a      Incoming FTP request
Out    Int    Ext    TCP    21     >1023  Y      Response
Out    Int    Ext    TCP    20     >1023  a      Data channel creation for incoming FTP req. normal mode
In     Ext    Int    TCP    >1023  20     Y      Data channel response for incoming FTP req. normal mode
In     Ext    Int    TCP    >1023  >1023  a      Data channel creation for incoming FTP req. passive mode
Out    Int    Ext    TCP    >1023  >1023  Y      Data channel response for incoming FTP req. passive mode
Out    Int    Ext    TCP    >1023  21     a      Outgoing FTP request
In     Ext    Int    TCP    21     >1023  Y      Response to outgoing FTP request
In     Ext    Int    TCP    20     >1023  a      Data channel creation for outgoing FTP req. normal mode
Out    Int    Ext    TCP    >1023  20     Y      Data channel response for outgoing FTP req. normal mode
Out    Ext    Ext    TCP    >1023  >1023  a      Data channel creation for outgoing FTP req. passive mode
In     Int    Int    TCP    >1023  >1023  Y      Data channel response for outgoing FTP req. passive mode

a: ACK is not set on the first packet of this type (establishing connection) but it will be set on the rest.

J’espère que tu pourras en faire quelque-chose.

Ce livre est accessible en lecture ICI

Lecture online gratuite pour 14 jours. Moi, je n’y ai plus accès, j’ai épuisé mon crédit depuis longtemps :confused:

En attendant une réponse complète, ici il y a des infos interessantes sur ftp:
slacksite.com/other/ftp.html

C’est un peu comme le tableau ci-dessus mais ca aide bien.

[quote=“ripat”]Pas d’explication mais j’ai trouvé un tableau complet (…)[/quote]excellent, les elements sont dans le tableau

dis matt, ca serait pas toi le “Technicien” qui a posé cette question sur le newsgroup linux.debian.user.french ? :wink:

[quote=“Twistophe”]dis matt, ca serait pas toi le “Technicien” qui a posé cette question sur le newsgroup linux.debian.user.french ? :wink:[/quote]non. J’interviens seulement sur debian-security.

a ok, le gars n’a pas eu de réponse pour le moment, mais le titre c’est :

ca ressemble drolement a ton topic, c’est pour ca…

[quote=“MattOTop”]J’ai un problême pour faire du ftp put depuis un poste masqueradé par un routeur debian.
Je précise aussi que je redirige les demandes sur les ports 20:21 vers un proxy frox en transparent, mais quand je desactive la redirection, ça ne passe pas mieux.
La seule solution que j’ai trouvée en regardant les paquets, est d’ouvrir les requètes en provenance du port 20 du serveur ftp ou je veux déposer.
Personne n’aurait une explication, et une solution plus propre que d’ouvrir tout ce qui vient d’un port sur une machine que je ne controle pas ?[/quote]

Prenons le cas simple, sans proxy, juste masquerading. ca marche ou pas?
Parceque c’est le cas de base ca!
Le get (ou le ls tout simplement) marchent -t-ils?

[quote=“Twistophe”]a ok, le gars n’a pas eu de réponse pour le moment, mais le titre c’est :

ca ressemble drolement a ton topic, c’est pour ca…[/quote]Peut être quelqu’un a t il posé la question pour moi ?
Mais c’est peut être le problême habituel du mode passif/ftp_conntrack posé sous une forme differente. Le problême est le même que moi ?

les serveur de news wanadoo ont l’air HS, je n’y ai pas accès ce matin, je te tiens au courant lorsque cela refonctionnera.

[EDIT] ca refonctionne, voici le contenu du post :

[quote]Bonjour,

J’ai un problème pour faire du ftp put depuis un poste masqueradé par un
routeur debian.
Quand je me mets en “masquerading pur”, avec tout en ACCEPT, et juste un
règle de masquerading, je peux déposer un fichier en ftp. Le masq n’est donc
pas en cause.

Par contre, dès que je mets une policy DROP par défaut en INPUT sur la table
filter, je n’ai plus de possibilité de passer, ni même en mode ftp passif.

J’ai pourtant une règle ACCEPT pour les flags ESTABLISHED,RELATED.
Je précise aussi que je redirige les demandes sur les ports 20:21 vers un
proxy frox en transparent, mais quand je desactive la redirection, ça ne
passe pas mieux.

La seule solution que j’ai trouvée en regardant les paquets, est d’ouvrir
les requètes en provenance du port 20 du serveur ftp ou je veux déposer.

Personne n’aurait une explication, et une solution plus propre que d’ouvrir
tout ce qui vient d’un port sur une machine que je ne controle pas ?[/quote]

quelqu’un a forcément relayé pour moi. Je n’ai pas posté en newsgroup :open_mouth:

Non, c’est moi qui est posée la question ! sur la liste de diffusion.
Je voulais aider matt alors j’ai repri ces propres propos car j’ai rien compris à la question :frowning: en espérant d’avoir une réponse mais apparemment ça à l’air de passionner les foules.

Tjrs pas trouvé?

Reprenons …
Au commencement de l’univers… :slightly_smiling:

Il faut resoudre le problème sans proxy deja, sinon ca rajoute une bonne couche de complexité…
En partant de là:
slacksite.com/other/ftp.html#actexample
Lorsque les modules iptables voient passer la commande PORT , alors ils doivent ouvrir le port correspondant pour cette adresse IP. Au sniffer, l’ip dans la trame PORT est bonne?
Je suppose que tu as bien les deux modules iptables chargés? nat et ftp

En plus, certains ftp ne suivent pas la rfc et ils n’utilisent pas le port 20 mais un autre port donc tu peux avoir du mal à te connecter sur certains ftp pas standard.

[quote=“BorisTheButcher”]Tjrs pas trouvé? [/quote]pas eu le temps de m’y coller. Ca marche déjà comme ça, et comme le dépot ftp est en ip fixe, j’ai encore restreint la règle, et ça me fait moins peur.
Mais je te remercie de ces réfèrences, c’est ce qu’il me fallait: la description des transactions, c’est nickel.

Je fais remonter ce vieux post car je viens de rencontrer un problème similaire: ma règle d’autorisation de connexions établies ne fonctionnait pas pour le ftp:

Le fichier /proc/net/ip_conntrack restait vide de toute connexion ftp.

Il a suffit de charger le module ip_conntrack_ftp pour que tout fonctionne comme attendu.

Dans ma grande naïveté, je pensais que le ip_conntrack générique prennait tout type de connexion en compte. Ben non!