Resolu : Iptables bloque les connexions sortantes vers les ftp

Bonjour à tous!
Je dispose d’un serveur personnel avec une box gentoo pour faire routeur firewall voici la config:
192.168.1.0/24<---->192.168.1.254(lan) Gentoo 82.235.X.X(adsl)<---->Inet

Ayant été victime d’attaques il y’a peu j’ai décidé de bloquer également le traffic sortant (lan->adsl) sauf ce que j’autorisais.
Je precise que je suis en noyau 2.6.21-gentoo-r3 et que donc il n’y a plus ip_conntrack_ftp

Voici ma config iptables (en un peu raccourcie):

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

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

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

#FTP
iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
#FTP-data actif
iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
#FTP-dat passif
iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT

Puis j’effectue un test de telechargement sur un serveur ftp :

et ca bloque…
La connexion sortante vers le FTP fonctionne effectivement mais on peut voir dans les logs :

Le parefeu bloque le transfert passif…
J’ai eu plusieurs versions sur internet pour ce probleme:
-un site sur lequel j’ai pris ces lignes de code(mais en les comprenant quand meme)
-il ne faut pas preciser les ports pour ftp-data (ip_conntrack_ftp s’en charge) donc pas ouvrir les ports 20 pour l’actif et 1024: pour le passif

Du coup je suis perdu, et pour ajouter a la confusion, comme je precisais en haut ip_conntrack_ftp n’existe plus sur les noyaux > 2.6.19 remplacé par nf_conntrack qui gère tout!

Pouvez vous m’aider à analyser l’erreur ?
Merci d’avance!
Edité le 24/06/2007 à 02:11

si t’as des attaques depuis l’exterieur alors bloquer les flux interne->externe n’apporte aucune secu supplementaire a part faire chier.
Dans un contexte personnel, ca n’a aucune utilite…

2emement, je vais pas te donner de solution directe pour ton probleme (car je deteste profondement iptables) mais je te propose d’installer shorewall qui est une surcouche de config a iptables et qui rend son utilisation beaucoup plus simple.
Non seulement, les regles de base pour assurer une vraie secu sont actives par defaut (alors qu’elles manquent dans les regles que tu as mis en place seul) mais le probleme du ftp passif se regle en une ligne de conf :

Bref, je laisse les specialistes (les fous dirais je) du iptables te donner une solution exacte mais etudie mes pistes, ca te simplifiera la vie je pense.

bon j’avais déja compilé ce paquet mais pas encore configuré car je trouvais que la doc était bof
finalement c’etait pas si compliqué cela dit jai pas écrit ta ligne mais plutot
ACCEPT $FW net tcp ftp
et ca roule tout seul :super:

merci de m’avoir forcé a franchir le pas :smiley:

regarde mieux la doc car il ya un principe de “templates” pas degueux qui permet d’ecrire “AllowFTP lan net” ou “AllowFTP $FW net” (depend si le ftp se fait depuis ton firewall depuis le lan).
Shorewall est vraiment tres bon et permet d’avoir un systeme de firewall aussi syntaxiquement “facile” a utiliser qu’un ipf de openbsd et quasiment aussi puissant.

modifie le titre de ton topic en rajoutant un “resolu” :wink:

oui enfin c’est pas vraiment résolu, c’est plus contourné :stuck_out_tongue:

sinon me souviens plus mais avec FTP, le premier paquet de DATA il est émis par le serveur non ?
car dans ce cas, dans tes règles ftp-data il faut placer RELATED sur INPUT pour que la nouvelle connection venant du serveur soit acceptées

aussi, pour plus de clartées, place les noms de tes interfaces sur tes règles… c’est moins crado et plus facile à maintenir meme si ca augmente le nombre de règles

pour moi, iptables est un bug et installer shorewall ou firestarter est la resolution :ane:

ca depend si tu es en mode passif ou actif.

question de choix, je suis pas contre les interfaces mais faut toujours prendre en compte le risque d’un bug venant de l’interface

j’ai tellement ramé avec des logiciels intermédiaire qui plantaient et me faisaient galérer que maintenant je prefere attaquer certains fonctionnalités au niveau le plus bas, iptables en est un exemple, rsync en est un autre, idem pour tout ce qui touche au wireless

après, TIMTOWTDI* comme on dit en perl :wink:

*There Is More Than One Way To Do It

je conseille toujours shorewall car il existe depuis tres longtemps et a toujours ete tres stable. C’est une excellente appli que j’utilise sans prod sans probleme.
M’enfin TIMTOWTDI :wink:

avoue quand meme que iptable est vraiment complique… je sais pas si tu connais ipf d’openbsd mais c’est le jour et la nuit. Et ipf a des fonctionnalites que n’a pas iptables.

et iptables a des fonctionnalités que n’a pas ipf, mais c’est vrai qu’ipf est ultra puissant et que iptables est dur a prendre en main

néanmoins, iptables permet, grace a ses modules et ses bibliothèques, d’aller très loin dans la config…
un exemple ici :

http://wiki.linuxwall.info/doku.php?id=ressources:articles:netfilter_advance

(voir l’inspection des strings et la QoS)
Edité le 26/06/2007 à 03:43