Gestion du FTP avec NetFilter

Il est sûrement arrivé à plus d’un de vouloir laisser passer un flux FTP sur leur pare-feu NetFilter : Quoi de plus normal ?

Survient alors le fameux épisode du module ip_conntrack_ftp, voir en prime ip_nat_ftp dans le cas d’une translation d’adresse. On se renseigne sur la différence entre active mode et passive mode côté FTP, on rajoute quelques lignes dans NetFilter, puis on finit par tester le tout : ça ne fonctionne pas … Ou tout du moins qu’en partie.

On épluche les logs et on se rend finalement compte que l’authentification s’est correctement effectuée, mais que cela bloque dès lors qu’une commande est envoyée : Mais pourquoi donc ? Vient alors la découverte du module ip_conntrack_ftp, la solution à tous nos soucis. Un suivi de connexion effectué par iptables rien que pour le FTP : n’est ce pas merveilleux ? On s’empresse alors de charger ce fameux module :

# modprobe ip_conntrack_ftp

Puis on relance notre test afin de s’assurer que tout fonctionne.

Cependant nous aimerions bien mettre en place une petite translation de destination. Dans ce cas, nous pensons à bien charger le module adéquat :

# modprobe ip_nat_ftp

Il nous vient soudain une idée : Pourquoi ne pas changer le port par défaut de notre serveur FTP ? 45 au lieu de 21, ça semble pas mal ça ? Sachant qu’en plus de cela nous avons un autre serveur FTP qui est à l’écoute sur le port 44.

On se rend finalement compte que cela ne fonctionne plus, de nouveau. En effet il faut indiquer à ce cher module ip_conntrack_ftp le(s) port(s) que ce dernier doit gérer. Pour ceci, l’option ports est des plus remarquable :

# modprobe ip_conntrack_ftp ports=44,45

Si le module en question était déjà chargé, il est bien sûr nécessaire de le décharger avant de le charger avec la commande précédente :

# rmmod ip_conntrack_ftp

Il peut être enfin appréciable de faire en sorte que tout cela se charge au démarrage de la machine. Sur une distribution telle que GNU/Linux Debian Etch, deux fichiers s’avèrent nécessaires :

  • Le fichier /etc/modules contenant les modules à charger, ligne par ligne, tels que ip_conntrack_ftp et ip_nat_ftp
  • Le fichier /etc/modprob.d/arch/i386 contenant des aliases et options pour les modules à charger. Dans le cas du module ip_conntrack_ftp, il s’agirait d’ajouter la ligne suivante : options ip_conntrack_ftp ports=44,45

On redémarre notre machine et voilà que tout semble fonctionner du premier coup : Que du bonheur !

Leave a Reply