[FTP/TLS] iptables : ftp-data ???

Résolu
Bonsoir à tous, et bonne nuit à ceux qui se couchent....

J'ai une petite question ....

Je me suis remis au ftp, plus particulierement à l'authentification et chiffrement grace à TLS.

Je trouve des difficultés à configurer NETFILTER pour autoriser les connexions FTP avec TLS....pourtant je connais bien netfilter, mais je lutte un peu.

En effet la premiere connexion s'effectue sur le port 21, l'échange du certificat est ensuite fait, et la on crypte l'envoi des commandes du mot de passe, ainsi que celle du choix des ports utilisés pour le transfert des données (le serveur utilise le port 20 en actif, sinon en passif ce sont des ports hauts supérieurs à 1024 ...), puis vient l

Luc L.

29 réponses

Résumé de la discussion

La discussion porte sur la configuration de NETFILTER pour autoriser les connexions FTP avec TLS et sur les difficultés de filtrage liées aux ports de transfert de données. Des modules ip_nat_ftp et ip_conntrack_ftp sont nécessaires pour le NAT et le filtrage, et les règles FORWARD, INPUT et OUTPUT doivent être ajustées pour autoriser le trafic FTP. Les échanges sur le port 21 et le chiffrement des commandes compliquent le filtrage des ports de données, et certains préconisent des règles spécifiques ou l'utilisation de SFTP. En pratique, la compatibilité TLS FTP peut nécessiter d'ouvrir largement les ports et d'envisager des alternatives comme SFTP, selon l'architecture réseau et les exigences de sécurité.

Bobot (l’IA à votre service)
  1. Pour permettre à ton script de se lancer au démarrage sous debian, tu le colles dans /etc/init.d/ tu vérifies qu'il soit exécutable. Dans le cas contraire, tape la commande:
    chmod +x /etc/init.d/script
    Dernière commande à taper:
    update-rc.d script start 20 2 3 4 5 . stop 20 0 1 6 .

    Le 20 correspond à l'ordre de démarrage
    Les 2 3 4 5 et 0 1 6 correspond au différent niveau de démarrage
    Attention les points sont obligatoires
    0
    1. Contributeur
      Bonsoir :)

      Merci Kmf d'avoir participé au probleme.

      Otipogle, je regarderais ton script un petit plus tard et je te dirais ce que j'en pense, mais je ne prétend pas être un expert (au fait merci Kmf :), je me débrouille un peu.

      A bientot et bonne nuit.
      0
      1. Pour les regles c'est kelux l'expert, par contre pour lancer au boot: En general il y a dans /etc/rc.d/... (ou un sous-repertoire de ca) un fichier de genre "rc.local" ou "boot.local" dans lequel il suffit d'ajouter une ligne faisant executer ton script et ca y est. Je n'ai pas d'infos specifiques pour Debian mais ca doit etre possible de cette facon. Ce n'est pas elegant mais facile!
        0
        1. YES,

          mon ftp est accessible de l'extérieur.
          Les modules se chargent correctement avec le script.
          Les règles ont permis de laisser le ftp sans tout laisser passer (je l'espère :-/)

          Par contre, car il y en a toujours :
          1 - je sais pas comment faire pour qu'il se lance tjrs au démarrage, en sachant que j'ai une débian et que c pas comme les autres distrib.
          2 - Est-ce que tu veux bien jeter un oeil a mes règles, et me dire celles qui servent à rien, celles qui sont dangereuses, sans aucun sens etc ???

          #!/bin/bash
          
          MODPROBE=/sbin/modprobe 
          $MODPROBE ip_tables 
          $MODPROBE ip_conntrack 
          $MODPROBE ip_conntrack_ftp 
          $MODPROBE iptable_nat 
          $MODPROBE ip_nat_ftp 
          
          #nat
          iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
          
          #filter
          iptables -P INPUT DROP
          iptables -P FORWARD DROP
          iptables -P OUTPUT DROP
          
          iptables -A INPUT -d 127.0.0.0/255.0.0.0 -i lo -j ACCEPT
          iptables -A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT
          iptables -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
          iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
          iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 80 -j ACCEPT
          iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
          iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
          iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
          iptables -A INPUT -i ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
          iptables -A INPUT -i ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
          iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
          iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 53 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 53 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 22 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
          iptables -A FORWARD -d 192.168.0.0/255.255.255.0 -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
          iptables -A FORWARD -p icmp -m icmp --icmp-type 8 -j ACCEPT 
          iptables -A FORWARD -p icmp -m icmp --icmp-type 0 -j ACCEPT 
          iptables -A FORWARD -p icmp -m icmp --icmp-type 3 -j ACCEPT 
          iptables -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 1863 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 6891 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 6891 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 443 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 6891:6900 -j ACCEPT 
          iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 6891:6900 -j ACCEPT 
          iptables -A OUTPUT -s 127.0.0.0/255.0.0.0 -o lo -j ACCEPT 
          iptables -A OUTPUT -s 192.168.0.254 -o eth1 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 53 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 53 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p ah -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p esp -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --sport 22 -j ACCEPT 
          iptables -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT 
          iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 1863 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 6891 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 443 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 6891:6900 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 6891:6900 -j ACCEPT 
          iptables -A OUTPUT -o ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
          iptables -A OUTPUT -o ppp0 -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
          iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
          
          echo "1" > /proc/sys/net/ipv4/ip_forward
          


          Merci beaucoup pour ton aide, elle a été plus que précieuse.
          0
          1. Si ce n'est que ca:

            Ta ligne:
            iptables -nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE

            est fausse, il faut la corriger:
            iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE


            C'est l'option "-nat" qui est fausse, correcte c'est "-t nat".
            Avec cette correction la syntax sera correcte mais pour le contenu je n'en ai aucune idee.

            Apart ca quand j'essaie ton script chez moi il charge encore quelques modules de plus, en total les modules impliques sont:

            ipt_MASQUERADE
            ipt_TCPMSS
            ipt_tcpmss
            ipt_LOG
            ipt_state
            iptable_filter
            ip_nat_ftp
            iptable_nat
            ip_conntrack_ftp
            ip_conntrack
            ip_tables


            Il semble que chez moi iptables n'a pas de mal de les charger tout seul, donc en principe pas besoin de mettre plus de modprobes (mais ca ne fait pas de mal non-plus). Par exemple quand on appelle iptables avec l'option "-m tcpmss" ca devrait charger les modules: ipt_TCPMSS et ipt_tcpmss .
            0
            1. Resalut,

              J'ai mis tout dans un script. Le chargement des modules plus les règles iptables.
              Ensuite dox2unix iptablesScript
              Puis ./iptablesScript

              Et il me sors :
              iptablesv1.2.11: Unknow arg 'iptables'

              Je vois pas d'où sors cette erreur ! Peut-être que c'est pas dans /bin/bash mais je pense pas??

              En tout cas les modprobe direct en console il accepte bien.

              Tu vois où ça coince ??

              #!/bin/bash
              
              MODPROBE=/sbin/modprobe 
              $MODPROBE ip_tables 
              $MODPROBE ip_conntrack 
              $MODPROBE ip_conntrack_ftp 
              $MODPROBE iptable_nat 
              $MODPROBE ip_nat_ftp 
              
              #nat
              iptables -nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
              
              #filter
              iptables -P INPUT DROP
              iptables -P FORWARD DROP
              iptables -P OUTPUT DROP
              
              iptables -A INPUT -d 127.0.0.0/255.0.0.0 -i lo -j ACCEPT
              iptables -A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT
              iptables -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
              iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
              iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
              iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
              iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
              iptables -A INPUT -i ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
              iptables -A INPUT -i ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
              iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
              iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 53 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 53 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 22 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
              iptables -A FORWARD -d 192.168.0.0/255.255.255.0 -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
              iptables -A FORWARD -p icmp -m icmp --icmp-type 8 -j ACCEPT 
              iptables -A FORWARD -p icmp -m icmp --icmp-type 0 -j ACCEPT 
              iptables -A FORWARD -p icmp -m icmp --icmp-type 3 -j ACCEPT 
              iptables -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 1863 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 6891 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 6891 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 443 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 6891:6900 -j ACCEPT 
              iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 6891:6900 -j ACCEPT 
              iptables -A OUTPUT -s 127.0.0.0/255.0.0.0 -o lo -j ACCEPT 
              iptables -A OUTPUT -s 192.168.0.254 -o eth1 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 53 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 53 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p ah -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p esp -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --sport 22 -j ACCEPT 
              iptables -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT 
              iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 1863 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 6891 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 443 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p udp -m udp --dport 6891:6900 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp -m tcp --dport 6891:6900 -j ACCEPT 
              iptables -A OUTPUT -o ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
              iptables -A OUTPUT -o ppp0 -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
              iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
              
              echo "1" > /proc/sys/net/ipv4/ip_forward
              
              0
              1. Mais comment on les charge c'est fichus modules ?

                C'est une question a laquelle je peux aussi repondre:
                Le plus facile c'est de mettre tout au debut de script une liste de commandes de genres:
                MODPROBE=/sbin/modprobe
                   $MODPROBE ip_tables
                   $MODPROBE ip_conntrack
                   $MODPROBE ip_conntrack_ftp
                   $MODPROBE iptable_nat
                   $MODPROBE ip_nat_ftp
                

                Normalement, l'utilisation de la commande d'iptables charge deja le 1er module automatiquement (et peut-etre d'autres modules). Cependant de les charger manuellement pour en etre sur ne fait pas de mal!! Bien-entendu tu prolonges cette liste avec d'autres modules si necessaire ou souhaitable.

                P.S.: Je suis desolee pour ma vu trop simpliste apropos de ftp dans mon poste precedent. J'avais oublie que pour ftp il y a en effet de modules speciaux. Je l'avais remarque il y a longtemps mais je ne m'en suis jamais servit moi meme.

                Par contre pour le "sshd" ma proposition ci-dessus marche bien, c.-a-d. dans une config ou la chaine "OUTPUT" est ouverte, sinon il faut aussi ajouter une regle pour ca.
                0
                1. Salut,

                  effectivement c ptete bien ça. Il y a un module ip_conntrack (mais pas ip_conntrack_ftp :-( ).

                  Mais en plus celui-ci semble pas utilisé :

                  Module                  Size  Used by    Not tainted
                  ipt_state                              504  10  (autoclean)
                  ipt_MASQUERADE          1304   1  (autoclean)
                  iptable_nat                     14766   1  (autoclean) [ipt_MASQUERADE]
                  ip_conntrack                  16900   0  (autoclean) [ipt_state ipt_MASQUERADE iptable_nat]
                  ipt_TCPMSS                       2104   2  (autoclean)
                  ipt_tcpmss                         728   1  (autoclean)
                  iptable_filter                    1644   1  (autoclean)
                  ip_tables                         10400   8  [ipt_state ipt_MASQUERADE iptable_nat ipt_TCPMSS ipt_tcpmss iptable_filter]
                  pppoe                                 6816   1  (autoclean)
                  pppox                                 1016   1  (autoclean) [pppoe]
                  af_packet                       11048   2  (autoclean)
                  ppp_generic                   17956   3  (autoclean) [pppoe pppox]
                  slhc                                     4144   0  (autoclean) [ppp_generic]
                  usb-ohci                          16488   0  (unused)
                  usbcore                           52268   1  [usb-ohci]
                  i810_audio                     21372   0  (unused)
                  ac97_codec                   11252   0  [i810_audio]
                  soundcore                        3268   2  [i810_audio]
                  ide-scsi                             8272   0 
                  scsi_mod                       86052   1  [ide-scsi]
                  8139too                         12328   1 
                  mii                                     1952   0  [8139too]
                  sis900                            11052   1 
                  crc32                                2848   0  [8139too sis900]
                  nls_cp437                       4284   2  (autoclean)
                  vfat                                  8716   1  (autoclean)
                  fat                                  27576   0  (autoclean) [vfat]
                  ide-cd                            27072   0 
                  cdrom                            26212   0  [ide-cd]
                  rtc                                     5768   0  (autoclean)
                  reiserfs                       152944   1  (autoclean)
                  ide-detect                         288   0  (autoclean) (unused)
                  sis5513                            9872   1  (autoclean)
                  ide-disk                         12448   3  (autoclean)
                  ide-core                        91832   3  (autoclean) [ide-scsi ide-cd ide-detect sis5513 ide-disk]
                  unix                                12720   7  (autoclean)


                  Donc là ils semble pas être chargés ! Mais comment on les charge c'est fichus modules ? :-/
                  0
                  1. Contributeur
                    Salut :)

                    As tu vérifié si les deux modules ip_nat_ftp et ip_conntrack_ftp étaient bien chargés ?

                    A chaque démarrage de la machine il se ne charge pas automatiquement, le probleme pourrait venir du fait que le module ip_conntrack_ftp ne soit pas chargé, il permet au firewall d'inspecter les communications FTP et donc savoir sur quel port se fera le transfert des données.

                    Pour vérifier s'il sont chargés tape
                    lsmod


                    Vérifie peut etre les firewall des clients , acceptent ils le FTP ?

                    La solution est proche :)

                    PS : il y a deux trois règles qui me déplaisent , mais on va déja résoudre le pb du ftp avant tout ...

                    @+

                    Luc L.
                    [Gentoo] enfin :Þ
                    0
                    1. ça y est j'ai trouvé le temps de m'y remettre un peu.

                      Mais ça bloque toujours au momment du LIST, c'est à dire quand le changùent de port de port se fait.

                      Voicç mes règles iptables, j'avoue que je n'arrive pas à toutes les comprendre même si c'est moi qui les ai mises :-/

                      Chain INPUT (policy DROP)
                      target     prot opt source               destination         
                      ACCEPT     all  --  anywhere             127.0.0.0/8         
                      ACCEPT     all  --  192.168.0.0/24       anywhere            
                      ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 
                      ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
                      ACCEPT     icmp --  anywhere             anywhere            icmp echo-reply 
                      ACCEPT     icmp --  anywhere             anywhere            icmp destination-unreachable 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp state NEW,ESTABLISHED 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp-data state ESTABLISHED 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED 
                      
                      Chain FORWARD (policy DROP)
                      target     prot opt source               destination         
                      TCPMSS     tcp  --  anywhere             anywhere            tcp flags:SYN,RST/SYN tcpmss match 1400:1536 TCPMSS clamp to PMTU 
                      ACCEPT     udp  --  192.168.0.0/24       anywhere            udp dpt:domain 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:domain 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:www 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:ssh 
                      ACCEPT     all  --  192.168.0.0/24       anywhere            state RELATED,ESTABLISHED 
                      ACCEPT     all  --  anywhere             192.168.0.0/24      state RELATED,ESTABLISHED 
                      ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
                      ACCEPT     icmp --  anywhere             anywhere            icmp echo-reply 
                      ACCEPT     icmp --  anywhere             anywhere            icmp destination-unreachable 
                      TCPMSS     tcp  --  anywhere             anywhere            tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:1863 
                      ACCEPT     udp  --  192.168.0.0/24       anywhere            udp dpt:1863 
                      ACCEPT     udp  --  192.168.0.0/24       anywhere            udp dpt:6891 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:6891 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:https 
                      ACCEPT     tcp  --  192.168.0.0/24       anywhere            tcp dpt:ftp 
                      
                      Chain OUTPUT (policy DROP)
                      target     prot opt source               destination         
                      ACCEPT     all  --  127.0.0.0/8          anywhere            
                      ACCEPT     all  --  192.168.0.254        anywhere            
                      ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
                      ACCEPT     ah   --  anywhere             anywhere            
                      ACCEPT     esp  --  anywhere             anywhere            
                      ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ssh 
                      ACCEPT     icmp --  anywhere             anywhere            icmp echo-reply 
                      ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:1863 
                      ACCEPT     udp  --  anywhere             anywhere            udp dpt:1863 
                      ACCEPT     udp  --  anywhere             anywhere            udp dpt:6891 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ftp state ESTABLISHED 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ftp-data state RELATED,ESTABLISHED 
                      ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpts:1024:65535 state ESTABLISHED 
                      


                      Je ne sais pas trop vers où chercher, c'est ça le problème !
                      Toi tu vas ptete voir.

                      Dis-moi ce que tu en penses.
                      0
                      1. Contributeur
                        Ba alors ca en ou tout ca :) ?

                        Pas de nouvelles bonnes nouvelles ???

                        :)

                        Luc L.
                        [Gentoo] enfin :Þ
                        0
                        1. Contributeur
                          Merci luc, tu es un chef !!!

                          Merci , mais il y en a certain ici qui maitrisent bien mieux que moi je pense, l'honneur revient aux personnes qui font vivre Comment Ca Marche.

                          J'ai fait un BTS en alternance Informatique Admin Reseau , mais actuellement je travaille a l'ANPE :)

                          Je vais certainement continuer sur un BAC +4 ou 5 à la rentrée prochaine, en sécu réseau ca serait l'idéal...

                          Sinon j'ai d'autres projets, comme la musique électronique, mais les temps sont durs dans ce milieu ces dernieres années, espérons que 2005 soit plus généreuse :)

                          Debian je connais qu' un tout petit peu , j'ai installé une Woody il y a quelques temps déja. Mais je suis passé sous Gentoo et depuis je ne m'en lasse pas.

                          Pose tes questions dans un nouveau post c'est mieux :) (notamment pour la recherche sur le forum, c'est nettement plus clair et concis)

                          @+

                          Luc L.
                          [Gentoo] enfin :Þ
                          0
                          1. Merci luc, tu es un chef !!!

                            Je regarde ça des que mes cours sont finis.

                            Sinon question perso, tu es étudiant ou tu taf ?

                            ET aussi, es-tu calé Debian? Car j'ai des ptites imprécisions de pensées que j'aimerai bien résoudre.

                            En tout cas merci pour le FTP. Je teste dès que j'ai fini, sans doute cet après-midi.
                            0
                            1. Contributeur
                              Euh sinon je viens de regarder le script ... oui je voulais pas le lire plus tot :)

                              Voici les lignes qui sont interressantes pour le ftp

                              -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT

                              -A OUTPUT -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT

                              -A OUTPUT -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT

                              Mais il en manque UNE .... sur INPUT de ppp0 .... le port 21 n'est pas ouvert ....

                              Bon FTP :)

                              Luc L.
                              [Gentoo] enfin :Þ
                              0
                              1. Contributeur
                                Allez c'est parti! j'ai pas dormi de la nuit mais bon je suis frais encore :)

                                #Chaque ligne commence par "iptables" et se termine par "ACCEPT"
                                #Les commandes iptables ne doivent pas etre écrites sur deux lignes...
                                
                                #on ouvre le port 21 
                                
                                iptables -A INPUT -i ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
                                
                                iptables -A OUTPUT -o ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
                                
                                #on permet le ftp actif 
                                
                                iptables -A INPUT -i ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
                                
                                iptables -A OUTPUT -o ppp0 -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
                                
                                #on permet le ftp passif
                                
                                iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
                                
                                iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
                                
                                #fin


                                Il faut obligatoirement charger les deux modules que j'ai cité plus haut A CHAQUE DEMARRAGE de la machine.

                                Si tu veux faire encore mieux ... c'est a dire restreindre encore un peu le filtrage pour le passif, définis une plage de ports sur le serveur FTP (on prend par exemple 20000 a 21000)

                                On remplace donc la partie concernant le ftp passif , voila ce que ca donne:

                                iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 20000:21000 -m state --state RELATED,ESTABLISHED -j ACCEPT
                                
                                iptables -A OUTPUT -o ppp0 -p tcp --sport 20000:21000 --dport 1024: -m state --state ESTABLISHED -j ACCEPT


                                Un petit "plus" , tu me dis que tu as ton modem branché sur eth1, peu importe ethX, mais il ne faut pas attribuer d'adresse IP a eth1 , dans les scripts de démarrage , il doit y avoir une option du type "up" , et ca suffit....il ne faut surtout pas mettre d'adresse IP c'est tout :)

                                @+

                                Luc L.
                                [Gentoo] enfin :Þ
                                0
                                1. royale la faut m'aime au lieu de même !!!! Je sais rien à voir, mais je trouvais cele-ci notable.
                                  0
                                  1. Tu as tout compris.

                                    Tu peux m'aider ! C'est cool !

                                    Par contre juste au cas où, m'aime si je doute pas que tu l'as vu. Mon ppp0 est branché sur eth0 et non eth1( juste pour rappel car c pas logique mais bon tt pis).

                                    Donc tu penses koi de ce que j'ai fait ?
                                    0
                                    1. Contributeur
                                      Le cas déja abordé sur le lien cité concerne un serveur FTP dans une DMZ, la ligne iptables -t nat -A PREROUTING -i $red -p tcp --dport $high_ports -j DNAT --to-destination IP_FTP permet de forwarder une plage de ports passifs vers le serveur en DMZ.

                                      Dans ton cas tu as un serveur FTP sur ta passerelle Internet , si j'ai bien compris ?

                                      Apres on attaque iptables :)

                                      Luc L.
                                      [Gentoo] enfin :Þ
                                      0
                                      1. Oui désolé, de toute façon, je suis reconnaissant a tous ceux qui m'aident.

                                        j'ai vu que tu as déjç eu une conversation similaire

                                        [url]http://www.commentcamarche.net/forum/affich-1138864-IPCOP-et-acc%E8s-FTP[/url]

                                        dedans, tu donne ceci :

                                        #Je définis qq variables basiques :
                                        red=ppp0
                                        green=eth0
                                        orange=eth1
                                        IP_FTP=ip du serveur FTP en DMZ
                                        high_ports=60000:61000

                                        #On fait le forward des ports
                                        #on utilise la table NAT
                                        iptables -t nat -A PREROUTING -i $red -p tcp --dport 21 -j DNAT --to-destination IP_FTP:21
                                        iptables -t nat -A PREROUTING -i $red -p tcp --dport 20 -j DNAT --to-destination IP_FTP:20
                                        iptables -t nat -A PREROUTING -i $red -p tcp --dport $high_ports -j DNAT --to-destination IP_FTP

                                        #on s'occupe du filtrage
                                        iptables -A FORWARD -i $red -o $orange -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
                                        iptables -A FORWARD -i $orange -o $red -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
                                        iptables -A FORWARD -i $red -o $orange -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
                                        iptables -A FORWARD -i $orange -o $red -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
                                        iptables -A FORWARD -i $red -o $orange -p tcp --sport 1024: --dport $hight_ports -m state --state RELATED,ESTABLISHED -j ACCEPT
                                        iptables -A FORWARD -i $orange -o $red -p tcp --sport $high_ports --dport 1024: -m state --state ESTABLISHED -j ACCEPT

                                        Moi j'utilise pas de variables, mais peu importe.
                                        Que signifie cette ligne :
                                        iptables -t nat -A PREROUTING -i $red -p tcp --dport $high_ports -j DNAT --to-destination IP_FTP

                                        Ensuite, je trouve que certines règles se ressemblent et je me demande s'il n'y a pas des choses de déjà faites involontairement.

                                        Voiçi mon fichier complet :

                                        # Completed on Tue Jan 18 04:36:22 2005
                                        # Generated by iptables-save v1.2.11 on Tue Jan 18 04:36:22 2005
                                        *filter
                                        :INPUT DROP [2857:160500]
                                        :FORWARD DROP [75:3600]
                                        :OUTPUT DROP [64:4243]
                                        -A INPUT -d 127.0.0.0/255.0.0.0 -i lo -j ACCEPT
                                        -A INPUT -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT
                                        -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
                                        -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
                                        -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
                                        -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
                                        -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
                                        -A INPUT -i ppp0 -p tcp -m tcp --dport 80 -j ACCEPT
                                        -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 53 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 53 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 22 -j ACCEPT
                                        -A FORWARD -d 192.168.0.0/255.255.255.0 -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
                                        -A FORWARD -p icmp -m icmp --icmp-type 8 -j ACCEPT
                                        -A FORWARD -p icmp -m icmp --icmp-type 0 -j ACCEPT
                                        -A FORWARD -p icmp -m icmp --icmp-type 3 -j ACCEPT
                                        -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 1863 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p udp -m udp --dport 6891 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 6891 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 443 -j ACCEPT
                                        -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT
                                        -A OUTPUT -s 127.0.0.0/255.0.0.0 -o lo -j ACCEPT
                                        -A OUTPUT -s 192.168.0.254 -o eth1 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p udp -m udp --dport 53 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 53 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p ah -j ACCEPT
                                        -A OUTPUT -o ppp0 -p esp -j ACCEPT
                                        -A OUTPUT -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --sport 22 -j ACCEPT
                                        -A OUTPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
                                        -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 1863 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p udp -m udp --dport 1863 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p udp -m udp --dport 6891 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 443 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 21 -j ACCEPT
                                        -A OUTPUT -o ppp0 -p tcp -m tcp --dport 80 -j ACCEPT
                                        COMMIT
                                        # Completed on Tue Jan 18 04:36:22 2005

                                        Tu en penses quoi. Je trouve vraiment le ftp pas simple du tout.

                                        Merci de ton aide
                                        0
                                        1. Contributeur
                                          Quoiqu'il arrive les deux modules ip_nat_ftp et ip_conntrack_ftp sont nécessaires pour respectivement avoir du NAT et gérer du filtrage.

                                          Lis le lien que je t'ai donné... malgré tout il faudra changer les règles FORWARD en INPUT et OUTPUT.

                                          Tu devrais aussi remercier kmf , il a pris la peinne de te répondre.

                                          Bonne journée.

                                          Luc L.
                                          [Gentoo] enfin :Þ
                                          0
                                          • 1
                                          • 2