[Debian] iptables problème ftp, pop, smtp

Résolu
J'ai un problème avec mon firewall sous Debian. Je test les ports ouverts et fermés du firewall avec un pc windows xp.

- Le web ca marche, skype et msn aussi.
- Le ftp ca marche a moitié, la connexion fonctionne mais le listage des répertoires ne fonctionne pas (Filezilla)
- pour le smtp et le pop rien du tout. j'utilise thunderbird. J'utilise un compte mail avec du pop et du smtp sécurisé : respectivement port 995 et 465.

Pourtant lorsque j'exécute la commande "netstat -ano" sur le pc windows xp je remarque une connexion vers une adresse publique sur le port 995, mais le statut de cette connexion est en "SYNC_SENT". Voici la ligne :

" TCP 172.16.2.125:1328 64.233.183.109:995 SYN_SENT 2732"

Donc à mon avis ca doit être une mauvaise config de mon firewall mais je trouve ca bizarre : j'ouvre bien les bons ports.

#! /bin/sh

# Vidage des chaines

iptables -F

# Suppression des chaines non standards

iptables -X

# Par defaut tout est ferme

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# reinitialisation table NAT

iptables -t nat -F
iptables -t nat -X

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# Translation d'adresse pour tout ce qui sort vers l'internet

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# les pings

iptables -A INPUT -p icmp -i eth0 -j ACCEPT
iptables -A OUTPUT -p icmp -o eth0 -j ACCEPT

# connexions locales

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# connexions dns

iptables -A INPUT -i eth1 -p udp -m udp --sport 53 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 53 -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 53 -j ACCEPT

# connexions http https

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT

# connexions ftp

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 21 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 21 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

# connexions pop

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 110 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 110 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT

# connexions imap

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 143 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 143 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 143 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 143 -m state --state RELATED,ESTABLISHED -j ACCEPT

# connexions imap (ssl)

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 993 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 993 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 993 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 993 -m state --state RELATED,ESTABLISHED -j ACCEPT

# connexions smtp

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 25 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 25 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT

# connexions smtp (ssl)

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 465 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 465 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --dport 465 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# connexions pop (ssl)

iptables -A OUTPUT -o eth1 -p tcp -m tcp --dport 995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --dport 995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


Donc pour résumer 2 problèmes :

- ftp
- pop (995) et smtp (465)

Merci d'avance de votre aide !!!!

18 réponses

  1. Modérateur
    Salut,

    Pour pop3 ssl et smtp ssl, tu t'es emmêlé les pinceaux sur les ports sources et destination ainsi que l'état tcp.

    Il faut changer :
    iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --dport 995 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    En:
    iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 995 -m state --state RELATED,ESTABLISHED -j ACCEPT


    Et changer :
    iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --dport 465 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

    En:
    iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 465 -m state --state RELATED,ESTABLISHED -j ACCEPT 


    Voilà, et pour le ftp certains serveur peuvent utiliser des ports autre que le 20 pour le transfert des données.
    Essaie de te connecter avec tes règles actuelles sur ftp.kernel.org avec le login anonymous et un mot de passe vide. Ce serveur utilise le port 20 pour le transfert. On saura si le problème vient de là ou pas.
    2
    1. Contributeur
      Re,

      Les règles sont correctes, c'est certain.

      Maintenant si on se met du coté client et que l'on regarde comment s'établit la connexion ....

      C'est en fait le client qui décide du mode à utiliser, passif ou actif ...

      Donc si tu ne paramètres pas le client en passif ou actif, il utilisera un mode par défaut...

      Le navigateur Web Internet Explorer fonctionne par défaut en actif.
      Filezilla est paramétrable depuis le menu Edition > Paramètres > paramètres de pare feu. Tu pourras cocher/décocher le mode passif.

      Autre chose n'oublie de systématiquement recharger tes règles iptables lorsque tu modifies ton script (ça peut paraitre idiot pour certains, mais on ne sait jamais.)

      Sinon vérifies sur le client les paramètres de pare feu, pourquoi ?
      La question est en fait "pourquoi il y a deux modes de connexion ftp pour les données?"
      A cause du parefeu des clients ... en effet le firewall n'accepte pas par défaut les connexions entrantes, donc dans le cas du ftp actif le client bloquera la connexion de données provenant du serveur (avec son port 20). Donc il a été mis en place le mode passif, car les parefeu des clients sont paramétrés généralement par défaut pour laisser sortir les nouvelles connexions....
      Donc vérifies si le parefeu sur la machine cliente accepte correctement les connexions entrantes ayant comme port source le port 20... meme si tu as ouvert le port 20 sur la passerelle, ce n'est pas dit que le client l' accèpte également.

      [EDIT] : oublie cette parenthèse sur le mode actif, te concernant il s'agissait du mode passif qui posait problème, je viens de me relire et de m'apercevoir de cela, par contre ca peut servir à d'autres...

      J'insiste aussi sur le second module à charger.

      Le premier, ip_conntrack_ftp sert à traquer les connexions ftp et prévoir la seconde connexion (le firewall voit les communications et sait sur quels ports la seconde connexion va etre effectuée, d'ou l'état RELATED et pas NEW sur les regles de ftp-data)

      Le second,ip_nat_ftp, sert aux clients derriere un NAT... (peut etre meme aux serveurs derriere un nat...)

      N'hésite pas si d'autres questions.

      @+

      1
      1. Modérateur
        Salut, comment est organisé ton réseau?
        La machine windows XP est dans le même réseau local que le firewall linux? C'est la machine Linux qui lui sert de passerelle?
        0
        1. Oui mon poste XP est dans le même réseau que le firewall.

          C'est exactement ca le firewall est la passerelle du XP.
          0
          1. Merci tout d'abord pour ton analyse, ce marche pour pop3 ssl et smtp ssl.

            Maintenant c'est toujours le ftp qui ne marche pas, j'ai bien ouvert les ports 20 et 21 en sortie. Mais ca n'y fait rien.

            Lorsque je me connecte sur ton ftp (le ftp que tu m'a donné hier) ou sur un autre d'ailleurs : la connection fonctionne. Le problème est que le listage des répertoires du ftp ne fonctionne pas.

            Voici le contenu des log de Filezilla :

            Etat : Connexion à ftp.kernel.org ...
            Etat : Connecté à ftp.kernel.org. Attente du message d'accueil...
            Réponse : 220 Welcome to ftp.kernel.org.
            Commande : USER anonymous
            Réponse : 331 Please specify the password.
            Commande : PASS *****
            Réponse : 230- Welcome to the
            Réponse : 230-
            Réponse : 230- LINUX KERNEL ARCHIVES
            Réponse : 230- ftp.kernel.org
            Réponse : 230-
            Réponse : 230- "Much more than just kernels"
            Réponse : 230-
            Réponse : 230- IF YOU'RE ACCESSING THIS SITE VIA A WEB BROWSER
            Réponse : 230- PLEASE USE THE HTTP URL BELOW INSTEAD!
            Réponse : 230-
            Réponse : 230-----> If you are looking for mirror sites, please go <----
            Réponse : 230-----> to mirrors.kernel.org instead <----
            Réponse : 230-
            Réponse : 230-This site is provided as a public service by the Kernel Dot Org
            Réponse : 230-Organization, Inc. Bandwidth is provided by The Internet Software
            Réponse : 230-Consortium, Inc. This server is located in San Francisco, California,
            Réponse : 230-USA; use in violation of any applicable laws strictly prohibited.
            Réponse : 230-
            Réponse : 230-Due to U.S. Exports Regulations, all cryptographic software on this
            Réponse : 230-site is subject to the following legal notice:
            Réponse : 230-
            Réponse : 230- This site includes publicly available encryption source code
            Réponse : 230- which, together with object code resulting from the compiling of
            Réponse : 230- publicly available source code, may be exported from the United
            Réponse : 230- States under License Exception "TSU" pursuant to 15 C.F.R. Section
            Réponse : 230- 740.13(e).
            Réponse : 230-
            Réponse : 230-This legal notice applies to cryptographic software only. Please see
            Réponse : 230-the Bureau of Industry and Security (http://www.bis.doc.gov/) for more
            Réponse : 230-information about current U.S. regulations.
            Réponse : 230-
            Réponse : 230-Neither the Kernel Dot Org Organization, Inc. nor its sponsors make
            Réponse : 230-any guarantees, explicit or implicit, about the contents of this site.
            Réponse : 230-Use at your own risk.
            Réponse : 230-
            Réponse : 230-This site is accessible via the following mechanisms:
            Réponse : 230-
            Réponse : 230- FTP ftp://ftp.kernel.org/pub/
            Réponse : 230- HTTP https://mirrors.edge.kernel.org/pub/
            Réponse : 230- RSYNC rsync://rsync.kernel.org/pub/
            Réponse : 230-
            Réponse : 230-NFS and SMB/CIFS are no longer available.
            Réponse : 230-
            Réponse : 230-For comments on this site, please contact <ftpadmin@kernel.org>.
            Réponse : 230-Please do not use this address for questions that are not related to
            Réponse : 230-the operation of this site. Please see our homepage at
            Réponse : 230-https://www.kernel.org/ for links to Linux documentation resources.
            Réponse : 230-
            Réponse : 230 Login successful.
            Commande : SYST
            Réponse : 215 UNIX Type: L8
            Commande : FEAT
            Réponse : 211-Features:
            Réponse : EPRT
            Réponse : EPSV
            Réponse : MDTM
            Réponse : PASV
            Réponse : REST STREAM
            Réponse : SIZE
            Réponse : TVFS
            Réponse : 211 End
            Etat : Connecté
            Etat : Récupération de la liste de répertoires...
            Commande : PWD
            Réponse : 257 "/"
            Commande : TYPE A
            Réponse : 200 Switching to ASCII mode.
            Commande : PASV
            Réponse : 227 Entering Passive Mode (204,152,191,37,52,138)
            Commande : LIST
            Erreur : Le canal de transfert n'a pas pu être ouvert. Raison : Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu.
            Erreur : N'a pas pu récupérer la liste du répertoire


            A noter que lorsque je permet au poste XP de se connecter sur internet sans passer par le firewall la connexion ftp marche parfaitement : donc cela ne vient pas de la config de filezilla.
            0
            1. Modérateur
              Je viens de tester avec les mêmes règles que toi pour le ftp mais en INPUT (j'ai qu'une machine chez moi). Et ça fonctionne, donc le soucis concerne seulement le forward.
              Le problème, c'est que j'ai pas de machine pour tester.

              Essaie un ptit truc:
              Insère une règle au début de tes règles ftp:
              iptables -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --sport 20 -m state --state ! RELATED -j LOG --log-prefix "FTP_TEST: "

              Ca loggera ce qui vient sur depuis un port 20 et qui n'est pas considéré comme connexion en relation avec une connexion existante.

              Connecte toi ensuite sur ftp.kernel.org et après le listage échoué, regarde dans tes logs:
              cat /var/log/syslog | grep FTP_TEST

              Et colle ici ce que te donnera cette commande.
              0
              1. Ca ne marche pas les inscriptions dans le log de "syslog". Je ne trouve aucune information sur le comportement du firewall dans les logs : /var/log/syslog, /var/log/messages, /var/log/lastlog et tout le reste.

                Je ne comprends pas trop pourquoi le ftp ne veut pas marcher !!!!!!
                0
                1. Modérateur
                  Ah ben vi....
                  Je m'emmêle les pinceaux, je sais jamais si c'est pour les serveurs ou les clients, mais c'est pour les clients....

                  Donc:
                  modprobe ip_conntrack_ftp
                  0
                  1. Exact c'est pour les clients et pas pour un serveur ftp dans mon réseau !!!!!
                    0
                    1. j'ai juste à rajouter ca et ca va marcher ??
                      0
                      1. Modérateur
                        Ca devrait marcher.

                        Toujours parler de ce genre de choses au conditionnel ;-)
                        0
                        1. Ca ne marche toujours pas. En exécutant la commande "lsmod" je vois bien que le module "ip_conntrack_ftp" est démarré.

                          J'ai fouillé un peu sur le net et j'ai trouvé un tuto intéressant : cela parle de ce module avec les connections ftp vers les serveur sur internet.

                          Dans le cas d'une connexion en mode actif :

                          En fait lorsqu'on ouvre notre navigateur et on tape "ftp:// ..." : donc on veut accéder à un ftp sur le net; on se connecte sur le port 21 du serveur.
                          Ensuite le client ftp indique au serveur sur quel port est-ce-que ce dernier doit se connecter (ex : port 3084).

                          le serveur se met sur son port 20 et transmet les données au client sur son port 3084. Et comme sur le firewall du client les ports non reconnus comme 3084 ne sont pas ouvert. Donc ca bloque : PROBLEME : en gros c'est ce qui m'arrive

                          SOLUTION :
                          Activer le module "ip_conntrack_ftp"

                          Il donne la 1ère règle à ajouter :
                          iptables -I INPUT 1 -p tcp --sport 21 -m state --state ESTABLISHED
                          -j ACCEPT


                          Et ensuite il dit qu'il faut une 2ème règle pour :

                          Pour autoriser les transferts de données en FTP depuis le serveur vers notre
                          machine, il faudra donc autoriser les connexions provenant du port 20 du serveur
                          FTP et qui sont liées à la connexion de 'commandes' qui a été initiée juste
                          avant par notre machine (statut RELATED). N'oubliez pas de rajouter le statut
                          ESTABLISHED, en eet, la connexion n'aura le statut RELATED qu'un
                          cours instant, une fois identiée par netlter et par le client FTP, elle deviendra
                          ESTABLISHED


                          Mais il ne donne pas la règle : moi j'ai pensé à ca :

                          iptables -A INPUT -i eth1 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT

                          Tu penses que c'est bon ou pas ?? j'ai essayé et cela ne marche pas ??
                          Je vais bien y arriver !!!!!
                          0
                          1. En fait j'ai ces lignes pour le ftp :

                            ------------------------- début des règles --------------------------------

                            chain INPUT


                            iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
                            iptables -A INPUT -i eth1 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT

                            #FTP actif
                            iptables -A INPUT -i eth1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT


                            chain FORWARD

                            iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
                            iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
                            iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 20 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
                            iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT

                            chain OUTPUT

                            iptables -A OUTPUT -o eth1 -p tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
                            iptables -A OUTPUT -o eth1 -p tcp --dport 20 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT


                            # Autoriser le suivi de connexion ftp en mode actif vers internet (module "ip_conntrack_ftp" est present dans /etc/init.d/firewall)

                            -A OUTPUT -o eth1 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT


                            ------------------------- Fin des règles --------------------------------

                            Tout ce qui est en gras c'est ce que j'ai rajouté pour faire fonctionner le ftp en mode actif. Ca marche 1 fois sur 2 : donc 1 fois sur 2 je visualise les répertoires du serveur ftp (et je peux même télécharger des fichiers). Et j'essaie de me deconnecter et de me reconnecter et cela ne marche plus.

                            Etat actuel : Le mode passif ne marche pas mais le mode actif marche de temps en temps

                            Je ne comprends pas ???? Merci de m'aider
                            0
                            1. Contributeur
                              Salut,

                              Je viens rajouter mon grain de sel :)

                              N'oublies pas de charger également le module ip_nat_ftp, ca marchera mieux.

                              Je vais ici écrire quelques règles pour le ftp ... il y des règles justes dans les exemples ci dessus, mais je préfère tout écrire, autant pour la passerelle que pour le lan.

                              net = interface du net
                              lan = interface du lan

                              #Regles pour la passerelle
                              #Afin qu'elle puisse accéder à un serveur ftp sur le net
                              #la passerelle est donc cliente dans ce cas...

                              iptables -A OUTPUT -o $net -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
                              iptables -A INPUT -i $net -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

                              #ftp actif
                              iptables -A OUTPUT -o $net -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
                              iptables -A INPUT -i $net -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT

                              #ftp passif
                              iptables -A OUTPUT -o $net -p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
                              iptables -A INPUT -i $net -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT

                              # Fin de config pour la passerelle
                              # On passe au LAN

                              iptables -A FORWARD -i $lan -o $net -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
                              iptables -A FORWARD -i $net -o $lan -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

                              # ftp actif

                              iptables -A FORWARD -i $lan -o $net -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
                              iptables -A FORWARD -i $net -o $lan -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT

                              #ftp passif

                              iptables -A FORWARD -i $lan -o $net -p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
                              iptables -A FORWARD -i $net -o $lan -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT

                              Voila ;)

                              rappel :

                              ftp actif : c'est LE SERVEUR FTP qui créé la seconde connexion (connexion "données") avec son port 20, c'est pour cela qu'on dit que le serveur est actif.

                              ftp passif : c'est LE CLIENT qui créé la seconde connexion. Le serveur FTP est en attente du client, c'est pour cela qu'il est passif. Le client et le serveur utilisent tous les deux des ports hauts. Il est possible d'affiner les règles de filtrage concernant les ports hauts pour le mode passif...(demander si besoin plus d'infos).
                              0
                              1. Le mode passif fonctionne mais pas le mode actif. Je ne sais pas trop pourquoi : j'ai analysé tes règles elles ont l'air bonne.

                                J'utilise fillezilla pour tester mais lorsque j'utilise le navigateur web pour tester le ftp ca marche.

                                donc je ne sais pas trop quoi en penser !!!!
                                0
                                1. J'ai chargé le module "ip_nat_ftp" et c'est bon. Ca marche autant en actif qu'en passif.

                                  Tout marche nickel, merci c'est trop bien.
                                  0
                                  1. Modérateur
                                    Très instructive toute cette discussion.
                                    Pour moi ip_nat_ftp c'était juste pour les serveurs ftp derrière du nat mais apparemment c'est aussi pour les clients en actif....

                                    Je ne savais pas non plus que le port 20 était juste utilisé dans le mode actif...

                                    Merci :-)
                                    0