Pour éviter de NATer à tort et à travers nos (chers) utilisateurs, nous avons décidé de mettre en place un proxy FTP. Nous pensions pouvoir trouver une multitude d’outils pour rendre ce service. Hé bien non, il n’y en a que deux :
- frox qui n’est pas tout jeune (2004) et qui semble causer des soucis avec les kernel 2.6 en mode transparent.
- ftp-proxy qui est un peu plus récent (2005) et qui lui ne semble pas avoir de problèmes connus.
Notre choix s’est porté sur ftp-proxy. Ce produit fait partie de la proxy-suite développée par SuSE (mais elle avale pas). L’installation sur une Debian Lenny est d’une simplicité biblique.
Tout d’abord, installons le package :
apt-get install ftp-proxy
Ensuite, il faut autoriser le démarrage du service en mode daemon dans /etc/default/ftp-proxy :
RUN_DAEMON=yes
Enfin, il faut modifier le fichier /etc/proxy-suite/ftp-proxy.conf. J’ai mis l’intégralité de mon fichier purgé des commentaires :
[-Global-] AllowMagicUser yes AllowTransProxy no DestinationAddress localhost DestinationTransferMode client Group nogroup LogDestination /var/log/ftp-proxy/ftp-proxy.log LogLevel INF Port 2121 User nobody
Une petite explication des paramètres. AllowMagicUser permet de “mettre de la magie” dans le nom de l’utilisateur. En gros ça permet d’interpréter une chaine type utilisateur@serveur:port ce qui est assez courant pour les clients FTP en ligne de commande. AllowTransProxy permet d’autoriser ou non le proxy transparent. J’ai choisi de le désactiver. DestinationAddress est utile quand on veut utiliser ftp-proxy en reverse devant un de nos serveurs FTP (pour interdire des commande ou bloquer du trafic non FTP). Dans ce cas on doit aussi activer le mode transparent. DestinationTransferMode permet de forcer le mode de fonctionnement en actif ou en passif. Ici je laisse le choix au client. Group et User fixent l’identité sous laquelle le service s’exécute. LogDestination et LogLevel l’emplacement et le niveau de détails des événements remontés. Enfin Port donne le port utilisé par ftp-proxy. Il n’y a plus qu’a le lancer :
/etc/init.d/ftp-proxy start
Et voila !