Redirection de port Iptables

Fermé
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010 - 26 nov. 2007 à 21:57
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 27 nov. 2007 à 16:55
Bonjour,

en faites je cherche à rediriger mes port ftp 20 et 21 sur les port pasv_min_port=30000
pasv_max_port=30999 dans iptables , j'utilise vsftpd, et ubuntu gutsy merci de votre aide

21 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
26 nov. 2007 à 23:36
Tu auras quand même besoin du port 21.
D'ailleurs je crois que tu as mal compris ce qui se passe au niveau ftp passif.
Le port 21 sert pour les commandes. Et la rangée de ports passifs sert pour cueillir les données.
Tu as donc besoin d'une part du port 21, et d'autre part de tes ports passif, il ne faut donc pas forwarder ce qui vient vers le port 21 vers les ports passif.

Sur le routeur (modem ou autre) tu as besoin de forwarder le port 21 vers ton ordinateur, ensuite si ton routeur est sympathique il devrait tracer la suite du dialogue ftp et renvoyer les communications vers tes ports passifs.
Si c'est un routeur fait maison (sur un pc par exemple) et qu'il tourne sous linux, il faudra que tu actives un module particulier du noyau qui s'appelle ip_nat_ftp pour rediriger dynamiquement les port passifs.

De même sur ton ordinateur (pas le routeur), si tu as activé ton firewall iptables il y a une méthode qu'il vaut mieux préférer à une autre. Tu te dis: j'ai des ports passifs qui vont de 30000 à 30999. Donc tu autorises les communications vers ces ports.
Eh ben en fait il faut pas, ça marche mais ya plus propre: il suffit d'activer le module ip_conntrack_ftp:
modprobe ip_conntrack_ftp

Et iptables suivra le dialogue ftp pour ouvrir les ports passif quand il le faudra.
Par contre il faut autoriser manuellement les connexions vers le port 21.

Tiens un peu de lecture:
https://inetdoc.net/guides/iptables-tutorial/complexprotocols.html
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
26 nov. 2007 à 23:57
comment je fais pour voir si les module ip_conntrack_ftp se charge correctement avec iptables kilian?
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
26 nov. 2007 à 23:59
D'abord tu le charges (en root):
modprobe ip_conntrack_ftp

Et s'il y a pas d'erreur alors c'est bon.

Mais si tu veux vraiment vérifier, tu peux utiliser la commande lsmod pour lister les modules chargés:
lsmod | grep ip_conntrack_ftp
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 00:04
comme ça kilian ça va

# Charger les modules conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_ftp
modprobe ipt_conntrack
modprobe ip_conntrack
modprobe ip_nat_ftp

# Ftp
iptables -A INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 30000:30999 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 30000:30999 -m state --state RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 30000:30999 -m state --state ESTABLISHED -j ACCEPT
0

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

Posez votre question
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 00:10
Ouai en tappant ces commandes çe me dit rien , ça me remet ma ligne user@gniagnia

mais

user@gniagnia:~$ lsmod|grep ftp
nf_nat_ftp 4352 0
nf_nat 20140 3 nf_nat_ftp,nf_conntrack_netlink,iptable_nat
nf_conntrack_ftp 11136 1 nf_nat_ftp
nf_conntrack 65288 8 nf_nat_ftp,nf_conntrack_netlink,xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_conntrack,nf_conntrack_ftp


ma config vsftpd.conf


# Ceci configure vsFTPd en mode "standalone"
listen=YES

# On désactive les connexions anonymes
# et on active les non-anonymes(c'est le cas des utilisateurs virtuels):
anonymous_enable=NO
local_enable=YES

# Pour des raisons de sécurité on interdit toute action d'écriture:
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO


# 'guest_enable' est très important: cela active les utilisateurs virtuels!
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'virtual' que nous avons défini plus haut, et au home
# correspondant: '~virtual/'.
guest_enable=YES
guest_username=virtual

# On veut que les utilisateurs virtuels restent chez eux: '~virtual/'
# (attends, on leur a fait un toît, c'est pas pour rien!)
chroot_local_user=YES

# On défini le nombre maximum de sessions à 200(les nouveaux clients recevront
# un message du genre: "erreur: serveur occupé").
# On défini le nombre maximum de sessions par IP à 4
max_clients=200
max_per_ip=4
pasv_promiscuous=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
pasv_address=My fucking Ip adresse
port_promiscuous=YES
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 00:27
De ce côté là ça m'a l'air bon. Maintenant la config de Vsftpd est toujours un peu délicate...
On verra.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 00:24
Quelques commentaires:
modprobe ip_nat_ftp

Ca t'en a pas besoin sur ton ordinateur, seul le routeur qui est devant toi en a besoin, mais à priori les modem s'en chargent tout seuls.

iptables -A INPUT -i eth0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

Inutile ici de préciser que le port source est le 21.
Et d'ailleurs :
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED -j ACCEPT

Ceci est une ligne vitale car elle signifie: pour toute connexion déjà initialisée auparavant => j'accepte. Oui si la connexion a déjà été intialisée ça signifie à priori qu'il n'y a pas de danger, et c'est une règle necessaire pour que toute communication se passe bien.

Pour ce qui est des règles OUTPUT, je te suggère de ne pas en mettre pour l'instant est d'accepter que tout ce qui sort est permis par défaut:
iptables -P OUTPUT ACCEPT

D'ailleurs tes règles ne servent à rien si tu ne mets pas une politique de refus par défaut pour ce qui rentre:
iptables -P INPUT DROP


Donc comme je le disais teste d'abord sans règles d'OUPUT. Si ça marche, tu peux commencer à en mettre. Surtout que là tu filtres ce qui ne vient pas du port 21. Et je ne suis pas sûr que tout ce qui sortira viendra du port 21.

Ensuite comme je t'ai dis si tu as chargé ip_conntrack_ftp, tes règles d'entrée en multiport sont inutiles. Le firewall fera ça dynamiquement. Ensuite je ne sais pas si c'est une bonne idée de choisir des ports aussi haut. Choisit peut être une rangée du genre 1024 à 1100.
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 00:31
# Par defaut tout est ferme
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

comme ceci ?

iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 30000:30999 --dport 30000:30999 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 30000:30999 --dport 1024:30999 -m state --state ESTABLISHED -j ACCEPT

enfin comme ça

iptables -A OUTPUT -p tcp --dport 21 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 21 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 30000:30999 --dport 30000:30999 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 30000:30999 --dport 1024:30999 -m state --state ESTABLISHED -j ACCEPT

0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 00:37
Ha ça passe toujours pas RahhHH
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 00:38
Nan, on dirait que t'as pas vraiment lu mon message...
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT #Pour l'instant on ne s'encombre pas à filtrer ce qui sort
iptables -P FORWARD DROP

#Ne pas oublier le RELATED, important car elle permet de laisser entrer une connexion liée à une autre
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT 
#Une règle pour le port 21
iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT

Comme je t'ai dit, pas besoin des règles sur les port 30000 etc... Le module ip_conntrack_ftp s'en chargera.
Pour le port 20 je sais pas, au pire rajoute une ligne pour le port 20:
iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 00:44
Ha ok excuse kilian , voilà dc à present mon iptables


#!/bin/bash

# Charger les modules conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_ftp
modprobe ipt_conntrack
modprobe ip_conntrack
modprobe ip_nat_ftp

#activation du forward
echo 1 > /proc/sys/net/ipv4/ip_forward

#Anti Spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi

# pas de icmp
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Nous vidons toutes les chaines
iptables -F

# Nous supprimons les chaines non standards
iptables -X

# Par defaut tout est ferme
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#Accept CHAINE
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

# La machine locale est sure
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Resolution DNS pour le firewall
iptables -A INPUT -i eth0 --protocol udp --source-port 53 -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol udp --destination-port 53 -j ACCEPT
iptables -A INPUT -i eth0 --protocol tcp --source-port 53 -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 53 -j ACCEPT


# Messenger
iptables -A INPUT -p tcp --sport 1863 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1863 -j ACCEPT

# Messenger Transfert Files

# Heure GMT Online
iptables -A INPUT -i eth0 --protocol udp --source-port 123 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol udp --destination-port 123 -m state --state NEW,ESTABLISHED -j ACCEPT


# CUPS (imprimante)
iptables -A INPUT -p tcp --dport 631 -m state --state NEW -j ACCEPT

# P2P
iptables -A INPUT -p tcp --dport 7564 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 7564 -j ACCEPT
iptables -A INPUT -p udp --dport 7574 -j ACCEPT
iptables -A INPUT -p udp --sport 7574 -j ACCEPT


# ftp
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT

# connexions Firewall-Internet (www)
iptables -A OUTPUT -p tcp --dport 80 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 443 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# connexions firewall -Internet (pop)
iptables -A OUTPUT -p tcp --dport 110 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 110 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 995 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 995 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# connexions firewall-Internet (imap)
iptables -A OUTPUT -p tcp --dport 143 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 143 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# connexions firewall-Internet (imaps)
iptables -A OUTPUT -p tcp --dport 993 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 993 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# connexions firewall-Internet (smtp)
iptables -A OUTPUT -p tcp --dport 25 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 465 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 465 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# ping (accept les ping vers l'exterieur, mais pas entrant (flood))
iptables -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT

# IRC
iptables -A INPUT -p tcp --source-port 6667 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --destination-port 6667 -m state --state NEW,ESTABLISHED -j ACCEPT


# Fin de fichier

sinon mon vsftpd.conf il a l'air convenable kilian ? plus haut je l'ai posté
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 00:46
Ben ya beaucoup de choses.
Faut tester...j'ai pas le courage de tout lire :-)
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 00:49
en tout cas avec tes regles kilian Gtftp le repond

Chargement du répertoire / depuis le serveur (LC_TIME=fr_FR.UTF-8)
PASV

227 Entering Passive Mode (87,88,62,133,120,57)
Ne peut créer une connexion : Connexion refusée

et par contre en console voilà Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 01:12
Et j'imagine que si tu fais ls dans ce shell ftp, il n'y arrive pas.
Donc voilà il arrive à aller sur le port 21 mais pas sur les ports passifs.

Et si tu rajoutes cette règle?
iptables -A INPUT -i eth0 -p tcp --dport 30000:30999 -j ACCEPT
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
27 nov. 2007 à 12:44
j'ai installer pureftp finalement kilian et ça marche du tonerre
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 16:20
Ma foi...
Résolu alors, sans l'être vraiment :-)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 nov. 2007 à 16:25
Salut,

sans l'être vraiment
exactement ;-))
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 16:30
:-)

En fait ça m'enerve il ya toujours une part de mystère pour moi dans cette histoire de ftp passif. J'ai l'impression de bien visualiser ce qui se passe et pourtant ça foire....
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 nov. 2007 à 16:34
M'enfin perso je pencherai plus pour une mauvaise configuration (et je dirai même erreur dans la mise en place) de vsftpd, en me basant sur cette discussion, qu'un problème d'iptables et FTP passif ;-\

Bonne fin d'après-midi à vous ;-))
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 16:42
Ah oui d'accord.
Bah peut être...
Mais il arrivait à se connecter quand même...Par contre il n'arrivait pas à lister un repertoire.
Ca signifie que les commandes de base marchent bien (port 21) mais dés qu'il y a des données qui transitent, rien ne va plus (ports passifs).
C'est donc au niveau des ports passifs qu'il fallait faire quelque chose, mais on ne saura pas au final.

Mériterai peut être un article dans la faq, qu'est ce que vous en pensez?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 nov. 2007 à 16:45
Par contre il n'arrivait pas à lister un repertoire.
ce n'est pas forcement à cause de firewall, ça peut être aussi à cause de client
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
27 nov. 2007 à 16:46
Wep...
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 nov. 2007 à 16:49
C'est pas plus secure le Wap ? ;-DDD
0