Iptables : plus de FTP en OUTPUT

Salut à tous !

Problème avec mon petit pare-feu iptables : il ne laisse ni gFTP ni Filezilla se connecter à mon serveur FTP chez OVH.

J’ai déjà localisé le souci : les deux programmes essaient d’ouvrir un port aléatoire (me semble-t’il) au moment de la connexion, puis le referment tout de suite une fois la connexion réussie. Etant donné que je DROP par défaut en OUTPUT, comment gérer cela ?

[code]$ sudo iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere
ACCEPT icmp – anywhere anywhere
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:www
ACCEPT udp – anywhere anywhere udp dpt:domain
ACCEPT udp – anywhere anywhere udp dpt:https
ACCEPT tcp – anywhere anywhere tcp dpt:ftp
ACCEPT tcp – anywhere anywhere tcp dpt:ftp-data[/code]

Evidemment, quand je passe l’OUTPUT en ACCEPT, tout fonctionne bien, et c’est là que je m’apperçois que la connexion avec ce port aléatoire est très fugace. Rageant de devoir passer en ACCEPT pour une fraction de seconde.

D’une part, il faut charger le module de suivi de connexion FTP nf_conntrack_ftp qui s’occupe de classer le premier paquet d’une connexion de données FTP dans l’état RELATED. D’autre part, il faut accepter les paquets dans l’état ESTABLISHED ou RELATED en sortie aussi.

Pour finir, tu peux supprimer la règle acceptant le port 20 (ftp-data) en sortie qui ne sert strictement à rien. Ce port est utilisé comme port source dans une connexion de données en mode actif établie depuis un serveur FTP vers un client FTP. Pour un client, un paquet sortant à destination du port 20 est donc un paquet de réponse, mais encore faut-il que le paquet entrant provenant du serveur auquel il répond ait été accepté. Ce qui implique que le module susnommé soit chargé (à moins d’accepter n’importe quelle connexion entrante depuis le port source 20), et dans ce cas il est plus simple d’accepter les paquets dans l’état ESTABLISHED ou RELATED en sortie plutôt car cela fonctionne en mode passif et actif.

Ouah, fallait le savoir !

Merci beaucoup en tout cas, ça fonctionne nickel :slightly_smiling: