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

Résolu/Fermé
kelux Messages postés 3065 Date d'inscription vendredi 18 juin 2004 Statut Contributeur Dernière intervention 20 janvier 2023 - 27 oct. 2004 à 02:22
 Elliot - 11 févr. 2005 à 09:27
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.
A voir également:

29 réponses

kelux Messages postés 3065 Date d'inscription vendredi 18 juin 2004 Statut Contributeur Dernière intervention 20 janvier 2023 432
25 janv. 2005 à 00:17
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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
kelux Messages postés 3065 Date d'inscription vendredi 18 juin 2004 Statut Contributeur Dernière intervention 20 janvier 2023 432
25 janv. 2005 à 23:43
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
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