Magazine Internet

Autoriser le FTP avec un firewall PF

Publié le 10 septembre 2008 par Nicolargo

Si comme moi, vous utilisé la couche PF (sous OS BSD) pour protéger votre réseau des attaques extérieures, la problématique de la compatibilité du protocole FTP avec la translation d’adresse NAT devrait se poser à vous.

Nous allons donc dans ce billet voir comment configurer votre Firewall PF comme un proxy FTP efficace.

Un peu de théorie…

Si vous avez déjà eu à coder des règles de Firewall pour le protocole FTP (actif ou passif), vous savez que cela nécessite l’ouverture d’un grand nombre de ports TCP. L’idée développé dans ce billet est de passer par un mandataire (un proxy hébérgé sur votre Firewall écoutant sur le port TCP 8021) qui va effectuer les requêtes FTP à la place de votre client.

FTP proxy - Nicolargo.png

Installation de ftp-proxy

ftp-proxy est un daemon fourni en standard avec les OS BSD. Pour le lancer au démarrage du Firewall, il faut ajouter les lignes suivantes à votre fichier /etc/rc.conf:

# FTP Proxy

ftpproxy_enable=”YES”

ftpproxy_flags=”-a @IP-PUBLIQUE

ou vous allez remplacer @IP-PUBLIQUE par l’adresse IP publique de votre Firewall. Il est possible de changer le port d’écoute par défaut de ftp-proxy en utilisant l’option -.

Pour lancer le daemon:

/etc/rc.d/ftp-proxy start

Configuration de PF pour utiliser ftp-proxy

La première chose est de configurer les règles de NAT et de PAT en utililisant les ancres pré-définies pour ftp-proxy. Pour cela, il faut ajouter les deux lignes suivantes dans la section NAT de votre fichier /etc/pf.conf.

nat-anchor “ftp-proxy/*”

rdr-anchor “ftp-proxy/*”

Nous allons ensuite forcer les paquets TCP de vos clients (venant de votre LAN) ayant comme port de destination 21 à être re-routé vers le daemon ftp-proxy qui écoute sur le port 8021.

rdr pass proto tcp from any to any port 21 -> 127.0.0.1 port 8021

Ensuite, on autorise dans la section règles de votre fichier /etc/pf.conf, les flux FTP partant de votre Firewall.

anchor “ftp-proxy/*”

pass out proto tcp from self to any port 21

Conclusion

Voici donc un moyen simple et efficace de gérer vos connections FTP sortantes. ftp-proxy peut également être utilisé pour gérer les accès entrants vers un serveur FTP hébergé sur votre réseau local. J’y reviendrai certainement dans un prochain billet.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Nicolargo 417 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazine